diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2021-09-21 20:26:59 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2021-09-21 20:26:59 +0200 |
commit | 2e5752cf981bd9672630db2d66a032c6607fe1a7 (patch) | |
tree | 67be07b0531db1b236a8470cde340e2cb00d49e8 /lisp/net | |
parent | b2bb717d4b539b80841096609321d0c0b43576d0 (diff) | |
download | emacs-2e5752cf981bd9672630db2d66a032c6607fe1a7.tar.gz emacs-2e5752cf981bd9672630db2d66a032c6607fe1a7.tar.bz2 emacs-2e5752cf981bd9672630db2d66a032c6607fe1a7.zip |
Fix tramp-compat-temporary-file-directory implementation
* lisp/net/tramp-archive.el
(tramp-archive-handle-temporary-file-directory):
Use `tramp-compat-temporary-file-directory-function'.
* lisp/net/tramp-compat.el (tramp-compat-temporary-file-directory):
Make it a defconst.
* lisp/net/tramp.el (tramp-get-debug-buffer, tramp-get-debug-file-name)
(tramp-debug-message, tramp-file-name-handler, tramp-parse-file)
(tramp-parse-shostkeys-sknownhosts)
(tramp-handle-expand-file-name, tramp-handle-make-process)
(tramp-local-host-p, tramp-call-process)
(tramp-call-process-region, tramp-process-lines)
(tramp-read-passwd):
* lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection):
* lisp/net/tramp-compat.el (tramp-compat-make-temp-name)
(tramp-compat-make-temp-file);
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-for-operation)
(tramp-crypt-maybe-open-connection, tramp-crypt-send-command)
(tramp-crypt-do-encrypt-or-decrypt-file-name):
* lisp/net/tramp-fuse.el (tramp-fuse-mount-point, tramp-fuse-mounted-p)
(tramp-fuse-unmount):
* lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band)
(tramp-sh-handle-expand-file-name)
(tramp-sh-handle-file-local-copy, )
(tramp-sh-handle-write-region, tramp-maybe-open-connection):
* lisp/net/tramp-smb.el (tramp-smb-maybe-open-connection): Use it.
Diffstat (limited to 'lisp/net')
-rw-r--r-- | lisp/net/tramp-adb.el | 2 | ||||
-rw-r--r-- | lisp/net/tramp-archive.el | 2 | ||||
-rw-r--r-- | lisp/net/tramp-compat.el | 15 | ||||
-rw-r--r-- | lisp/net/tramp-crypt.el | 8 | ||||
-rw-r--r-- | lisp/net/tramp-fuse.el | 6 | ||||
-rw-r--r-- | lisp/net/tramp-sh.el | 13 | ||||
-rw-r--r-- | lisp/net/tramp-smb.el | 4 | ||||
-rw-r--r-- | lisp/net/tramp.el | 27 |
8 files changed, 38 insertions, 39 deletions
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 46064a85745..d68d4c7b760 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -1273,7 +1273,7 @@ connection if a previous connection has died for some reason." (list "-s" device "shell") (list "shell"))) (p (let ((default-directory - (tramp-compat-temporary-file-directory))) + tramp-compat-temporary-file-directory)) (apply #'start-process (tramp-get-connection-name vec) buf tramp-adb-program args))) (prompt (md5 (concat (prin1-to-string process-environment) diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index 5e2e1f06023..b28235924de 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el @@ -658,7 +658,7 @@ offered." ;; mounted directory, it is returned as it. Not what we want. (with-parsed-tramp-archive-file-name default-directory nil (let ((default-directory (file-name-directory archive))) - (tramp-compat-temporary-file-directory)))) + (tramp-compat-temporary-file-directory-function)))) (defun tramp-archive-handle-not-implemented (operation &rest args) "Generic handler for operations not implemented for file archives." diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index e6f1d9df70f..213ab5857c5 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -63,25 +63,24 @@ `(when (functionp ,function) (with-no-warnings (funcall ,function ,@arguments)))) -(defsubst tramp-compat-temporary-file-directory () - "Return name of directory for temporary files. -It is the default value of `temporary-file-directory'." - ;; We must return a local directory. If it is remote, we could run - ;; into an infloop. - (eval (car (get 'temporary-file-directory 'standard-value)) t)) +;; We must use a local directory. If it is remote, we could run into +;; an infloop. +(defconst tramp-compat-temporary-file-directory + (eval (car (get 'temporary-file-directory 'standard-value)) t) + "The default value of `temporary-file-directory'.") (defsubst tramp-compat-make-temp-name () "Generate a local temporary file name (compat function)." (make-temp-name (expand-file-name - tramp-temp-name-prefix (tramp-compat-temporary-file-directory)))) + tramp-temp-name-prefix tramp-compat-temporary-file-directory))) (defsubst tramp-compat-make-temp-file (f &optional dir-flag) "Create a local temporary file (compat function). Add the extension of F, if existing." (make-temp-file (expand-file-name - tramp-temp-name-prefix (tramp-compat-temporary-file-directory)) + tramp-temp-name-prefix tramp-compat-temporary-file-directory) dir-flag (file-name-extension f t))) ;; `temporary-file-directory' as function is introduced with Emacs 26.1. diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el index 5f86767ef94..5def3a4137c 100644 --- a/lisp/net/tramp-crypt.el +++ b/lisp/net/tramp-crypt.el @@ -247,7 +247,7 @@ Operations not mentioned here will be handled by the default Emacs primitives.") (unless (tramp-crypt-file-name-p tfnfo) (setq tfnfo (apply #'tramp-file-name-for-operation operation - (cons (tramp-compat-temporary-file-directory) (cdr args))))) + (cons tramp-compat-temporary-file-directory (cdr args))))) tfnfo)) (defun tramp-crypt-run-real-handler (operation args) @@ -329,7 +329,7 @@ connection if a previous connection has died for some reason." (copy-file remote-config local-config 'ok 'keep) ;; Create local encfs6 config file otherwise. - (let* ((default-directory (tramp-compat-temporary-file-directory)) + (let* ((default-directory tramp-compat-temporary-file-directory) (tmpdir1 (file-name-as-directory (tramp-compat-make-temp-file " .crypt" 'dir-flag))) (tmpdir2 (file-name-as-directory @@ -383,7 +383,7 @@ ARGS are the arguments. It returns t if ran successful, and nil otherwise." (with-temp-buffer (let* (;; Don't check for a proper method. (non-essential t) - (default-directory (tramp-compat-temporary-file-directory)) + (default-directory tramp-compat-temporary-file-directory) ;; We cannot add it to `process-environment', because ;; `tramp-call-process-region' doesn't use it. (encfs-config @@ -427,7 +427,7 @@ Otherwise, return NAME." crypt-vec localname (concat (symbol-name op) "-file-name") (unless (tramp-crypt-send-command crypt-vec (if (eq op 'encrypt) "encode" "decode") - (tramp-compat-temporary-file-directory) localname) + tramp-compat-temporary-file-directory localname) (tramp-error crypt-vec 'file-error "%s of file name %s failed." (if (eq op 'encrypt) "Encoding" "Decoding") name)) diff --git a/lisp/net/tramp-fuse.el b/lisp/net/tramp-fuse.el index 93b184a36c2..8c5afa7cf93 100644 --- a/lisp/net/tramp-fuse.el +++ b/lisp/net/tramp-fuse.el @@ -154,7 +154,7 @@ (when (tramp-file-name-user vec) (concat (tramp-file-name-user-domain vec) "@")) (tramp-file-name-host-port vec)) - (tramp-compat-temporary-file-directory)))) + tramp-compat-temporary-file-directory))) (defun tramp-fuse-mounted-p (vec) "Check, whether fuse volume determined by VEC is mounted." @@ -163,7 +163,7 @@ ;; to cache a nil result. (or (tramp-get-connection-property (tramp-get-connection-process vec) "mounted" nil) - (let* ((default-directory (tramp-compat-temporary-file-directory)) + (let* ((default-directory tramp-compat-temporary-file-directory) (command (format "mount -t fuse.%s" (tramp-file-name-method vec))) (mount (shell-command-to-string command))) (tramp-message vec 6 "%s\n%s" command mount) @@ -177,7 +177,7 @@ (defun tramp-fuse-unmount (vec) "Unmount fuse volume determined by VEC." - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (command (format "fusermount3 -u %s" (tramp-fuse-mount-point vec)))) (tramp-message vec 6 "%s\n%s" command (shell-command-to-string command)) (tramp-flush-connection-property diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index fbb122e7210..18599f7c39c 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2391,7 +2391,7 @@ The method used must be an out-of-band method." ;; can be handled. We don't set a timeout, because ;; the copying of large files can last longer than 60 ;; secs. - p (let ((default-directory (tramp-compat-temporary-file-directory))) + p (let ((default-directory tramp-compat-temporary-file-directory)) (apply #'start-process (tramp-get-connection-name v) @@ -2740,7 +2740,7 @@ the result will be a local, non-Tramp, file name." ;; `expand-file-name' (this does "/./" and "/../"). ;; `default-directory' is bound, because on Windows there ;; would be problems with UNC shares or Cygwin mounts. - (let ((default-directory (tramp-compat-temporary-file-directory))) + (let ((default-directory tramp-compat-temporary-file-directory)) (tramp-make-tramp-file-name v (tramp-drop-volume-letter (tramp-run-real-handler @@ -3221,7 +3221,7 @@ implementation will be used." (let (file-name-handler-alist (coding-system-for-write 'binary) (default-directory - (tramp-compat-temporary-file-directory))) + tramp-compat-temporary-file-directory)) (with-temp-file tmpfile (set-buffer-multibyte nil) (insert-buffer-substring (tramp-get-buffer v)) @@ -3314,8 +3314,7 @@ implementation will be used." ;; we use it always because this makes the logic ;; simpler. We must also set `temporary-file-directory', ;; because it could point to a remote directory. - (temporary-file-directory - (tramp-compat-temporary-file-directory)) + (temporary-file-directory tramp-compat-temporary-file-directory) (tmpfile (or tramp-temp-buffer-file-name (tramp-compat-make-temp-file filename)))) @@ -3408,7 +3407,7 @@ implementation will be used." ;; question is a tmp file anyway. (let ((coding-system-for-read 'binary) (default-directory - (tramp-compat-temporary-file-directory))) + tramp-compat-temporary-file-directory)) (insert-file-contents-literally tmpfile) (funcall loc-enc (point-min) (point-max))) @@ -4919,7 +4918,7 @@ connection if a previous connection has died for some reason." ;; This must be done in order to avoid our file ;; name handler. (p (let ((default-directory - (tramp-compat-temporary-file-directory))) + tramp-compat-temporary-file-directory)) (apply #'start-process (tramp-get-connection-name vec) diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 5c2d7d008a8..87f3665d915 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -1962,7 +1962,7 @@ If ARGUMENT is non-nil, use it as argument for ;; Otherwise, we must delete the connection cache, because ;; capabilities might have changed. (unless (or argument (processp p)) - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (command (concat tramp-smb-program " -V"))) (unless tramp-smb-version @@ -2049,7 +2049,7 @@ If ARGUMENT is non-nil, use it as argument for (let* ((coding-system-for-read nil) (process-connection-type tramp-process-connection-type) (p (let ((default-directory - (tramp-compat-temporary-file-directory)) + tramp-compat-temporary-file-directory) (process-environment (cons (concat "TERM=" tramp-terminal-type) process-environment))) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 8c9200093d3..22ddfdb8e8f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1899,7 +1899,7 @@ The outline level is equal to the verbosity of the Tramp message." ;; `(custom-declare-variable outline-minor-mode-prefix ...)' ;; raises on error in `(outline-mode)', we don't want to see it ;; in the traces. - (let ((default-directory (tramp-compat-temporary-file-directory))) + (let ((default-directory tramp-compat-temporary-file-directory)) (outline-mode)) (setq-local outline-level 'tramp-debug-outline-level) (setq-local font-lock-keywords @@ -1918,7 +1918,7 @@ The outline level is equal to the verbosity of the Tramp message." "Get the debug file name for VEC." (expand-file-name (tramp-compat-string-replace "/" " " (tramp-debug-buffer-name vec)) - (tramp-compat-temporary-file-directory))) + tramp-compat-temporary-file-directory)) (put #'tramp-get-debug-file-name 'tramp-suppress-trace t) @@ -1960,7 +1960,8 @@ ARGUMENTS to actually emit the message (if applicable)." (dolist (elt (append - (mapcar #'intern (all-completions "tramp-" obarray 'functionp)) + (mapcar + #'intern (all-completions "tramp-" obarray #'functionp)) tramp-trace-functions)) (unless (get elt 'tramp-suppress-trace) (trace-function-background elt)))) @@ -2586,7 +2587,7 @@ Fall back to normal file name handler if no Tramp file name handler exists." ;; the bug#9114 for which it was added doesn't ;; clarify the core of the problem. (let ((default-directory - (tramp-compat-temporary-file-directory)) + tramp-compat-temporary-file-directory) file-name-handler-alist) (autoload-do-load sf foreign))) ;; (tramp-message @@ -3090,7 +3091,7 @@ User is always nil." User is always nil." ;; On Windows, there are problems in completion when ;; `default-directory' is remote. - (let ((default-directory (tramp-compat-temporary-file-directory))) + (let ((default-directory tramp-compat-temporary-file-directory)) (when (file-readable-p filename) (with-temp-buffer (insert-file-contents-literally filename) @@ -3144,7 +3145,7 @@ User is always nil." User is always nil." ;; On Windows, there are problems in completion when ;; `default-directory' is remote. - (let* ((default-directory (tramp-compat-temporary-file-directory)) + (let* ((default-directory tramp-compat-temporary-file-directory) (files (and (file-directory-p dirname) (directory-files dirname)))) (cl-loop for f in files @@ -3378,7 +3379,7 @@ User is always nil." ;; Do normal `expand-file-name' (this does "/./" and "/../"). ;; `default-directory' is bound, because on Windows there would ;; be problems with UNC shares or Cygwin mounts. - (let ((default-directory (tramp-compat-temporary-file-directory))) + (let ((default-directory tramp-compat-temporary-file-directory)) (tramp-make-tramp-file-name v (tramp-drop-volume-letter (tramp-run-real-handler #'expand-file-name (list localname)))))))) @@ -4103,7 +4104,7 @@ substitution. SPEC-LIST is a list of char/value pairs used for "An alternative `make-process' implementation for Tramp files." (when args (with-parsed-tramp-file-name (expand-file-name default-directory) nil - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (name (plist-get args :name)) (buffer (plist-get args :buffer)) (command (plist-get args :command)) @@ -5366,7 +5367,7 @@ This handles also chrooted environments, which are not regarded as local." ;; The local temp directory must be writable for the other user. (file-writable-p (tramp-make-tramp-file-name - vec (tramp-compat-temporary-file-directory) 'nohop)) + vec tramp-compat-temporary-file-directory 'nohop)) ;; On some systems, chown runs only for root. (or (zerop (user-uid)) (zerop (tramp-get-remote-uid vec 'integer)))))) @@ -5508,7 +5509,7 @@ ALIST is of the form ((FROM . TO) ...)." It always returns a return code. The Lisp error raised when PROGRAM is nil is trapped also, returning 1. Furthermore, traces are written with verbosity of 6." - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (process-environment (default-toplevel-value 'process-environment)) (destination (if (eq destination t) (current-buffer) destination)) (vec (or vec (car tramp-current-connection))) @@ -5542,7 +5543,7 @@ are written with verbosity of 6." It always returns a return code. The Lisp error raised when PROGRAM is nil is trapped also, returning 1. Furthermore, traces are written with verbosity of 6." - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (process-environment (default-toplevel-value 'process-environment)) (buffer (if (eq buffer t) (current-buffer) buffer)) result) @@ -5572,7 +5573,7 @@ are written with verbosity of 6." "Call `process-lines' on the local host. If an error occurs, it returns nil. Traces are written with verbosity of 6." - (let ((default-directory (tramp-compat-temporary-file-directory)) + (let ((default-directory tramp-compat-temporary-file-directory) (process-environment (default-toplevel-value 'process-environment)) (vec (or vec (car tramp-current-connection))) result) @@ -5611,7 +5612,7 @@ Invokes `password-read' if available, `read-passwd' else." ;; `exec-path' contains a relative file name like ".", it ;; could happen that the "gpg" command is not found. So we ;; adapt `default-directory'. (Bug#39389, Bug#39489) - (default-directory (tramp-compat-temporary-file-directory)) + (default-directory tramp-compat-temporary-file-directory) (case-fold-search t) (key (tramp-make-tramp-file-name ;; In tramp-sh.el, we must use "password-vector" due to |