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)))))