mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Fix file-readable-p and file-executable-p in some Tramp backends
* lisp/net/tramp-archive.el (tramp-archive-handle-file-readable-p): Use tramp-gvfs. * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-executable-p): Check that FILENAME exists. (tramp-gvfs-handle-file-readable-p): Check that FILENAME exists. Use heuristic in case it cannot be determined correctly.
This commit is contained in:
parent
0b8117ed1a
commit
a20845c160
2 changed files with 17 additions and 5 deletions
|
|
@ -584,9 +584,7 @@ offered."
|
|||
|
||||
(defun tramp-archive-handle-file-readable-p (filename)
|
||||
"Like `file-readable-p' for file archives."
|
||||
(with-parsed-tramp-file-name
|
||||
(tramp-archive-gvfs-file-name filename) nil
|
||||
(tramp-check-cached-permissions v ?r)))
|
||||
(file-readable-p (tramp-archive-gvfs-file-name filename)))
|
||||
|
||||
(defun tramp-archive-handle-file-system-info (filename)
|
||||
"Like `file-system-info' for file archives."
|
||||
|
|
|
|||
|
|
@ -1136,7 +1136,8 @@ If FILE-SYSTEM is non-nil, return file system attributes."
|
|||
"Like `file-executable-p' for Tramp files."
|
||||
(with-parsed-tramp-file-name filename nil
|
||||
(with-tramp-file-property v localname "file-executable-p"
|
||||
(tramp-check-cached-permissions v ?x))))
|
||||
(and (file-exists-p filename)
|
||||
(tramp-check-cached-permissions v ?x)))))
|
||||
|
||||
(defun tramp-gvfs-handle-file-name-all-completions (filename directory)
|
||||
"Like `file-name-all-completions' for Tramp files."
|
||||
|
|
@ -1258,7 +1259,20 @@ file-notify events."
|
|||
"Like `file-readable-p' for Tramp files."
|
||||
(with-parsed-tramp-file-name filename nil
|
||||
(with-tramp-file-property v localname "file-readable-p"
|
||||
(tramp-check-cached-permissions v ?r))))
|
||||
(and (file-exists-p filename)
|
||||
(or (tramp-check-cached-permissions v ?r)
|
||||
;; If the user is different from what we guess to be
|
||||
;; the user, we don't know. Let's check, whether
|
||||
;; access is restricted explicitly.
|
||||
(and (/= (tramp-gvfs-get-remote-uid v 'integer)
|
||||
(tramp-compat-file-attribute-user-id
|
||||
(file-attributes filename 'integer)))
|
||||
(not
|
||||
(string-equal
|
||||
"FALSE"
|
||||
(cdr (assoc
|
||||
"access::can-read"
|
||||
(tramp-gvfs-get-file-attributes filename)))))))))))
|
||||
|
||||
(defun tramp-gvfs-handle-file-system-info (filename)
|
||||
"Like `file-system-info' for Tramp files."
|
||||
|
|
|
|||
Loading…
Reference in a new issue