mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-30 19:53:09 +00:00
Fix bug #4673 with Dired when `stat' fails for ".." or other files.
lisp/ls-lisp.el (ls-lisp-sanitize): New function. (ls-lisp-insert-directory): Use it to fix or remove any elements in file-alist with missing attributes.
This commit is contained in:
parent
98d7371e7a
commit
5e0d957fe0
@ -1,3 +1,9 @@
|
||||
2012-02-07 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* ls-lisp.el (ls-lisp-sanitize): New function.
|
||||
(ls-lisp-insert-directory): Use it to fix or remove any elements
|
||||
in file-alist with missing attributes. (Bug#4673)
|
||||
|
||||
2012-02-07 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fix spurious recognition of c-in-knr-argdecl.
|
||||
|
@ -331,6 +331,7 @@ not contain `d', so that a full listing is expected."
|
||||
;; do all bindings here for speed
|
||||
total-line files elt short file-size attr
|
||||
fuid fgid uid-len gid-len)
|
||||
(setq file-alist (ls-lisp-sanitize file-alist))
|
||||
(cond ((memq ?A switches)
|
||||
(setq file-alist
|
||||
(ls-lisp-delete-matching "^\\.\\.?$" file-alist)))
|
||||
@ -437,6 +438,22 @@ not contain `d', so that a full listing is expected."
|
||||
(message "%s: doesn't exist or is inaccessible" file)
|
||||
(ding) (sit-for 2))))) ; to show user the message!
|
||||
|
||||
(defun ls-lisp-sanitize (file-alist)
|
||||
"Sanitize the elements in FILE-ALIST.
|
||||
Fixes any elements in the alist for directory entries whose file
|
||||
attributes are nil (meaning that `file-attributes' failed for
|
||||
them). This is known to happen for some network shares, in
|
||||
particular for the \"..\" directory entry.
|
||||
|
||||
If the \"..\" directory entry has nil attributes, the attributes
|
||||
are copied from the \".\" entry, if they are non-nil. Otherwise,
|
||||
the offending element is removed from the list, as are any
|
||||
elements for other directory entries with nil attributes."
|
||||
(if (and (null (cdr (assoc ".." file-alist)))
|
||||
(cdr (assoc "." file-alist)))
|
||||
(setcdr (assoc ".." file-alist) (cdr (assoc "." file-alist))))
|
||||
(rassq-delete-all nil file-alist))
|
||||
|
||||
(defun ls-lisp-column-format (file-alist)
|
||||
"Insert the file names (only) in FILE-ALIST into the current buffer.
|
||||
Format in columns, sorted vertically, following GNU ls -C.
|
||||
|
Loading…
Reference in New Issue
Block a user