Subject: bug#19865: tar-untar-buffer: should honor default-directory

From: Ivan Shmakov <[email-masked]>
Date: Sat, 14 Feb 2015 11:31:12 +0000

Package:  emacs
Severity: minor
Tags: patch

	As currently implemented (tested on 7eb2077f9dd1, 2015-02-06
	15:01:12 UTC), tar-untar-buffer uses the default-directory value
	for the “data” buffer (see tar-data-buffer), instead of the
	(arguably much less obscure) one for the tar-mode buffer itself
	(which could easily be changed by the user via M-x cd.)

	A possible fix is to remember the default-directory value in the
	same ‘let’ form used to do so for tar-parse-info, along the
	lines of the patch MIMEd.

-- 
FSF associate member #7257  np. A World Behind the World — Jami Sieber
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -531,6 +542,7 @@ defun tar-untar-buffer ()
   (interactive)
   ;; FIXME: make it work even if we're not in tar-mode.
-  (let ((descriptors tar-parse-info))   ;Read the var in its buffer.
+  (let ((descriptors tar-parse-info)    ; Read the var in its buffer.
+        (dest-dir default-directory))
     (with-current-buffer
         (if (tar-data-swapped-p) tar-data-buffer (current-buffer))
       (set-buffer-multibyte nil)          ;Hopefully, a no-op.
@@ -544,5 +564,6 @@ defun tar-untar-buffer ()
                (dir (if (eq (tar-header-link-type descriptor) 5)
                         name
                       (file-name-directory name)))
+               (default-directory dest-dir)
                (start (tar-header-data-start descriptor))
                (end (+ start (tar-header-size descriptor))))