diff options
| author | Michael Albinus | 2019-08-05 13:09:26 +0200 |
|---|---|---|
| committer | Michael Albinus | 2019-08-05 13:09:26 +0200 |
| commit | 6c1d0d53b34d9350d55ebbd83ea56aa751a55f1b (patch) | |
| tree | cd7a17c72e10ef68d048d17088662cb579644aba | |
| parent | 1abf76877847226daa5ab7e07000ac1d4aba3478 (diff) | |
| download | emacs-6c1d0d53b34d9350d55ebbd83ea56aa751a55f1b.tar.gz emacs-6c1d0d53b34d9350d55ebbd83ea56aa751a55f1b.zip | |
Improve Tramp's caching
* lisp/net/tramp.el (tramp-handle-add-name-to-file)
(tramp-handle-write-region):
* lisp/net/tramp-adb.el (tramp-adb-handle-make-directory)
(tramp-adb-handle-delete-directory)
(tramp-adb-handle-delete-file, tramp-adb-handle-write-region)
(tramp-adb-handle-set-file-modes)
(tramp-adb-handle-set-file-times, tramp-adb-handle-copy-file)
(tramp-adb-handle-rename-file):
* lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file)
(tramp-gvfs-handle-delete-directory)
(tramp-gvfs-handle-delete-file)
(tramp-gvfs-handle-make-directory)
(tramp-gvfs-handle-set-file-modes)
(tramp-gvfs-handle-set-file-times, tramp-gvfs-set-file-uid-gid):
* lisp/net/tramp-rclone.el (tramp-rclone-do-copy-or-rename-file)
(tramp-rclone-handle-delete-directory)
(tramp-rclone-handle-delete-file):
* lisp/net/tramp-sh.el (tramp-sh-handle-make-symbolic-link)
(tramp-sh-handle-set-file-modes, tramp-sh-handle-set-file-times)
(tramp-sh-handle-add-name-to-file)
(tramp-sh-handle-copy-directory, tramp-do-copy-or-rename-file)
(tramp-sh-handle-delete-directory, tramp-sh-handle-delete-file)
(tramp-sh-handle-write-region):
* lisp/net/tramp-smb.el (tramp-smb-handle-add-name-to-file)
(tramp-smb-handle-copy-directory, tramp-smb-handle-copy-file)
(tramp-smb-handle-delete-directory)
(tramp-smb-handle-delete-file)
(tramp-smb-handle-make-directory-internal)
(tramp-smb-handle-make-symbolic-link)
(tramp-smb-handle-rename-file, tramp-smb-handle-write-region):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-add-name-to-file)
(tramp-sudoedit-do-copy-or-rename-file)
(tramp-sudoedit-handle-delete-directory)
(tramp-sudoedit-handle-delete-file)
(tramp-sudoedit-handle-set-file-modes)
(tramp-sudoedit-handle-set-file-times)
(tramp-sudoedit-handle-make-symbolic-link): Do not flush all file
properties of upper directory.
* lisp/net/tramp-cache.el (tramp-flush-file-upper-properties):
New defun.
(tramp-flush-file-properties, tramp-flush-directory-properties):
Use it.
* test/lisp/net/tramp-tests.el (tramp-time-diff): Declare.
(tramp--test-file-attributes-equal-p): Handle also modification
and status change time.
| -rw-r--r-- | lisp/net/tramp-adb.el | 12 | ||||
| -rw-r--r-- | lisp/net/tramp-cache.el | 24 | ||||
| -rw-r--r-- | lisp/net/tramp-gvfs.el | 8 | ||||
| -rw-r--r-- | lisp/net/tramp-rclone.el | 10 | ||||
| -rw-r--r-- | lisp/net/tramp-sh.el | 12 | ||||
| -rw-r--r-- | lisp/net/tramp-smb.el | 12 | ||||
| -rw-r--r-- | lisp/net/tramp-sudoedit.el | 10 | ||||
| -rw-r--r-- | lisp/net/tramp.el | 2 | ||||
| -rw-r--r-- | test/lisp/net/tramp-tests.el | 12 |
9 files changed, 33 insertions, 69 deletions
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index fb84aa11085..475f9a2e2b3 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el | |||
| @@ -510,7 +510,6 @@ Emacs dired can't find files." | |||
| 510 | (let ((par (expand-file-name ".." dir))) | 510 | (let ((par (expand-file-name ".." dir))) |
| 511 | (unless (file-directory-p par) | 511 | (unless (file-directory-p par) |
| 512 | (make-directory par parents)))) | 512 | (make-directory par parents)))) |
| 513 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 514 | (tramp-flush-directory-properties v localname) | 513 | (tramp-flush-directory-properties v localname) |
| 515 | (unless (or (tramp-adb-send-command-and-check | 514 | (unless (or (tramp-adb-send-command-and-check |
| 516 | v (format "mkdir %s" (tramp-shell-quote-argument localname))) | 515 | v (format "mkdir %s" (tramp-shell-quote-argument localname))) |
| @@ -521,10 +520,8 @@ Emacs dired can't find files." | |||
| 521 | "Like `delete-directory' for Tramp files." | 520 | "Like `delete-directory' for Tramp files." |
| 522 | (setq directory (expand-file-name directory)) | 521 | (setq directory (expand-file-name directory)) |
| 523 | (with-parsed-tramp-file-name (file-truename directory) nil | 522 | (with-parsed-tramp-file-name (file-truename directory) nil |
| 524 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 525 | (tramp-flush-directory-properties v localname)) | 523 | (tramp-flush-directory-properties v localname)) |
| 526 | (with-parsed-tramp-file-name directory nil | 524 | (with-parsed-tramp-file-name directory nil |
| 527 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 528 | (tramp-flush-directory-properties v localname) | 525 | (tramp-flush-directory-properties v localname) |
| 529 | (tramp-adb-barf-unless-okay | 526 | (tramp-adb-barf-unless-okay |
| 530 | v (format "%s %s" | 527 | v (format "%s %s" |
| @@ -536,7 +533,6 @@ Emacs dired can't find files." | |||
| 536 | "Like `delete-file' for Tramp files." | 533 | "Like `delete-file' for Tramp files." |
| 537 | (setq filename (expand-file-name filename)) | 534 | (setq filename (expand-file-name filename)) |
| 538 | (with-parsed-tramp-file-name filename nil | 535 | (with-parsed-tramp-file-name filename nil |
| 539 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 540 | (tramp-flush-file-properties v localname) | 536 | (tramp-flush-file-properties v localname) |
| 541 | (tramp-adb-barf-unless-okay | 537 | (tramp-adb-barf-unless-okay |
| 542 | v (format "rm %s" (tramp-shell-quote-argument localname)) | 538 | v (format "rm %s" (tramp-shell-quote-argument localname)) |
| @@ -627,7 +623,6 @@ But handle the case, if the \"test\" command is not available." | |||
| 627 | 623 | ||
| 628 | ;; We must also flush the cache of the directory, because | 624 | ;; We must also flush the cache of the directory, because |
| 629 | ;; `file-attributes' reads the values from there. | 625 | ;; `file-attributes' reads the values from there. |
| 630 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 631 | (tramp-flush-file-properties v localname) | 626 | (tramp-flush-file-properties v localname) |
| 632 | (let* ((curbuf (current-buffer)) | 627 | (let* ((curbuf (current-buffer)) |
| 633 | (tmpfile (tramp-compat-make-temp-file filename))) | 628 | (tmpfile (tramp-compat-make-temp-file filename))) |
| @@ -665,14 +660,12 @@ But handle the case, if the \"test\" command is not available." | |||
| 665 | (defun tramp-adb-handle-set-file-modes (filename mode) | 660 | (defun tramp-adb-handle-set-file-modes (filename mode) |
| 666 | "Like `set-file-modes' for Tramp files." | 661 | "Like `set-file-modes' for Tramp files." |
| 667 | (with-parsed-tramp-file-name filename nil | 662 | (with-parsed-tramp-file-name filename nil |
| 668 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 669 | (tramp-flush-file-properties v localname) | 663 | (tramp-flush-file-properties v localname) |
| 670 | (tramp-adb-send-command-and-check v (format "chmod %o %s" mode localname)))) | 664 | (tramp-adb-send-command-and-check v (format "chmod %o %s" mode localname)))) |
| 671 | 665 | ||
| 672 | (defun tramp-adb-handle-set-file-times (filename &optional time) | 666 | (defun tramp-adb-handle-set-file-times (filename &optional time) |
| 673 | "Like `set-file-times' for Tramp files." | 667 | "Like `set-file-times' for Tramp files." |
| 674 | (with-parsed-tramp-file-name filename nil | 668 | (with-parsed-tramp-file-name filename nil |
| 675 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 676 | (tramp-flush-file-properties v localname) | 669 | (tramp-flush-file-properties v localname) |
| 677 | (let ((time (if (or (null time) | 670 | (let ((time (if (or (null time) |
| 678 | (tramp-compat-time-equal-p time tramp-time-doesnt-exist) | 671 | (tramp-compat-time-equal-p time tramp-time-doesnt-exist) |
| @@ -722,7 +715,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 722 | ;; We must also flush the cache of the directory, | 715 | ;; We must also flush the cache of the directory, |
| 723 | ;; because `file-attributes' reads the values from | 716 | ;; because `file-attributes' reads the values from |
| 724 | ;; there. | 717 | ;; there. |
| 725 | (tramp-flush-file-properties v (file-name-directory l2)) | ||
| 726 | (tramp-flush-file-properties v l2) | 718 | (tramp-flush-file-properties v l2) |
| 727 | ;; Short track. | 719 | ;; Short track. |
| 728 | (tramp-adb-barf-unless-okay | 720 | (tramp-adb-barf-unless-okay |
| @@ -757,8 +749,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 757 | ;; We must also flush the cache of the directory, | 749 | ;; We must also flush the cache of the directory, |
| 758 | ;; because `file-attributes' reads the values from | 750 | ;; because `file-attributes' reads the values from |
| 759 | ;; there. | 751 | ;; there. |
| 760 | (tramp-flush-file-properties | ||
| 761 | v (file-name-directory localname)) | ||
| 762 | (tramp-flush-file-properties v localname) | 752 | (tramp-flush-file-properties v localname) |
| 763 | (when (tramp-adb-execute-adb-command | 753 | (when (tramp-adb-execute-adb-command |
| 764 | v "push" | 754 | v "push" |
| @@ -803,9 +793,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 803 | (l2 (tramp-compat-file-local-name newname))) | 793 | (l2 (tramp-compat-file-local-name newname))) |
| 804 | ;; We must also flush the cache of the directory, because | 794 | ;; We must also flush the cache of the directory, because |
| 805 | ;; `file-attributes' reads the values from there. | 795 | ;; `file-attributes' reads the values from there. |
| 806 | (tramp-flush-file-properties v (file-name-directory l1)) | ||
| 807 | (tramp-flush-file-properties v l1) | 796 | (tramp-flush-file-properties v l1) |
| 808 | (tramp-flush-file-properties v (file-name-directory l2)) | ||
| 809 | (tramp-flush-file-properties v l2) | 797 | (tramp-flush-file-properties v l2) |
| 810 | ;; Short track. | 798 | ;; Short track. |
| 811 | (tramp-adb-barf-unless-okay | 799 | (tramp-adb-barf-unless-okay |
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index 40f74957f50..b52203c79cf 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el | |||
| @@ -193,6 +193,22 @@ Returns VALUE." | |||
| 193 | (let ((var (intern (concat "tramp-cache-set-count-" property)))) | 193 | (let ((var (intern (concat "tramp-cache-set-count-" property)))) |
| 194 | (makunbound var)))) | 194 | (makunbound var)))) |
| 195 | 195 | ||
| 196 | (defun tramp-flush-file-upper-properties (key file) | ||
| 197 | "Remove some properties of FILE's upper directory." | ||
| 198 | (when (file-name-absolute-p file) | ||
| 199 | (let ((file (directory-file-name (file-name-directory file)))) | ||
| 200 | ;; Unify localname. Remove hop from `tramp-file-name' structure. | ||
| 201 | (setq file (tramp-compat-file-name-unquote file) | ||
| 202 | key (copy-tramp-file-name key)) | ||
| 203 | (setf (tramp-file-name-localname key) file | ||
| 204 | (tramp-file-name-hop key) nil) | ||
| 205 | (maphash | ||
| 206 | (lambda (property _value) | ||
| 207 | (when (string-match-p | ||
| 208 | "^\\(directory-\\|file-name-all-completions\\)" property) | ||
| 209 | (tramp-flush-file-property key file property))) | ||
| 210 | (tramp-get-hash-table key))))) | ||
| 211 | |||
| 196 | ;;;###tramp-autoload | 212 | ;;;###tramp-autoload |
| 197 | (defun tramp-flush-file-properties (key file) | 213 | (defun tramp-flush-file-properties (key file) |
| 198 | "Remove all properties of FILE in the cache context of KEY." | 214 | "Remove all properties of FILE in the cache context of KEY." |
| @@ -209,7 +225,9 @@ Returns VALUE." | |||
| 209 | ;; Remove file properties of symlinks. | 225 | ;; Remove file properties of symlinks. |
| 210 | (when (and (stringp truename) | 226 | (when (and (stringp truename) |
| 211 | (not (string-equal file (directory-file-name truename)))) | 227 | (not (string-equal file (directory-file-name truename)))) |
| 212 | (tramp-flush-file-properties key truename)))) | 228 | (tramp-flush-file-properties key truename)) |
| 229 | ;; Remove selected properties of upper directory. | ||
| 230 | (tramp-flush-file-upper-properties key file))) | ||
| 213 | 231 | ||
| 214 | ;;;###tramp-autoload | 232 | ;;;###tramp-autoload |
| 215 | (defun tramp-flush-directory-properties (key directory) | 233 | (defun tramp-flush-directory-properties (key directory) |
| @@ -231,7 +249,9 @@ Remove also properties of all files in subdirectories." | |||
| 231 | ;; Remove file properties of symlinks. | 249 | ;; Remove file properties of symlinks. |
| 232 | (when (and (stringp truename) | 250 | (when (and (stringp truename) |
| 233 | (not (string-equal directory (directory-file-name truename)))) | 251 | (not (string-equal directory (directory-file-name truename)))) |
| 234 | (tramp-flush-directory-properties key truename)))) | 252 | (tramp-flush-directory-properties key truename)) |
| 253 | ;; Remove selected properties of upper directory. | ||
| 254 | (tramp-flush-file-upper-properties key directory))) | ||
| 235 | 255 | ||
| 236 | ;; Reverting or killing a buffer should also flush file properties. | 256 | ;; Reverting or killing a buffer should also flush file properties. |
| 237 | ;; They could have been changed outside Tramp. In eshell, "ls" would | 257 | ;; They could have been changed outside Tramp. In eshell, "ls" would |
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index a606ba67177..8cec5871cfc 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el | |||
| @@ -817,12 +817,10 @@ file names." | |||
| 817 | 817 | ||
| 818 | (when (and t1 (eq op 'rename)) | 818 | (when (and t1 (eq op 'rename)) |
| 819 | (with-parsed-tramp-file-name filename nil | 819 | (with-parsed-tramp-file-name filename nil |
| 820 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 821 | (tramp-flush-file-properties v localname))) | 820 | (tramp-flush-file-properties v localname))) |
| 822 | 821 | ||
| 823 | (when t2 | 822 | (when t2 |
| 824 | (with-parsed-tramp-file-name newname nil | 823 | (with-parsed-tramp-file-name newname nil |
| 825 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 826 | (tramp-flush-file-properties v localname)))))))) | 824 | (tramp-flush-file-properties v localname)))))))) |
| 827 | 825 | ||
| 828 | (defun tramp-gvfs-handle-copy-file | 826 | (defun tramp-gvfs-handle-copy-file |
| @@ -857,7 +855,6 @@ file names." | |||
| 857 | (tramp-error | 855 | (tramp-error |
| 858 | v 'file-error "Couldn't delete non-empty %s" directory))) | 856 | v 'file-error "Couldn't delete non-empty %s" directory))) |
| 859 | 857 | ||
| 860 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 861 | (tramp-flush-directory-properties v localname) | 858 | (tramp-flush-directory-properties v localname) |
| 862 | (unless | 859 | (unless |
| 863 | (tramp-gvfs-send-command | 860 | (tramp-gvfs-send-command |
| @@ -872,7 +869,6 @@ file names." | |||
| 872 | (defun tramp-gvfs-handle-delete-file (filename &optional trash) | 869 | (defun tramp-gvfs-handle-delete-file (filename &optional trash) |
| 873 | "Like `delete-file' for Tramp files." | 870 | "Like `delete-file' for Tramp files." |
| 874 | (with-parsed-tramp-file-name filename nil | 871 | (with-parsed-tramp-file-name filename nil |
| 875 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 876 | (tramp-flush-file-properties v localname) | 872 | (tramp-flush-file-properties v localname) |
| 877 | (unless | 873 | (unless |
| 878 | (tramp-gvfs-send-command | 874 | (tramp-gvfs-send-command |
| @@ -1296,7 +1292,6 @@ file-notify events." | |||
| 1296 | "Like `make-directory' for Tramp files." | 1292 | "Like `make-directory' for Tramp files." |
| 1297 | (setq dir (directory-file-name (expand-file-name dir))) | 1293 | (setq dir (directory-file-name (expand-file-name dir))) |
| 1298 | (with-parsed-tramp-file-name dir nil | 1294 | (with-parsed-tramp-file-name dir nil |
| 1299 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1300 | (tramp-flush-directory-properties v localname) | 1295 | (tramp-flush-directory-properties v localname) |
| 1301 | (save-match-data | 1296 | (save-match-data |
| 1302 | (let ((ldir (file-name-directory dir))) | 1297 | (let ((ldir (file-name-directory dir))) |
| @@ -1329,7 +1324,6 @@ file-notify events." | |||
| 1329 | (defun tramp-gvfs-handle-set-file-modes (filename mode) | 1324 | (defun tramp-gvfs-handle-set-file-modes (filename mode) |
| 1330 | "Like `set-file-modes' for Tramp files." | 1325 | "Like `set-file-modes' for Tramp files." |
| 1331 | (with-parsed-tramp-file-name filename nil | 1326 | (with-parsed-tramp-file-name filename nil |
| 1332 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1333 | (tramp-flush-file-properties v localname) | 1327 | (tramp-flush-file-properties v localname) |
| 1334 | (tramp-gvfs-send-command | 1328 | (tramp-gvfs-send-command |
| 1335 | v "gvfs-set-attribute" "-t" "uint32" | 1329 | v "gvfs-set-attribute" "-t" "uint32" |
| @@ -1339,7 +1333,6 @@ file-notify events." | |||
| 1339 | (defun tramp-gvfs-handle-set-file-times (filename &optional time) | 1333 | (defun tramp-gvfs-handle-set-file-times (filename &optional time) |
| 1340 | "Like `set-file-times' for Tramp files." | 1334 | "Like `set-file-times' for Tramp files." |
| 1341 | (with-parsed-tramp-file-name filename nil | 1335 | (with-parsed-tramp-file-name filename nil |
| 1342 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1343 | (tramp-flush-file-properties v localname) | 1336 | (tramp-flush-file-properties v localname) |
| 1344 | (let ((time | 1337 | (let ((time |
| 1345 | (if (or (null time) | 1338 | (if (or (null time) |
| @@ -1355,7 +1348,6 @@ file-notify events." | |||
| 1355 | (defun tramp-gvfs-set-file-uid-gid (filename &optional uid gid) | 1348 | (defun tramp-gvfs-set-file-uid-gid (filename &optional uid gid) |
| 1356 | "Like `tramp-set-file-uid-gid' for Tramp files." | 1349 | "Like `tramp-set-file-uid-gid' for Tramp files." |
| 1357 | (with-parsed-tramp-file-name filename nil | 1350 | (with-parsed-tramp-file-name filename nil |
| 1358 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1359 | (tramp-flush-file-properties v localname) | 1351 | (tramp-flush-file-properties v localname) |
| 1360 | (when (natnump uid) | 1352 | (when (natnump uid) |
| 1361 | (tramp-gvfs-send-command | 1353 | (tramp-gvfs-send-command |
diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el index 9b3eab34771..e0fd8e34415 100644 --- a/lisp/net/tramp-rclone.el +++ b/lisp/net/tramp-rclone.el | |||
| @@ -244,30 +244,22 @@ file names." | |||
| 244 | 244 | ||
| 245 | (when (and t1 (eq op 'rename)) | 245 | (when (and t1 (eq op 'rename)) |
| 246 | (with-parsed-tramp-file-name filename v1 | 246 | (with-parsed-tramp-file-name filename v1 |
| 247 | (tramp-flush-file-properties | ||
| 248 | v1 (file-name-directory v1-localname)) | ||
| 249 | (tramp-flush-file-properties v1 v1-localname) | 247 | (tramp-flush-file-properties v1 v1-localname) |
| 250 | (when (tramp-rclone-file-name-p filename) | 248 | (when (tramp-rclone-file-name-p filename) |
| 251 | (tramp-rclone-flush-directory-cache v1) | 249 | (tramp-rclone-flush-directory-cache v1) |
| 252 | ;; The mount point's directory cache might need time | 250 | ;; The mount point's directory cache might need time |
| 253 | ;; to flush. | 251 | ;; to flush. |
| 254 | (while (file-exists-p filename) | 252 | (while (file-exists-p filename) |
| 255 | (tramp-flush-file-properties | ||
| 256 | v1 (file-name-directory v1-localname)) | ||
| 257 | (tramp-flush-file-properties v1 v1-localname))))) | 253 | (tramp-flush-file-properties v1 v1-localname))))) |
| 258 | 254 | ||
| 259 | (when t2 | 255 | (when t2 |
| 260 | (with-parsed-tramp-file-name newname v2 | 256 | (with-parsed-tramp-file-name newname v2 |
| 261 | (tramp-flush-file-properties | ||
| 262 | v2 (file-name-directory v2-localname)) | ||
| 263 | (tramp-flush-file-properties v2 v2-localname) | 257 | (tramp-flush-file-properties v2 v2-localname) |
| 264 | (when (tramp-rclone-file-name-p newname) | 258 | (when (tramp-rclone-file-name-p newname) |
| 265 | (tramp-rclone-flush-directory-cache v2) | 259 | (tramp-rclone-flush-directory-cache v2) |
| 266 | ;; The mount point's directory cache might need time | 260 | ;; The mount point's directory cache might need time |
| 267 | ;; to flush. | 261 | ;; to flush. |
| 268 | (while (not (file-exists-p newname)) | 262 | (while (not (file-exists-p newname)) |
| 269 | (tramp-flush-file-properties | ||
| 270 | v2 (file-name-directory v2-localname)) | ||
| 271 | (tramp-flush-file-properties v2 v2-localname)))))))))) | 263 | (tramp-flush-file-properties v2 v2-localname)))))))))) |
| 272 | 264 | ||
| 273 | (defun tramp-rclone-handle-copy-file | 265 | (defun tramp-rclone-handle-copy-file |
| @@ -292,7 +284,6 @@ file names." | |||
| 292 | "Like `delete-directory' for Tramp files." | 284 | "Like `delete-directory' for Tramp files." |
| 293 | (with-parsed-tramp-file-name (expand-file-name directory) nil | 285 | (with-parsed-tramp-file-name (expand-file-name directory) nil |
| 294 | (delete-directory (tramp-rclone-local-file-name directory) recursive trash) | 286 | (delete-directory (tramp-rclone-local-file-name directory) recursive trash) |
| 295 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 296 | (tramp-flush-directory-properties v localname) | 287 | (tramp-flush-directory-properties v localname) |
| 297 | (tramp-rclone-flush-directory-cache v))) | 288 | (tramp-rclone-flush-directory-cache v))) |
| 298 | 289 | ||
| @@ -300,7 +291,6 @@ file names." | |||
| 300 | "Like `delete-file' for Tramp files." | 291 | "Like `delete-file' for Tramp files." |
| 301 | (with-parsed-tramp-file-name (expand-file-name filename) nil | 292 | (with-parsed-tramp-file-name (expand-file-name filename) nil |
| 302 | (delete-file (tramp-rclone-local-file-name filename) trash) | 293 | (delete-file (tramp-rclone-local-file-name filename) trash) |
| 303 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 304 | (tramp-flush-file-properties v localname) | 294 | (tramp-flush-file-properties v localname) |
| 305 | (tramp-rclone-flush-directory-cache v))) | 295 | (tramp-rclone-flush-directory-cache v))) |
| 306 | 296 | ||
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 3399b961b2a..54bf2ba773e 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -1069,7 +1069,6 @@ component is used as the target of the symlink." | |||
| 1069 | (tramp-error v 'file-already-exists localname) | 1069 | (tramp-error v 'file-already-exists localname) |
| 1070 | (delete-file linkname))) | 1070 | (delete-file linkname))) |
| 1071 | 1071 | ||
| 1072 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1073 | (tramp-flush-file-properties v localname) | 1072 | (tramp-flush-file-properties v localname) |
| 1074 | 1073 | ||
| 1075 | ;; Right, they are on the same host, regardless of user, | 1074 | ;; Right, they are on the same host, regardless of user, |
| @@ -1450,7 +1449,6 @@ of." | |||
| 1450 | (defun tramp-sh-handle-set-file-modes (filename mode) | 1449 | (defun tramp-sh-handle-set-file-modes (filename mode) |
| 1451 | "Like `set-file-modes' for Tramp files." | 1450 | "Like `set-file-modes' for Tramp files." |
| 1452 | (with-parsed-tramp-file-name filename nil | 1451 | (with-parsed-tramp-file-name filename nil |
| 1453 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1454 | (tramp-flush-file-properties v localname) | 1452 | (tramp-flush-file-properties v localname) |
| 1455 | ;; FIXME: extract the proper text from chmod's stderr. | 1453 | ;; FIXME: extract the proper text from chmod's stderr. |
| 1456 | (tramp-barf-unless-okay | 1454 | (tramp-barf-unless-okay |
| @@ -1462,7 +1460,6 @@ of." | |||
| 1462 | "Like `set-file-times' for Tramp files." | 1460 | "Like `set-file-times' for Tramp files." |
| 1463 | (with-parsed-tramp-file-name filename nil | 1461 | (with-parsed-tramp-file-name filename nil |
| 1464 | (when (tramp-get-remote-touch v) | 1462 | (when (tramp-get-remote-touch v) |
| 1465 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1466 | (tramp-flush-file-properties v localname) | 1463 | (tramp-flush-file-properties v localname) |
| 1467 | (let ((time | 1464 | (let ((time |
| 1468 | (if (or (null time) | 1465 | (if (or (null time) |
| @@ -1875,7 +1872,6 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'" | |||
| 1875 | v2-localname))))) | 1872 | v2-localname))))) |
| 1876 | (tramp-error v2 'file-already-exists newname) | 1873 | (tramp-error v2 'file-already-exists newname) |
| 1877 | (delete-file newname))) | 1874 | (delete-file newname))) |
| 1878 | (tramp-flush-file-properties v2 (file-name-directory v2-localname)) | ||
| 1879 | (tramp-flush-file-properties v2 v2-localname) | 1875 | (tramp-flush-file-properties v2 v2-localname) |
| 1880 | (tramp-barf-unless-okay | 1876 | (tramp-barf-unless-okay |
| 1881 | v1 | 1877 | v1 |
| @@ -1942,7 +1938,6 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'" | |||
| 1942 | ;; When newname did exist, we have wrong cached values. | 1938 | ;; When newname did exist, we have wrong cached values. |
| 1943 | (when t2 | 1939 | (when t2 |
| 1944 | (with-parsed-tramp-file-name newname nil | 1940 | (with-parsed-tramp-file-name newname nil |
| 1945 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1946 | (tramp-flush-file-properties v localname)))))) | 1941 | (tramp-flush-file-properties v localname)))))) |
| 1947 | 1942 | ||
| 1948 | (defun tramp-sh-handle-rename-file | 1943 | (defun tramp-sh-handle-rename-file |
| @@ -2072,15 +2067,11 @@ file names." | |||
| 2072 | ;; In case of `rename', we must flush the cache of the source file. | 2067 | ;; In case of `rename', we must flush the cache of the source file. |
| 2073 | (when (and t1 (eq op 'rename)) | 2068 | (when (and t1 (eq op 'rename)) |
| 2074 | (with-parsed-tramp-file-name filename v1 | 2069 | (with-parsed-tramp-file-name filename v1 |
| 2075 | (tramp-flush-file-properties | ||
| 2076 | v1 (file-name-directory v1-localname)) | ||
| 2077 | (tramp-flush-file-properties v1 v1-localname))) | 2070 | (tramp-flush-file-properties v1 v1-localname))) |
| 2078 | 2071 | ||
| 2079 | ;; When newname did exist, we have wrong cached values. | 2072 | ;; When newname did exist, we have wrong cached values. |
| 2080 | (when t2 | 2073 | (when t2 |
| 2081 | (with-parsed-tramp-file-name newname v2 | 2074 | (with-parsed-tramp-file-name newname v2 |
| 2082 | (tramp-flush-file-properties | ||
| 2083 | v2 (file-name-directory v2-localname)) | ||
| 2084 | (tramp-flush-file-properties v2 v2-localname)))))))) | 2075 | (tramp-flush-file-properties v2 v2-localname)))))))) |
| 2085 | 2076 | ||
| 2086 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) | 2077 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) |
| @@ -2505,7 +2496,6 @@ The method used must be an out-of-band method." | |||
| 2505 | "Like `delete-directory' for Tramp files." | 2496 | "Like `delete-directory' for Tramp files." |
| 2506 | (setq directory (expand-file-name directory)) | 2497 | (setq directory (expand-file-name directory)) |
| 2507 | (with-parsed-tramp-file-name directory nil | 2498 | (with-parsed-tramp-file-name directory nil |
| 2508 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 2509 | (tramp-flush-directory-properties v localname) | 2499 | (tramp-flush-directory-properties v localname) |
| 2510 | (tramp-barf-unless-okay | 2500 | (tramp-barf-unless-okay |
| 2511 | v (format "cd / && %s %s" | 2501 | v (format "cd / && %s %s" |
| @@ -2518,7 +2508,6 @@ The method used must be an out-of-band method." | |||
| 2518 | "Like `delete-file' for Tramp files." | 2508 | "Like `delete-file' for Tramp files." |
| 2519 | (setq filename (expand-file-name filename)) | 2509 | (setq filename (expand-file-name filename)) |
| 2520 | (with-parsed-tramp-file-name filename nil | 2510 | (with-parsed-tramp-file-name filename nil |
| 2521 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 2522 | (tramp-flush-file-properties v localname) | 2511 | (tramp-flush-file-properties v localname) |
| 2523 | (tramp-barf-unless-okay | 2512 | (tramp-barf-unless-okay |
| 2524 | v (format "%s %s" | 2513 | v (format "%s %s" |
| @@ -3394,7 +3383,6 @@ the result will be a local, non-Tramp, file name." | |||
| 3394 | (when coding-system-used | 3383 | (when coding-system-used |
| 3395 | (set 'last-coding-system-used coding-system-used)))) | 3384 | (set 'last-coding-system-used coding-system-used)))) |
| 3396 | 3385 | ||
| 3397 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 3398 | (tramp-flush-file-properties v localname) | 3386 | (tramp-flush-file-properties v localname) |
| 3399 | 3387 | ||
| 3400 | ;; We must protect `last-coding-system-used', now we have set it | 3388 | ;; We must protect `last-coding-system-used', now we have set it |
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index cb8d2df0847..594463d77fd 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el | |||
| @@ -371,7 +371,6 @@ pass to the OPERATION." | |||
| 371 | (delete-file newname))) | 371 | (delete-file newname))) |
| 372 | ;; We must also flush the cache of the directory, because | 372 | ;; We must also flush the cache of the directory, because |
| 373 | ;; `file-attributes' reads the values from there. | 373 | ;; `file-attributes' reads the values from there. |
| 374 | (tramp-flush-file-properties v2 (file-name-directory v2-localname)) | ||
| 375 | (tramp-flush-file-properties v2 v2-localname) | 374 | (tramp-flush-file-properties v2 v2-localname) |
| 376 | (unless | 375 | (unless |
| 377 | (tramp-smb-send-command | 376 | (tramp-smb-send-command |
| @@ -548,7 +547,6 @@ pass to the OPERATION." | |||
| 548 | ;; When newname did exist, we have wrong cached values. | 547 | ;; When newname did exist, we have wrong cached values. |
| 549 | (when t2 | 548 | (when t2 |
| 550 | (with-parsed-tramp-file-name newname nil | 549 | (with-parsed-tramp-file-name newname nil |
| 551 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 552 | (tramp-flush-file-properties v localname)))) | 550 | (tramp-flush-file-properties v localname)))) |
| 553 | 551 | ||
| 554 | ;; We must do it file-wise. | 552 | ;; We must do it file-wise. |
| @@ -596,7 +594,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 596 | 594 | ||
| 597 | ;; We must also flush the cache of the directory, because | 595 | ;; We must also flush the cache of the directory, because |
| 598 | ;; `file-attributes' reads the values from there. | 596 | ;; `file-attributes' reads the values from there. |
| 599 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 600 | (tramp-flush-file-properties v localname) | 597 | (tramp-flush-file-properties v localname) |
| 601 | (unless (tramp-smb-get-share v) | 598 | (unless (tramp-smb-get-share v) |
| 602 | (tramp-error | 599 | (tramp-error |
| @@ -631,7 +628,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 631 | (with-parsed-tramp-file-name directory nil | 628 | (with-parsed-tramp-file-name directory nil |
| 632 | ;; We must also flush the cache of the directory, because | 629 | ;; We must also flush the cache of the directory, because |
| 633 | ;; `file-attributes' reads the values from there. | 630 | ;; `file-attributes' reads the values from there. |
| 634 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 635 | (tramp-flush-directory-properties v localname) | 631 | (tramp-flush-directory-properties v localname) |
| 636 | (unless (tramp-smb-send-command | 632 | (unless (tramp-smb-send-command |
| 637 | v (format | 633 | v (format |
| @@ -657,7 +653,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 657 | (with-parsed-tramp-file-name filename nil | 653 | (with-parsed-tramp-file-name filename nil |
| 658 | ;; We must also flush the cache of the directory, because | 654 | ;; We must also flush the cache of the directory, because |
| 659 | ;; `file-attributes' reads the values from there. | 655 | ;; `file-attributes' reads the values from there. |
| 660 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 661 | (tramp-flush-file-properties v localname) | 656 | (tramp-flush-file-properties v localname) |
| 662 | (unless (tramp-smb-send-command | 657 | (unless (tramp-smb-send-command |
| 663 | v (format | 658 | v (format |
| @@ -1154,7 +1149,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." | |||
| 1154 | (format "mkdir \"%s\"" file))) | 1149 | (format "mkdir \"%s\"" file))) |
| 1155 | ;; We must also flush the cache of the directory, because | 1150 | ;; We must also flush the cache of the directory, because |
| 1156 | ;; `file-attributes' reads the values from there. | 1151 | ;; `file-attributes' reads the values from there. |
| 1157 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1158 | (tramp-flush-file-properties v localname)) | 1152 | (tramp-flush-file-properties v localname)) |
| 1159 | (unless (file-directory-p directory) | 1153 | (unless (file-directory-p directory) |
| 1160 | (tramp-error v 'file-error "Couldn't make directory %s" directory))))) | 1154 | (tramp-error v 'file-error "Couldn't make directory %s" directory))))) |
| @@ -1202,7 +1196,6 @@ component is used as the target of the symlink." | |||
| 1202 | 1196 | ||
| 1203 | ;; We must also flush the cache of the directory, because | 1197 | ;; We must also flush the cache of the directory, because |
| 1204 | ;; `file-attributes' reads the values from there. | 1198 | ;; `file-attributes' reads the values from there. |
| 1205 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1206 | (tramp-flush-file-properties v localname) | 1199 | (tramp-flush-file-properties v localname) |
| 1207 | 1200 | ||
| 1208 | (unless | 1201 | (unless |
| @@ -1358,11 +1351,7 @@ component is used as the target of the symlink." | |||
| 1358 | 1351 | ||
| 1359 | ;; We must also flush the cache of the directory, because | 1352 | ;; We must also flush the cache of the directory, because |
| 1360 | ;; `file-attributes' reads the values from there. | 1353 | ;; `file-attributes' reads the values from there. |
| 1361 | (tramp-flush-file-properties | ||
| 1362 | v1 (file-name-directory v1-localname)) | ||
| 1363 | (tramp-flush-file-properties v1 v1-localname) | 1354 | (tramp-flush-file-properties v1 v1-localname) |
| 1364 | (tramp-flush-file-properties | ||
| 1365 | v2 (file-name-directory v2-localname)) | ||
| 1366 | (tramp-flush-file-properties v2 v2-localname) | 1355 | (tramp-flush-file-properties v2 v2-localname) |
| 1367 | (unless (tramp-smb-get-share v2) | 1356 | (unless (tramp-smb-get-share v2) |
| 1368 | (tramp-error | 1357 | (tramp-error |
| @@ -1548,7 +1537,6 @@ errors for shares like \"C$/\", which are common in Microsoft Windows." | |||
| 1548 | 1537 | ||
| 1549 | ;; We must also flush the cache of the directory, because | 1538 | ;; We must also flush the cache of the directory, because |
| 1550 | ;; `file-attributes' reads the values from there. | 1539 | ;; `file-attributes' reads the values from there. |
| 1551 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 1552 | (tramp-flush-file-properties v localname) | 1540 | (tramp-flush-file-properties v localname) |
| 1553 | (let ((curbuf (current-buffer)) | 1541 | (let ((curbuf (current-buffer)) |
| 1554 | (tmpfile (tramp-compat-make-temp-file filename))) | 1542 | (tmpfile (tramp-compat-make-temp-file filename))) |
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el index 0ded85fb554..0ec98bb0691 100644 --- a/lisp/net/tramp-sudoedit.el +++ b/lisp/net/tramp-sudoedit.el | |||
| @@ -189,7 +189,6 @@ pass to the OPERATION." | |||
| 189 | v2-localname))))) | 189 | v2-localname))))) |
| 190 | (tramp-error v2 'file-already-exists newname) | 190 | (tramp-error v2 'file-already-exists newname) |
| 191 | (delete-file newname))) | 191 | (delete-file newname))) |
| 192 | (tramp-flush-file-properties v2 (file-name-directory v2-localname)) | ||
| 193 | (tramp-flush-file-properties v2 v2-localname) | 192 | (tramp-flush-file-properties v2 v2-localname) |
| 194 | (unless | 193 | (unless |
| 195 | (tramp-sudoedit-send-command | 194 | (tramp-sudoedit-send-command |
| @@ -291,14 +290,10 @@ absolute file names." | |||
| 291 | 290 | ||
| 292 | (when (and t1 (eq op 'rename)) | 291 | (when (and t1 (eq op 'rename)) |
| 293 | (with-parsed-tramp-file-name filename v1 | 292 | (with-parsed-tramp-file-name filename v1 |
| 294 | (tramp-flush-file-properties | ||
| 295 | v1 (file-name-directory v1-localname)) | ||
| 296 | (tramp-flush-file-properties v1 v1-localname))) | 293 | (tramp-flush-file-properties v1 v1-localname))) |
| 297 | 294 | ||
| 298 | (when t2 | 295 | (when t2 |
| 299 | (with-parsed-tramp-file-name newname v2 | 296 | (with-parsed-tramp-file-name newname v2 |
| 300 | (tramp-flush-file-properties | ||
| 301 | v2 (file-name-directory v2-localname)) | ||
| 302 | (tramp-flush-file-properties v2 v2-localname))))))) | 297 | (tramp-flush-file-properties v2 v2-localname))))))) |
| 303 | 298 | ||
| 304 | (defun tramp-sudoedit-handle-copy-file | 299 | (defun tramp-sudoedit-handle-copy-file |
| @@ -323,7 +318,6 @@ absolute file names." | |||
| 323 | "Like `delete-directory' for Tramp files." | 318 | "Like `delete-directory' for Tramp files." |
| 324 | (setq directory (expand-file-name directory)) | 319 | (setq directory (expand-file-name directory)) |
| 325 | (with-parsed-tramp-file-name directory nil | 320 | (with-parsed-tramp-file-name directory nil |
| 326 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 327 | (tramp-flush-directory-properties v localname) | 321 | (tramp-flush-directory-properties v localname) |
| 328 | (unless | 322 | (unless |
| 329 | (tramp-sudoedit-send-command | 323 | (tramp-sudoedit-send-command |
| @@ -335,7 +329,6 @@ absolute file names." | |||
| 335 | (defun tramp-sudoedit-handle-delete-file (filename &optional trash) | 329 | (defun tramp-sudoedit-handle-delete-file (filename &optional trash) |
| 336 | "Like `delete-file' for Tramp files." | 330 | "Like `delete-file' for Tramp files." |
| 337 | (with-parsed-tramp-file-name filename nil | 331 | (with-parsed-tramp-file-name filename nil |
| 338 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 339 | (tramp-flush-file-properties v localname) | 332 | (tramp-flush-file-properties v localname) |
| 340 | (unless | 333 | (unless |
| 341 | (tramp-sudoedit-send-command | 334 | (tramp-sudoedit-send-command |
| @@ -467,7 +460,6 @@ the result will be a local, non-Tramp, file name." | |||
| 467 | (defun tramp-sudoedit-handle-set-file-modes (filename mode) | 460 | (defun tramp-sudoedit-handle-set-file-modes (filename mode) |
| 468 | "Like `set-file-modes' for Tramp files." | 461 | "Like `set-file-modes' for Tramp files." |
| 469 | (with-parsed-tramp-file-name filename nil | 462 | (with-parsed-tramp-file-name filename nil |
| 470 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 471 | (tramp-flush-file-properties v localname) | 463 | (tramp-flush-file-properties v localname) |
| 472 | (unless (tramp-sudoedit-send-command | 464 | (unless (tramp-sudoedit-send-command |
| 473 | v "chmod" (format "%o" mode) | 465 | v "chmod" (format "%o" mode) |
| @@ -526,7 +518,6 @@ the result will be a local, non-Tramp, file name." | |||
| 526 | (defun tramp-sudoedit-handle-set-file-times (filename &optional time) | 518 | (defun tramp-sudoedit-handle-set-file-times (filename &optional time) |
| 527 | "Like `set-file-times' for Tramp files." | 519 | "Like `set-file-times' for Tramp files." |
| 528 | (with-parsed-tramp-file-name filename nil | 520 | (with-parsed-tramp-file-name filename nil |
| 529 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 530 | (tramp-flush-file-properties v localname) | 521 | (tramp-flush-file-properties v localname) |
| 531 | (let ((time | 522 | (let ((time |
| 532 | (if (or (null time) | 523 | (if (or (null time) |
| @@ -634,7 +625,6 @@ component is used as the target of the symlink." | |||
| 634 | (tramp-error v 'file-already-exists localname) | 625 | (tramp-error v 'file-already-exists localname) |
| 635 | (delete-file linkname))) | 626 | (delete-file linkname))) |
| 636 | 627 | ||
| 637 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 638 | (tramp-flush-file-properties v localname) | 628 | (tramp-flush-file-properties v localname) |
| 639 | (tramp-sudoedit-send-command | 629 | (tramp-sudoedit-send-command |
| 640 | v "ln" "-sf" | 630 | v "ln" "-sf" |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index c589557132a..77d727e2f2f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -3006,7 +3006,6 @@ User is always nil." | |||
| 3006 | localname))))) | 3006 | localname))))) |
| 3007 | (tramp-error v 'file-already-exists newname) | 3007 | (tramp-error v 'file-already-exists newname) |
| 3008 | (delete-file newname))) | 3008 | (delete-file newname))) |
| 3009 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 3010 | (tramp-flush-file-properties v localname) | 3009 | (tramp-flush-file-properties v localname) |
| 3011 | (copy-file | 3010 | (copy-file |
| 3012 | filename newname 'ok-if-already-exists 'keep-time | 3011 | filename newname 'ok-if-already-exists 'keep-time |
| @@ -3794,7 +3793,6 @@ of." | |||
| 3794 | (tramp-error | 3793 | (tramp-error |
| 3795 | v 'file-error "Couldn't write region to `%s'" filename)))) | 3794 | v 'file-error "Couldn't write region to `%s'" filename)))) |
| 3796 | 3795 | ||
| 3797 | (tramp-flush-file-properties v (file-name-directory localname)) | ||
| 3798 | (tramp-flush-file-properties v localname) | 3796 | (tramp-flush-file-properties v localname) |
| 3799 | 3797 | ||
| 3800 | ;; Set file modification time. | 3798 | ;; Set file modification time. |
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index f60dea36bf5..d49914797f5 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el | |||
| @@ -56,6 +56,7 @@ | |||
| 56 | (declare-function tramp-list-tramp-buffers "tramp-cmds") | 56 | (declare-function tramp-list-tramp-buffers "tramp-cmds") |
| 57 | (declare-function tramp-method-out-of-band-p "tramp-sh") | 57 | (declare-function tramp-method-out-of-band-p "tramp-sh") |
| 58 | (declare-function tramp-smb-get-localname "tramp-smb") | 58 | (declare-function tramp-smb-get-localname "tramp-smb") |
| 59 | (declare-function tramp-time-diff "tramp") | ||
| 59 | (defvar auto-save-file-name-transforms) | 60 | (defvar auto-save-file-name-transforms) |
| 60 | (defvar tramp-connection-properties) | 61 | (defvar tramp-connection-properties) |
| 61 | (defvar tramp-copy-size-limit) | 62 | (defvar tramp-copy-size-limit) |
| @@ -3084,9 +3085,18 @@ This tests also `access-file', `file-readable-p', | |||
| 3084 | 3085 | ||
| 3085 | (defsubst tramp--test-file-attributes-equal-p (attr1 attr2) | 3086 | (defsubst tramp--test-file-attributes-equal-p (attr1 attr2) |
| 3086 | "Check, whether file attributes ATTR1 and ATTR2 are equal. | 3087 | "Check, whether file attributes ATTR1 and ATTR2 are equal. |
| 3087 | They might differ only in access time." | 3088 | They might differ only in time attributes." |
| 3089 | ;; Access time. | ||
| 3088 | (setcar (nthcdr 4 attr1) tramp-time-dont-know) | 3090 | (setcar (nthcdr 4 attr1) tramp-time-dont-know) |
| 3089 | (setcar (nthcdr 4 attr2) tramp-time-dont-know) | 3091 | (setcar (nthcdr 4 attr2) tramp-time-dont-know) |
| 3092 | ;; Modification time. | ||
| 3093 | (when (< (abs (tramp-time-diff (nth 5 attr1) (nth 5 attr2))) 5) | ||
| 3094 | (setcar (nthcdr 5 attr1) tramp-time-dont-know) | ||
| 3095 | (setcar (nthcdr 5 attr2) tramp-time-dont-know)) | ||
| 3096 | ;; Status change time. | ||
| 3097 | (when (< (abs (tramp-time-diff (nth 6 attr1) (nth 6 attr2))) 5) | ||
| 3098 | (setcar (nthcdr 6 attr1) tramp-time-dont-know) | ||
| 3099 | (setcar (nthcdr 6 attr2) tramp-time-dont-know)) | ||
| 3090 | (equal attr1 attr2)) | 3100 | (equal attr1 attr2)) |
| 3091 | 3101 | ||
| 3092 | ;; This isn't 100% correct, but better than no explainer at all. | 3102 | ;; This isn't 100% correct, but better than no explainer at all. |