emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 386c2eb: Simplify last change in tramp-archive


From: Michael Albinus
Subject: [Emacs-diffs] master 386c2eb: Simplify last change in tramp-archive
Date: Tue, 30 Jan 2018 14:09:31 -0500 (EST)

branch: master
commit 386c2ebb58c403c647a1dae1314be4b9f2071f56
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Simplify last change in tramp-archive
---
 lisp/net/tramp-archive.el            | 54 +++++++++++++++---------------------
 test/lisp/net/tramp-archive-tests.el |  6 +---
 2 files changed, 24 insertions(+), 36 deletions(-)

diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el
index ac8b76b..51ee18f 100644
--- a/lisp/net/tramp-archive.el
+++ b/lisp/net/tramp-archive.el
@@ -315,26 +315,23 @@ name is kept in slot `hop'"
     (unless (tramp-archive-file-name-p name)
       (tramp-compat-user-error nil "Not an archive file name: \"%s\"" name))
     ;; The `string-match' happened in `tramp-archive-file-name-p'.
-    (let ((archive (match-string 1 name))
-         (localname (match-string 2 name))
-         (tramp-verbose 0)
-         vec copy)
-
-      (setq archive (file-truename archive))
+    (let* ((localname (match-string 2 name))
+          (archive (file-truename (match-string 1 name)))
+          (vec (make-tramp-file-name
+                :method tramp-archive-method :hop archive)))
 
       (cond
        ;; The value is already in the hash table.
-       ((setq vec (car (gethash archive tramp-archive-hash))))
+       ((gethash archive tramp-archive-hash)
+       (setq vec (car (gethash archive tramp-archive-hash))))
 
        ;; File archives inside file archives.
        ((tramp-archive-file-name-p archive)
        (let ((archive
               (tramp-make-tramp-file-name
                (tramp-archive-dissect-file-name archive) nil 'noarchive)))
-         (setq vec
-               (make-tramp-file-name
-                :method tramp-archive-method :hop archive
-                :host (url-hexify-string (tramp-gvfs-url-file-name archive)))))
+         (setf (tramp-file-name-host vec)
+               (url-hexify-string (tramp-gvfs-url-file-name archive))))
        (puthash archive (list vec) tramp-archive-hash))
 
        ;; http://...
@@ -347,34 +344,29 @@ name is kept in slot `hop'"
                 (url-type (url-generic-parse-url archive))
                 url-tramp-protocols))
               (archive (url-tramp-convert-url-to-tramp archive)))
-         (setq vec
-               (make-tramp-file-name
-                :method tramp-archive-method :hop archive
-                :host (url-hexify-string (tramp-gvfs-url-file-name archive)))))
-         (puthash archive (list vec) tramp-archive-hash))
+         (setf (tramp-file-name-host vec)
+               (url-hexify-string (tramp-gvfs-url-file-name archive))))
+       (puthash archive (list vec) tramp-archive-hash))
 
        ;; GVFS supported schemes.
        ((or (tramp-gvfs-file-name-p archive)
            (not (file-remote-p archive)))
-       (setq vec
-             (make-tramp-file-name
-              :method tramp-archive-method :hop archive
-              :host (url-hexify-string (tramp-gvfs-url-file-name archive))))
+       (setf (tramp-file-name-host vec)
+             (url-hexify-string (tramp-gvfs-url-file-name archive)))
        (puthash archive (list vec) tramp-archive-hash))
 
        ;; Anything else.  Here we call `file-local-copy', which we
        ;; have avoided so far.
-       (t (let ((inhibit-file-name-operation 'file-local-copy)
-               (inhibit-file-name-handlers
-                (cons 'jka-compr-handler inhibit-file-name-handlers)))
-           (setq copy (file-local-copy archive)
-                 vec
-                 (make-tramp-file-name
-                  :method tramp-archive-method :hop archive
-                  :host (url-hexify-string (tramp-gvfs-url-file-name copy)))))
-         (puthash archive (cons vec copy) tramp-archive-hash)))
-
-      ;; So far, `vec' handles just the mount point.  Add `localname'.
+       (t (let* ((inhibit-file-name-operation 'file-local-copy)
+                (inhibit-file-name-handlers
+                 (cons 'jka-compr-handler inhibit-file-name-handlers))
+                (copy (file-local-copy archive)))
+           (setf (tramp-file-name-host vec)
+                 (url-hexify-string (tramp-gvfs-url-file-name copy)))
+           (puthash archive (cons vec copy) tramp-archive-hash))))
+
+      ;; So far, `vec' handles just the mount point.  Add `localname',
+      ;; which shouldn't be pushed to the hash.
       (setf (tramp-file-name-localname vec) localname)
       vec)))
 
diff --git a/test/lisp/net/tramp-archive-tests.el 
b/test/lisp/net/tramp-archive-tests.el
index 82dd5de..ecfee0c 100644
--- a/test/lisp/net/tramp-archive-tests.el
+++ b/test/lisp/net/tramp-archive-tests.el
@@ -186,11 +186,7 @@ variables, so we check the Emacs version directly."
              (file-name-nondirectory tramp-archive-test-file-archive)))))
          (should-not port)
          (should (string-equal localname "/bar"))
-         ;; The `archive' component is now already a Tramp file name.
-         (should
-          (string-equal
-           archive
-           (tramp-archive-gvfs-file-name tramp-archive-test-file-archive))))
+         (should (string-equal archive tramp-archive-test-file-archive)))
 
       ;; Cleanup.
       (tramp-archive-cleanup-hash))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]