Subject: 26.0.50; archive-int-to-mode check S_ISUID, S_ISGID bits in reverse order

From: Tino Calancha <[email-masked]>
Date: Tue, 15 Aug 2017 11:31:25 +0900

Tags: patch

emacs -Q -l arc-mode

(archive-int-to-mode 2048)
=> "------S---" ; It should be: "---S------"
(archive-int-to-mode 1024)
=> "---S------" ; It should be: "------S---"

--8<-----------------------------cut here---------------start------------->8---
commit 03b830d7ad819118c8b9d4e30cf6da638a579c88
Author: Tino Calancha <[email-masked]>
Date:   Tue Aug 15 11:15:10 2017 +0900

    archive-int-to-mode: Fix order of testing S_ISUID, S_ISGID bits
    
    * lisp/arc-mode.el (archive-int-to-mode):
    Swap order of 2048 with 1024 tests (Bug#28092).
    * test/lisp/arc-mode-tests.el (arc-mode-test-archive-int-to-mode):
    Update test.

diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index bd7548b704..938c143b8e 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -559,13 +559,13 @@ archive-int-to-mode
     (if (zerop (logand   256 mode)) ?- ?r)
     (if (zerop (logand   128 mode)) ?- ?w)
     (if (zerop (logand    64 mode))
-	(if (zerop (logand  1024 mode)) ?- ?S)
-      (if (zerop (logand  1024 mode)) ?x ?s))
+	(if (zerop (logand  2048 mode)) ?- ?S)
+      (if (zerop (logand  2048 mode)) ?x ?s))
     (if (zerop (logand    32 mode)) ?- ?r)
     (if (zerop (logand    16 mode)) ?- ?w)
     (if (zerop (logand     8 mode))
-	(if (zerop (logand  2048 mode)) ?- ?S)
-      (if (zerop (logand  2048 mode)) ?x ?s))
+	(if (zerop (logand  1024 mode)) ?- ?S)
+      (if (zerop (logand  1024 mode)) ?x ?s))
     (if (zerop (logand     4 mode)) ?- ?r)
     (if (zerop (logand     2 mode)) ?- ?w)
     (if (zerop (logand     1 mode)) ?- ?x)))
diff --git a/test/lisp/arc-mode-tests.el b/test/lisp/arc-mode-tests.el
index 04047bab62..c2501e921a 100644
--- a/test/lisp/arc-mode-tests.el
+++ b/test/lisp/arc-mode-tests.el
@@ -27,7 +27,7 @@
                      (cons 420 "-rw-r--r--")
                      (cons 292 "-r--r--r--")
                      (cons 512 "----------")
-                     (cons 1024 "---S------"))))
+                     (cons 1024 "------S---"))))
     (dolist (x alist)
       (should (equal (cdr x) (archive-int-to-mode (car x)))))))
 
--8<-----------------------------cut here---------------end--------------->8---
In GNU Emacs 26.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2017-08-15
Repository revision: e88bbd22c5ffb1d6008c0c7e18a36043b0f397dd