diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2017-05-24 16:16:53 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2017-05-24 16:16:53 +0200 |
commit | dca22e86e02d16a31128c163925b13404f777c0f (patch) | |
tree | d92a1e74b4a78d6d66588b92df49d01ce8a3d862 /lisp/net/tramp-smb.el | |
parent | 08f00c01d6f19a3b4465cc856c6ae55a1acdc350 (diff) | |
download | emacs-dca22e86e02d16a31128c163925b13404f777c0f.tar.gz emacs-dca22e86e02d16a31128c163925b13404f777c0f.tar.bz2 emacs-dca22e86e02d16a31128c163925b13404f777c0f.zip |
Introduce a defstruct `tramp-file-name' as central data structure.
This solves also Bug#27009.
* lisp/net/tramp.el (tramp-current-domain)
(tramp-current-port): New defvars.
(tramp-file-name): New defstruct.
(tramp-file-name-user-domain, tramp-file-name-host-port)
(tramp-file-name-equal-p): New defuns.
(tramp-file-name-p, tramp-file-name-method)
(tramp-file-name-user, tramp-file-name-host)
(tramp-file-name-localname, tramp-file-name-hop)
(tramp-file-name-real-user, tramp-file-name-domain)
(tramp-file-name-real-host, tramp-file-name-port):
Remove defuns. They are provided by the defstruct, or not
needed anymore.
(tramp-dissect-file-name, tramp-buffer-name)
(tramp-make-tramp-file-name, tramp-get-buffer)
(tramp-set-connection-local-variables)
(tramp-debug-buffer-name, tramp-message)
(tramp-error-with-buffer, with-parsed-tramp-file-name)
(tramp-completion-dissect-file-name1)
(tramp-handle-file-name-as-directory)
(tramp-handle-file-name-directory)
(tramp-handle-file-remote-p, tramp-handle-file-symlink-p)
(tramp-handle-find-backup-file-name)
(tramp-handle-insert-file-contents, tramp-process-actions)
(tramp-check-cached-permissions, tramp-local-host-p)
(tramp-get-remote-tmpdir, tramp-call-process)
(tramp-call-process-region, tramp-read-passwd)
(tramp-clear-passwd):
* lisp/net/tramp-adb.el (tramp-adb-parse-device-names)
(tramp-adb-handle-expand-file-name)
(tramp-adb-handle-file-truename, tramp-adb-handle-copy-file)
(tramp-adb-handle-process-file)
(tramp-adb-maybe-open-connection):
* lisp/net/tramp-cache.el (tramp-get-hash-table)
(tramp-get-file-property, tramp-set-file-property)
(tramp-flush-file-property, tramp-flush-directory-property)
(tramp-get-connection-property)
(tramp-set-connection-property, tramp-connection-property-p)
(tramp-flush-connection-property, tramp-cache-print)
(tramp-list-connections, tramp-dump-connection-properties)
(tramp-parse-connection-properties):
* lisp/net/tramp-cmds.el (tramp-cleanup-connection):
* lisp/net/tramp-ftp.el (tramp-ftp-file-name-handler):
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name)
(tramp-gvfs-url-file-name, tramp-gvfs-handler-askpassword)
(tramp-gvfs-handler-mounted-unmounted)
(tramp-gvfs-mount-spec, tramp-gvfs-get-remote-uid)
(tramp-gvfs-get-remote-gid)
(tramp-gvfs-maybe-open-connection):
* lisp/net/tramp-sh.el (tramp-sh-handle-file-truename)
(tramp-do-copy-or-rename-file-out-of-band)
(tramp-sh-handle-expand-file-name)
(tramp-sh-handle-start-file-process)
(tramp-sh-handle-process-file, tramp-compute-multi-hops)
(tramp-maybe-open-connection)
(tramp-make-copy-program-file-name, tramp-get-remote-path)
(tramp-get-inline-coding):
* lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory)
(tramp-smb-handle-expand-file-name)
(tramp-smb-handle-file-acl, tramp-smb-handle-process-file)
(tramp-smb-handle-set-file-acl)
(tramp-smb-maybe-open-connection): Adapt according to defstruct.
Diffstat (limited to 'lisp/net/tramp-smb.el')
-rw-r--r-- | lisp/net/tramp-smb.el | 87 |
1 files changed, 34 insertions, 53 deletions
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 12eb3679513..7b2a1ba874d 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -53,12 +53,6 @@ ;; Another guess. We might implement a better check later on. (tramp-case-insensitive t)))) -;; Add a default for `tramp-default-method-alist'. Rule: If there is -;; a domain in USER, it must be the SMB method. -;;;###tramp-autoload -(add-to-list 'tramp-default-method-alist - `(nil ,tramp-prefix-domain-regexp ,tramp-smb-method)) - ;; Add a default for `tramp-default-user-alist'. Rule: For the SMB method, ;; the anonymous user is chosen. ;;;###tramp-autoload @@ -449,15 +443,11 @@ pass to the OPERATION." (if (not (file-directory-p newname)) (make-directory newname parents)) - (setq tramp-current-method (tramp-file-name-method v) - tramp-current-user (tramp-file-name-user v) - tramp-current-host (tramp-file-name-real-host v)) + (setq tramp-current-method method + tramp-current-user user + tramp-current-host host) - (let* ((real-user (tramp-file-name-real-user v)) - (real-host (tramp-file-name-real-host v)) - (domain (tramp-file-name-domain v)) - (port (tramp-file-name-port v)) - (share (tramp-smb-get-share v)) + (let* ((share (tramp-smb-get-share v)) (localname (file-name-as-directory (replace-regexp-in-string "\\\\" "/" (tramp-smb-get-localname v)))) @@ -465,10 +455,10 @@ pass to the OPERATION." (expand-file-name tramp-temp-name-prefix (tramp-compat-temporary-file-directory)))) - (args (list (concat "//" real-host "/" share) "-E"))) + (args (list (concat "//" host "/" share) "-E"))) - (if (not (zerop (length real-user))) - (setq args (append args (list "-U" real-user))) + (if (not (zerop (length user))) + (setq args (append args (list "-U" user))) (setq args (append args (list "-N")))) (when domain (setq args (append args (list "-W" domain)))) @@ -708,7 +698,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (setq localname (replace-match (if (zerop (length (match-string 1 localname))) - (tramp-file-name-real-user v) + user (match-string 1 localname)) nil nil localname))) ;; Make the file name absolute. @@ -717,7 +707,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." ;; No tilde characters in file name, do normal ;; `expand-file-name' (this does "/./" and "/../"). (tramp-make-tramp-file-name - method user host + method user domain host port (tramp-run-real-handler 'expand-file-name (list localname)))))) (defun tramp-smb-action-get-acl (proc vec) @@ -744,21 +734,17 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (with-tramp-file-property v localname "file-acl" (when (executable-find tramp-smb-acl-program) - (setq tramp-current-method (tramp-file-name-method v) - tramp-current-user (tramp-file-name-user v) - tramp-current-host (tramp-file-name-real-host v)) + (setq tramp-current-method method + tramp-current-user user + tramp-current-host host) - (let* ((real-user (tramp-file-name-real-user v)) - (real-host (tramp-file-name-real-host v)) - (domain (tramp-file-name-domain v)) - (port (tramp-file-name-port v)) - (share (tramp-smb-get-share v)) + (let* ((share (tramp-smb-get-share v)) (localname (replace-regexp-in-string "\\\\" "/" (tramp-smb-get-localname v))) - (args (list (concat "//" real-host "/" share) "-E"))) + (args (list (concat "//" host "/" share) "-E"))) - (if (not (zerop (length real-user))) - (setq args (append args (list "-U" real-user))) + (if (not (zerop (length user))) + (setq args (append args (list "-U" user))) (setq args (append args (list "-N")))) (when domain (setq args (append args (list "-W" domain)))) @@ -1179,7 +1165,8 @@ target of the symlink differ." (setq input (with-parsed-tramp-file-name infile nil localname)) ;; INFILE must be copied to remote host. (setq input (tramp-make-tramp-temp-file v) - tmpinput (tramp-make-tramp-file-name method user host input)) + tmpinput + (tramp-make-tramp-file-name method user domain host port input)) (copy-file infile tmpinput t)) ;; Transform input into a filename powershell does understand. (setq input (format "//%s%s" host input))) @@ -1337,24 +1324,20 @@ target of the symlink differ." (ignore-errors (with-parsed-tramp-file-name filename nil (when (and (stringp acl-string) (executable-find tramp-smb-acl-program)) - (setq tramp-current-method (tramp-file-name-method v) - tramp-current-user (tramp-file-name-user v) - tramp-current-host (tramp-file-name-real-host v)) + (setq tramp-current-method method + tramp-current-user user + tramp-current-host host) (tramp-set-file-property v localname "file-acl" 'undef) - (let* ((real-user (tramp-file-name-real-user v)) - (real-host (tramp-file-name-real-host v)) - (domain (tramp-file-name-domain v)) - (port (tramp-file-name-port v)) - (share (tramp-smb-get-share v)) + (let* ((share (tramp-smb-get-share v)) (localname (replace-regexp-in-string "\\\\" "/" (tramp-smb-get-localname v))) - (args (list (concat "//" real-host "/" share) "-E" "-S" + (args (list (concat "//" host "/" share) "-E" "-S" (replace-regexp-in-string "\n" "," acl-string)))) - (if (not (zerop (length real-user))) - (setq args (append args (list "-U" real-user))) + (if (not (zerop (length user))) + (setq args (append args (list "-U" user))) (setq args (append args (list "-N")))) (when domain (setq args (append args (list "-W" domain)))) @@ -1845,24 +1828,22 @@ If ARGUMENT is non-nil, use it as argument for (when buf (with-current-buffer buf (erase-buffer))) (when (and p (processp p)) (delete-process p)) - (let* ((user (tramp-file-name-user vec)) - (host (tramp-file-name-host vec)) - (real-user (tramp-file-name-real-user vec)) - (real-host (tramp-file-name-real-host vec)) - (domain (tramp-file-name-domain vec)) - (port (tramp-file-name-port vec)) + (let* ((user (tramp-file-name-user vec)) + (host (tramp-file-name-host vec)) + (domain (tramp-file-name-domain vec)) + (port (tramp-file-name-port vec)) args) (cond (argument - (setq args (list (concat "//" real-host)))) + (setq args (list (concat "//" host)))) (share - (setq args (list (concat "//" real-host "/" share)))) + (setq args (list (concat "//" host "/" share)))) (t - (setq args (list "-g" "-L" real-host )))) + (setq args (list "-g" "-L" host )))) - (if (not (zerop (length real-user))) - (setq args (append args (list "-U" real-user))) + (if (not (zerop (length user))) + (setq args (append args (list "-U" user))) (setq args (append args (list "-N")))) (when domain (setq args (append args (list "-W" domain)))) |