all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Rewrite of vc-user-login-name
@ 2006-01-22 16:19 Andre Spiegel
  2006-01-22 22:22 ` Michael Albinus
  2006-01-24 16:47 ` Richard M. Stallman
  0 siblings, 2 replies; 5+ messages in thread
From: Andre Spiegel @ 2006-01-22 16:19 UTC (permalink / raw)


Here's a patch that closes a long standing issue, removing the need for
Tramp to advise vc-user-login-name.  I'm not quite sure how to install
it, though: should I just remove the advice in tramp-vc.el?  Is that
guaranteed not to break anything if people simply update from CVS?
(Since the argument list changed, the tramp advice no longer works with
this patch.)

Apart from that, if anybody sees any issues with the new code, feel free
to suggest improvements.  If I don't hear anything, I'll install it and
simply remove the Tramp advice tomorrow.  (I have already installed a
related patch that makes `vc-user-login-name UID' unnecessary, hence the
change in the argument list.)

--- vc-hooks.el	20 Aug 2005 09:13:19 +0200	1.176
+++ vc-hooks.el	22 Jan 2006 13:51:14 +0100	
@@ -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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-01-27 19:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-22 16:19 Rewrite of vc-user-login-name Andre Spiegel
2006-01-22 22:22 ` Michael Albinus
2006-01-24 16:47 ` Richard M. Stallman
2006-01-25 18:42   ` Andre Spiegel
2006-01-27 19:52     ` Michael Albinus

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.