# HG changeset patch # User Andr Spiegel # Date 1138215266 0 # Node ID 4e64c3323161d9259c5c001e210a2284b0385d24 # Parent 39ecc8604aa14ce27d24a0d080ad9df675a450f9 (vc-user-login-name): Rewritten to handle access via Tramp. diff -r 39ecc8604aa1 -r 4e64c3323161 lisp/vc-hooks.el --- a/lisp/vc-hooks.el Wed Jan 25 07:44:43 2006 +0000 +++ b/lisp/vc-hooks.el Wed Jan 25 18:54:26 2006 +0000 @@ -410,14 +410,22 @@ (vc-file-setprop file 'vc-checkout-model (vc-call checkout-model file))))) -(defun vc-user-login-name (&optional uid) - "Return the name under which the user is logged in, as a string. -\(With optional argument UID, return the name of that user.) -This function does the same as function `user-login-name', but unlike -that, it never returns nil. If a UID cannot be resolved, that -UID is returned as a string." - (or (user-login-name uid) - (number-to-string (or uid (user-uid))))) +(defun vc-user-login-name (file) + "Return the name under which the user accesses the given FILE." + (or (and (eq (string-match tramp-file-name-regexp file) 0) + ;; tramp case: execute "whoami" via tramp + (let ((default-directory (file-name-directory file))) + (with-temp-buffer + (if (not (zerop (process-file "whoami" nil t))) + ;; fall through if "whoami" didn't work + nil + ;; remove trailing newline + (delete-region (1- (point-max)) (point-max)) + (buffer-string))))) + ;; normal case + (user-login-name) + ;; if user-login-name is nil, return the UID as a string + (number-to-string (user-uid)))) (defun vc-state (file) "Return the version control state of FILE.