aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMichael Albinus2018-01-30 20:09:20 +0100
committerMichael Albinus2018-01-30 20:09:20 +0100
commit386c2ebb58c403c647a1dae1314be4b9f2071f56 (patch)
treedcf575ad9a0e21619c9ffeb102f6d065bd586e2c /lisp
parent3d5e31eceb9dc1fb62b2b27bcab549df3bd04ce9 (diff)
downloademacs-386c2ebb58c403c647a1dae1314be4b9f2071f56.tar.gz
emacs-386c2ebb58c403c647a1dae1314be4b9f2071f56.zip
Simplify last change in tramp-archive
Diffstat (limited to 'lisp')
-rw-r--r--lisp/net/tramp-archive.el54
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