Function: eshell/umask
eshell/umask is a byte-compiled function defined in em-basic.el.gz.
Signature
(eshell/umask &rest ARGS)
Documentation
Shell-like implementation of umask.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-basic.el.gz
(defun eshell/umask (&rest args)
"Shell-like implementation of `umask'."
(eshell-eval-using-options
"umask" args
'((?S "symbolic" nil symbolic-p "display umask symbolically")
(?h "help" nil nil "display this usage message")
:usage "[-S] [mode]")
(if (or (not args) symbolic-p)
(let ((modstr
(concat "000"
(format "%o"
(logand (lognot (default-file-modes))
511)))))
(setq modstr (substring modstr (- (length modstr) 3)))
(when symbolic-p
(let ((mode (default-file-modes)))
(setq modstr
(format
"u=%s,g=%s,o=%s"
(concat (and (= (logand mode 64) 64) "r")
(and (= (logand mode 128) 128) "w")
(and (= (logand mode 256) 256) "x"))
(concat (and (= (logand mode 8) 8) "r")
(and (= (logand mode 16) 16) "w")
(and (= (logand mode 32) 32) "x"))
(concat (and (= (logand mode 1) 1) "r")
(and (= (logand mode 2) 2) "w")
(and (= (logand mode 4) 4) "x"))))))
(eshell-printn modstr))
(setcar args (eshell-convert (car args)))
(if (numberp (car args))
(set-default-file-modes
(- 511 (car (read-from-string
(concat "?\\" (number-to-string (car args)))))))
(error "Setting umask symbolically is not yet implemented"))
(eshell-print
"Warning: umask changed for all new files created by Emacs.\n"))
nil))