summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2021-12-21 15:15:16 +0100
committerMichael Albinus <michael.albinus@gmx.de>2021-12-21 15:15:16 +0100
commit73e862237d1db167d4f5712f95f68b8b17816ea9 (patch)
tree29a51155a64d6514951707ed3dd0e216201cc491
parent264589cdf762d015c8ecd102afb7eb61dc0ad65b (diff)
downloademacs-73e862237d1db167d4f5712f95f68b8b17816ea9.tar.gz
Add `permission-denied' error to Tramp
* lisp/net/tramp-compat.el (tramp-permission-denied): New defconst. (tramp-compat-permission-denied): New defsubst. * lisp/net/tramp.el (tramp-handle-access-file): * lisp/net/tramp-archive.el (tramp-archive-handle-copy-file): Use it.
-rw-r--r--lisp/net/tramp-archive.el5
-rw-r--r--lisp/net/tramp-compat.el11
-rw-r--r--lisp/net/tramp.el4
3 files changed, 15 insertions, 5 deletions
diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el
index b44a4e86aad..bba94f2743c 100644
--- a/lisp/net/tramp-archive.el
+++ b/lisp/net/tramp-archive.el
@@ -575,9 +575,8 @@ offered."
preserve-uid-gid preserve-extended-attributes)
"Like `copy-file' for file archives."
(when (tramp-archive-file-name-p newname)
- (tramp-error
- (tramp-archive-dissect-file-name newname) 'file-error
- "Permission denied: %s" newname))
+ (tramp-compat-permission-denied
+ (tramp-archive-dissect-file-name newname) newname))
(copy-file
(tramp-archive-gvfs-file-name filename) newname ok-if-already-exists
keep-date preserve-uid-gid preserve-extended-attributes))
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 627ff1edaec..1936d2af1a6 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -272,6 +272,17 @@ CONDITION can also be a list of error conditions."
(car components))
(cdr components)))))))
+;; `permission-denied' is introduced in Emacs 29.1.
+(defconst tramp-permission-denied
+ (if (get 'permission-denied 'error-conditions) 'permission-denied 'file-error)
+ "The error symbol for the `permission-denied' error.")
+
+(defsubst tramp-compat-permission-denied (vec file)
+ "Emit the `permission-denied' error."
+ (if (get 'permission-denied 'error-conditions)
+ (tramp-error vec tramp-permission-denied file)
+ (tramp-error vec tramp-permission-denied "Permission denied: %s" file)))
+
(dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
(put (intern elt) 'tramp-suppress-trace t))
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 940e25e04f9..7dc3dd79ba1 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -3363,8 +3363,8 @@ User is always nil."
(if (file-directory-p filename)
#'file-accessible-directory-p #'file-readable-p)
filename)
- (tramp-error
- v 'file-error (format "%s: Permission denied, %s" string filename)))
+ (tramp-compat-permission-denied
+ v (format "%s: Permission denied, %s" string filename)))
(tramp-error
v 'file-missing
(format "%s: No such file or directory, %s" string filename)))))