summaryrefslogtreecommitdiff
path: root/lisp/tar-mode.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-07-25 20:27:07 +0000
committerRichard M. Stallman <rms@gnu.org>1995-07-25 20:27:07 +0000
commitb2e3d5bbff2a9b1acba0b40f97adfb7cf63fdfb0 (patch)
tree697039df22b10639064693592cc13532a81974f1 /lisp/tar-mode.el
parent75a127906baaae718583d02b0ccfb1373674cbfa (diff)
downloademacs-b2e3d5bbff2a9b1acba0b40f97adfb7cf63fdfb0.tar.gz
(tar-copy): Inhibit use of jka-compr handler
when both to- and from- files would use it.
Diffstat (limited to 'lisp/tar-mode.el')
-rw-r--r--lisp/tar-mode.el13
1 files changed, 12 insertions, 1 deletions
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index dfc555c97e9..e0cdf304b72 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -789,9 +789,20 @@ the current tar-entry."
(name (tar-header-name tokens))
(size (tar-header-size tokens))
(start (+ (tar-desc-data-start descriptor) tar-header-offset -1))
- (end (+ start size)))
+ (end (+ start size))
+ (inhibit-file-name-handlers inhibit-file-name-handlers)
+ (inhibit-file-name-operation inhibit-file-name-operation))
(save-restriction
(widen)
+ ;; Inhibit compressing a subfile again if *both* name and
+ ;; to-file are handled by jka-compr
+ (if (and (eq (find-file-name-handler name 'write-region) 'jka-compr-handler)
+ (eq (find-file-name-handler to-file 'write-region) 'jka-compr-handler))
+ (setq inhibit-file-name-handlers
+ (cons 'jka-compr-handler
+ (and (eq inhibit-file-name-operation 'write-region)
+ inhibit-file-name-handlers))
+ inhibit-file-name-operation 'write-region))
(write-region start end to-file))
(message "Copied tar entry %s to %s" name to-file)))