From: Andreas Schwab <schwab@linux-m68k.org>
Date: Sun, 6 Mar 2016 23:20:40 +0000 (+0100)
Subject: Fix symbolic mode string conversion for s and t
X-Git-Tag: emacs-25.0.93~123
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6f7a57c;p=emacs.git

Fix symbolic mode string conversion for s and t

* lisp/files.el (file-modes-char-to-right): Fix values for ?s and
?t.
(file-modes-symbolic-to-number): Default to a for ts permissions.
---

diff --git a/lisp/files.el b/lisp/files.el
index 1c4dd25dbfd..5cdd3849f19 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -6795,8 +6795,8 @@ If CHAR is in [Xugo], the value is taken from FROM (or 0 if omitted)."
   (cond ((= char ?r) #o0444)
 	((= char ?w) #o0222)
 	((= char ?x) #o0111)
-	((= char ?s) #o1000)
-	((= char ?t) #o6000)
+	((= char ?s) #o6000)
+	((= char ?t) #o1000)
 	;; Rights relative to the previous file modes.
 	((= char ?X) (if (= (logand from #o111) 0) 0 #o0111))
 	((= char ?u) (let ((uright (logand #o4700 from)))
@@ -6852,7 +6852,7 @@ as in \"og+rX-w\"."
 				  (mapcar 'file-modes-char-to-who
 					  (match-string 1 modes)))))
 	      (when (= num-who 0)
-		(setq num-who (default-file-modes)))
+		(setq num-who (logior #o7000 (default-file-modes))))
 	      (setq num-modes
 		    (file-modes-rights-to-number (substring modes (match-end 1))
 						 num-who num-modes)