diff options
| author | Michael Albinus | 2018-01-30 20:09:20 +0100 |
|---|---|---|
| committer | Michael Albinus | 2018-01-30 20:09:20 +0100 |
| commit | 386c2ebb58c403c647a1dae1314be4b9f2071f56 (patch) | |
| tree | dcf575ad9a0e21619c9ffeb102f6d065bd586e2c /lisp | |
| parent | 3d5e31eceb9dc1fb62b2b27bcab549df3bd04ce9 (diff) | |
| download | emacs-386c2ebb58c403c647a1dae1314be4b9f2071f56.tar.gz emacs-386c2ebb58c403c647a1dae1314be4b9f2071f56.zip | |
Simplify last change in tramp-archive
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/net/tramp-archive.el | 54 |
1 files changed, 23 insertions, 31 deletions
diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index ac8b76b9442..51ee18fac7a 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el | |||
| @@ -315,26 +315,23 @@ name is kept in slot `hop'" | |||
| 315 | (unless (tramp-archive-file-name-p name) | 315 | (unless (tramp-archive-file-name-p name) |
| 316 | (tramp-compat-user-error nil "Not an archive file name: \"%s\"" name)) | 316 | (tramp-compat-user-error nil "Not an archive file name: \"%s\"" name)) |
| 317 | ;; The `string-match' happened in `tramp-archive-file-name-p'. | 317 | ;; The `string-match' happened in `tramp-archive-file-name-p'. |
| 318 | (let ((archive (match-string 1 name)) | 318 | (let* ((localname (match-string 2 name)) |
| 319 | (localname (match-string 2 name)) | 319 | (archive (file-truename (match-string 1 name))) |
| 320 | (tramp-verbose 0) | 320 | (vec (make-tramp-file-name |
| 321 | vec copy) | 321 | :method tramp-archive-method :hop archive))) |
| 322 | |||
| 323 | (setq archive (file-truename archive)) | ||
| 324 | 322 | ||
| 325 | (cond | 323 | (cond |
| 326 | ;; The value is already in the hash table. | 324 | ;; The value is already in the hash table. |
| 327 | ((setq vec (car (gethash archive tramp-archive-hash)))) | 325 | ((gethash archive tramp-archive-hash) |
| 326 | (setq vec (car (gethash archive tramp-archive-hash)))) | ||
| 328 | 327 | ||
| 329 | ;; File archives inside file archives. | 328 | ;; File archives inside file archives. |
| 330 | ((tramp-archive-file-name-p archive) | 329 | ((tramp-archive-file-name-p archive) |
| 331 | (let ((archive | 330 | (let ((archive |
| 332 | (tramp-make-tramp-file-name | 331 | (tramp-make-tramp-file-name |
| 333 | (tramp-archive-dissect-file-name archive) nil 'noarchive))) | 332 | (tramp-archive-dissect-file-name archive) nil 'noarchive))) |
| 334 | (setq vec | 333 | (setf (tramp-file-name-host vec) |
| 335 | (make-tramp-file-name | 334 | (url-hexify-string (tramp-gvfs-url-file-name archive)))) |
| 336 | :method tramp-archive-method :hop archive | ||
| 337 | :host (url-hexify-string (tramp-gvfs-url-file-name archive))))) | ||
| 338 | (puthash archive (list vec) tramp-archive-hash)) | 335 | (puthash archive (list vec) tramp-archive-hash)) |
| 339 | 336 | ||
| 340 | ;; http://... | 337 | ;; http://... |
| @@ -347,34 +344,29 @@ name is kept in slot `hop'" | |||
| 347 | (url-type (url-generic-parse-url archive)) | 344 | (url-type (url-generic-parse-url archive)) |
| 348 | url-tramp-protocols)) | 345 | url-tramp-protocols)) |
| 349 | (archive (url-tramp-convert-url-to-tramp archive))) | 346 | (archive (url-tramp-convert-url-to-tramp archive))) |
| 350 | (setq vec | 347 | (setf (tramp-file-name-host vec) |
| 351 | (make-tramp-file-name | 348 | (url-hexify-string (tramp-gvfs-url-file-name archive)))) |
| 352 | :method tramp-archive-method :hop archive | 349 | (puthash archive (list vec) tramp-archive-hash)) |
| 353 | :host (url-hexify-string (tramp-gvfs-url-file-name archive))))) | ||
| 354 | (puthash archive (list vec) tramp-archive-hash)) | ||
| 355 | 350 | ||
| 356 | ;; GVFS supported schemes. | 351 | ;; GVFS supported schemes. |
| 357 | ((or (tramp-gvfs-file-name-p archive) | 352 | ((or (tramp-gvfs-file-name-p archive) |
| 358 | (not (file-remote-p archive))) | 353 | (not (file-remote-p archive))) |
| 359 | (setq vec | 354 | (setf (tramp-file-name-host vec) |
| 360 | (make-tramp-file-name | 355 | (url-hexify-string (tramp-gvfs-url-file-name archive))) |
| 361 | :method tramp-archive-method :hop archive | ||
| 362 | :host (url-hexify-string (tramp-gvfs-url-file-name archive)))) | ||
| 363 | (puthash archive (list vec) tramp-archive-hash)) | 356 | (puthash archive (list vec) tramp-archive-hash)) |
| 364 | 357 | ||
| 365 | ;; Anything else. Here we call `file-local-copy', which we | 358 | ;; Anything else. Here we call `file-local-copy', which we |
| 366 | ;; have avoided so far. | 359 | ;; have avoided so far. |
| 367 | (t (let ((inhibit-file-name-operation 'file-local-copy) | 360 | (t (let* ((inhibit-file-name-operation 'file-local-copy) |
| 368 | (inhibit-file-name-handlers | 361 | (inhibit-file-name-handlers |
| 369 | (cons 'jka-compr-handler inhibit-file-name-handlers))) | 362 | (cons 'jka-compr-handler inhibit-file-name-handlers)) |
| 370 | (setq copy (file-local-copy archive) | 363 | (copy (file-local-copy archive))) |
| 371 | vec | 364 | (setf (tramp-file-name-host vec) |
| 372 | (make-tramp-file-name | 365 | (url-hexify-string (tramp-gvfs-url-file-name copy))) |
| 373 | :method tramp-archive-method :hop archive | 366 | (puthash archive (cons vec copy) tramp-archive-hash)))) |
| 374 | :host (url-hexify-string (tramp-gvfs-url-file-name copy))))) | 367 | |
| 375 | (puthash archive (cons vec copy) tramp-archive-hash))) | 368 | ;; So far, `vec' handles just the mount point. Add `localname', |
| 376 | 369 | ;; which shouldn't be pushed to the hash. | |
| 377 | ;; So far, `vec' handles just the mount point. Add `localname'. | ||
| 378 | (setf (tramp-file-name-localname vec) localname) | 370 | (setf (tramp-file-name-localname vec) localname) |
| 379 | vec))) | 371 | vec))) |
| 380 | 372 | ||