From a4cc44cf0efd240bdcd2ac9013ea0f20067ccd94 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 7 Feb 2010 01:23:10 -0500 Subject: [PATCH] Fix to uid/gid format in eshell's ls (Bug#5528). * eshell/esh-util.el (eshell-file-attributes): New optional arg ID-FORMAT. Pass it to `file-attributes'. * eshell/em-ls.el (eshell-do-ls): Use it (Bug#5528). --- lisp/ChangeLog | 7 +++++++ lisp/eshell/em-ls.el | 16 ++++++++-------- lisp/eshell/esh-util.el | 9 ++++++--- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f754ca0b44d..d81e73f34bd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2010-02-07 Chong Yidong + + * eshell/esh-util.el (eshell-file-attributes): New optional arg + ID-FORMAT. Pass it to `file-attributes'. + + * eshell/em-ls.el (eshell-do-ls): Use it (Bug#5528). + 2010-02-07 sj (tiny change) * faces.el (set-face-attribute): Allow calling diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el index 094f3ad9bb3..9b008cebf1a 100644 --- a/lisp/eshell/em-ls.el +++ b/lisp/eshell/em-ls.el @@ -393,13 +393,13 @@ Sort entries alphabetically across.") (eshell-glob-regexp ignore-pattern)))) ;; list the files! (eshell-ls-entries - (mapcar (function - (lambda (arg) - (cons (if (and (eshell-under-windows-p) - (file-name-absolute-p arg)) - (expand-file-name arg) - arg) - (eshell-file-attributes arg)))) + (mapcar (lambda (arg) + (cons (if (and (eshell-under-windows-p) + (file-name-absolute-p arg)) + (expand-file-name arg) + arg) + (eshell-file-attributes + arg (if numeric-uid-gid 'integer 'string)))) args) t (expand-file-name default-directory))) (funcall flush-func))) @@ -710,7 +710,7 @@ Each member of FILES is either a string or a cons cell of the form (funcall insert-func need-return "\n")))))) (defun eshell-ls-entries (entries &optional separate root-dir) - "Output PATH's directory ENTRIES, formatted according to OPTIONS. + "Output PATH's directory ENTRIES. Each member of ENTRIES may either be a string or a cons cell, the car of which is the file name, and the cdr of which is the list of attributes. diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 7c21e2e3302..1a4c5e1021b 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -701,8 +701,11 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable. (forward-line))) entry)) -(defun eshell-file-attributes (file) - "Return the attributes of FILE, playing tricks if it's over ange-ftp." +(defun eshell-file-attributes (file &optional id-format) + "Return the attributes of FILE, playing tricks if it's over ange-ftp. +The optional argument ID-FORMAT specifies the preferred uid and +gid format. Valid values are 'string and 'integer, defaulting to +'integer. See `file-attributes'." (let* ((file (expand-file-name file)) entry) (if (string-equal (file-remote-p file 'method) "ftp") @@ -723,7 +726,7 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable. (setq entry (cdr fentry)) (setq entry nil))))) entry) - (file-attributes file)))) + (file-attributes file id-format)))) (defalias 'eshell-copy-tree 'copy-tree) -- 2.39.2