aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/eshell/em-basic.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/eshell/em-basic.el')
-rw-r--r--lisp/eshell/em-basic.el24
1 files changed, 14 insertions, 10 deletions
diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el
index 8f68a750bd7..6ec53ef9412 100644
--- a/lisp/eshell/em-basic.el
+++ b/lisp/eshell/em-basic.el
@@ -160,6 +160,18 @@ or `eshell-printn' for display."
160 :preserve-args 160 :preserve-args
161 :usage "[-S] [mode]") 161 :usage "[-S] [mode]")
162 (cond 162 (cond
163 (args
164 (let* ((mask (car args))
165 (modes
166 (if (stringp mask)
167 (if (string-match (rx bos (+ (any "0-7")) eos) mask)
168 (- #o777 (string-to-number mask 8))
169 (file-modes-symbolic-to-number
170 mask (default-file-modes)))
171 (- #o777 mask))))
172 (set-default-file-modes modes)
173 (eshell-print
174 "Warning: umask changed for all new files created by Emacs.\n")))
163 (symbolic-p 175 (symbolic-p
164 (let ((mode (default-file-modes))) 176 (let ((mode (default-file-modes)))
165 (eshell-printn 177 (eshell-printn
@@ -173,17 +185,9 @@ or `eshell-printn' for display."
173 (concat (and (= (logand mode 1) 1) "r") 185 (concat (and (= (logand mode 1) 1) "r")
174 (and (= (logand mode 2) 2) "w") 186 (and (= (logand mode 2) 2) "w")
175 (and (= (logand mode 4) 4) "x")))))) 187 (and (= (logand mode 4) 4) "x"))))))
176 ((not args)
177 (eshell-printn (format "%03o" (logand (lognot (default-file-modes))
178 #o777))))
179 (t 188 (t
180 (when (stringp (car args)) 189 (eshell-printn (format "%03o" (logand (lognot (default-file-modes))
181 (if (string-match "^[0-7]+$" (car args)) 190 #o777)))))
182 (setcar args (string-to-number (car args) 8))
183 (error "Setting umask symbolically is not yet implemented")))
184 (set-default-file-modes (- #o777 (car args)))
185 (eshell-print
186 "Warning: umask changed for all new files created by Emacs.\n")))
187 nil)) 191 nil))
188 192
189(put 'eshell/umask 'eshell-no-numeric-conversions t) 193(put 'eshell/umask 'eshell-no-numeric-conversions t)