changeset 34495:390a9f3dd80c

(tar-extract): Base the name of the subfile buffer on the name of the tar buffer. Verify that the existing buffer is visiting the same subfile.
author Andreas Schwab <schwab@suse.de>
date Tue, 12 Dec 2000 17:56:49 +0000
parents c9772e95b9c1
children d9792bcf0457
files lisp/tar-mode.el
diffstat 1 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tar-mode.el	Tue Dec 12 17:03:11 2000 +0000
+++ b/lisp/tar-mode.el	Tue Dec 12 17:56:49 2000 +0000
@@ -678,19 +678,23 @@
 	 (end (+ start size)))
     (let* ((tar-buffer (current-buffer))
 	   (tar-buffer-multibyte enable-multibyte-characters)
-	   (tarname (if (buffer-file-name)
-			(file-name-nondirectory (buffer-file-name))
-		      (buffer-name)))
+	   (tarname (buffer-name))
 	   (bufname (concat (file-name-nondirectory name)
 			    " ("
 			    tarname
 			    ")"))
 	   (read-only-p (or buffer-read-only view-p))
 	   (buffer (get-buffer bufname))
-	   (just-created nil))
-      (if buffer
+	   (just-created nil)
+	   (new-buffer-file-name (expand-file-name
+				  ;; `:' is not allowed on Windows
+				  (concat tarname "!" name))))
+      (if (and buffer
+	       ;; Check that the buffer is visiting the same file
+	       (equal (buffer-file-name buffer) new-buffer-file-name))
 	  nil
-	(setq buffer (get-buffer-create bufname))
+	(setq buffer (generate-new-buffer bufname))
+	(setq bufname (buffer-name buffer))
 	(setq just-created t)
 	(unwind-protect
 	    (progn
@@ -706,9 +710,7 @@
 		      (set-buffer-multibyte t))
 		  (insert-buffer-substring tar-buffer start end))
 		(goto-char (point-min))
-		(setq buffer-file-name
-		      ;; `:' is not allowed on Windows
-		      (expand-file-name (concat tarname "!" name)))
+		(setq buffer-file-name new-buffer-file-name)
 		(setq buffer-file-truename
 		      (abbreviate-file-name buffer-file-name))
 		;; We need to mimic the parts of insert-file-contents