Function: tramp-read-id-output
tramp-read-id-output is a byte-compiled function defined in
tramp.el.gz.
Signature
(tramp-read-id-output VEC)
Documentation
Read in connection buffer the output of the id command.
Set connection properties "{uid,gid.groups}-{integer,string}".
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-read-id-output (vec)
"Read in connection buffer the output of the `id' command.
Set connection properties \"{uid,gid.groups}-{integer,string}\"."
(with-current-buffer (tramp-get-connection-buffer vec)
(let (uid-integer uid-string
gid-integer gid-string
groups-integer groups-string)
(goto-char (point-min))
;; Read uid.
(when (re-search-forward
(rx "uid=" (group (+ digit)) "(" (group (+ (any "_-" alnum))) ")")
nil 'noerror)
(setq uid-integer (string-to-number (match-string 1))
uid-string (match-string 2)))
;; Read gid.
(when (re-search-forward
(rx "gid=" (group (+ digit)) "(" (group (+ (any "_-" alnum))) ")")
nil 'noerror)
(setq gid-integer (string-to-number (match-string 1))
gid-string (match-string 2)))
;; Read groups.
(when (re-search-forward (rx "groups=") nil 'noerror)
(while (looking-at
(rx (group (+ digit)) "(" (group (+ (any "_-" alnum))) ")"))
(setq groups-integer (cons (string-to-number (match-string 1))
groups-integer)
groups-string (cons (match-string 2) groups-string))
(goto-char (match-end 0))
(skip-chars-forward ",")))
;; Set connection properties.
(tramp-set-connection-property vec "uid-integer" uid-integer)
(tramp-set-connection-property vec "uid-string" uid-string)
(tramp-set-connection-property vec "gid-integer" gid-integer)
(tramp-set-connection-property vec "gid-string" gid-string)
(tramp-set-connection-property
vec "groups-integer" (nreverse groups-integer))
(tramp-set-connection-property
vec "groups-string" (nreverse groups-string)))))