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")
     :preserve-args
     :usage "[-S] [mode]")
   (cond
    (args
     (let* ((mask (car args))
            (modes
             (if (stringp mask)
                 (if (string-match (rx bos (+ (any "0-7")) eos) mask)
                     (- #o777 (string-to-number mask 8))
                   (file-modes-symbolic-to-number
                    mask (default-file-modes)))
               (- #o777 mask))))
       (set-default-file-modes modes)
       (eshell-print
        "Warning: umask changed for all new files created by Emacs.\n")))
    (symbolic-p
     (let ((mode (default-file-modes)))
       (eshell-printn
        (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"))))))
    (t
     (eshell-printn (format "%03o" (logand (lognot (default-file-modes))
                                           #o777)))))
   nil))