diff options
Diffstat (limited to 'lisp/eshell/em-basic.el')
| -rw-r--r-- | lisp/eshell/em-basic.el | 24 |
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) |