New user option tramp-inhibit-errors-if-setting-file-attributes-fail
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 19 Apr 2024 10:15:47 +0000 (12:15 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 19 Apr 2024 10:15:47 +0000 (12:15 +0200)
* doc/misc/tramp.texi (Frequently Asked Questions):
Explain tramp-inhibit-errors-if-setting-file-attributes-fail.

* lisp/net/tramp.el
(tramp-inhibit-errors-if-setting-file-attributes-fail): New defcustom.
(tramp-skeleton-set-file-modes-times-uid-gid): Use it.

doc/misc/tramp.texi
lisp/net/tramp.el

index 131a23b742322c8bb37292d8e70c3adb1260a80b..b503ce13373cd29bb4efd422ae244d9acb9c8b10 100644 (file)
@@ -5887,6 +5887,17 @@ as above in your @file{~/.emacs}:
 @end lisp
 
 
+@item
+How to ignore errors when changing file attributes?
+
+@vindex tramp-inhibit-errors-if-setting-file-attributes-fail
+Sometimes, for example while saving remote files, errors appear when
+changing file attributes like permissions, time stamps, or ownership.
+If these errors can be ignored, set user option
+@code{tramp-inhibit-errors-if-setting-file-attributes-fail} to a
+non-@code{nil} value.  This transforms the error into a warning.
+
+
 @item
 How to disable other packages from calling @value{tramp}?
 
index 5b101000926aae45dc0d5ccd6c0d15e9b40576a6..34a636ab97d94f80639c3277a6528edefab2e171 100644 (file)
@@ -3533,6 +3533,11 @@ on the same host.  Otherwise, TARGET is quoted."
 
        ,@body)))
 
+(defcustom tramp-inhibit-errors-if-setting-file-attributes-fail nil
+  "Whether to warn only if `tramp-*-set-file-{modes,times,uid-gid}' fails."
+  :version "30.1"
+  :type 'boolean)
+
 (defmacro tramp-skeleton-set-file-modes-times-uid-gid
     (filename &rest body)
   "Skeleton for `tramp-*-set-file-{modes,times,uid-gid}'.
@@ -3548,7 +3553,11 @@ BODY is the backend specific code."
         ;; "file-writable-p".
         '("file-directory-p" "file-exists-p" "file-symlinkp" "file-truename")
        (tramp-flush-file-properties v localname))
-     ,@body))
+     (condition-case err
+        (progn ,@body)
+       (error (if tramp-inhibit-errors-if-setting-file-attributes-fail
+                 (display-warning 'tramp (error-message-string err))
+               (signal (car err) (cdr err)))))))
 
 (defmacro tramp-skeleton-write-region
   (start end filename append visit lockname mustbenew &rest body)