summaryrefslogtreecommitdiff
path: root/lisp/tar-mode.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-06-12 21:50:08 +0000
committerRichard M. Stallman <rms@gnu.org>1996-06-12 21:50:08 +0000
commit3742f39f26c7cc73c113bd3117059c8107647353 (patch)
tree9da6f75ce79d79d5c3088b44a67192365ec9a867 /lisp/tar-mode.el
parent57e3d22a51e6bca0ff7bc94ed30739dafc09cb91 (diff)
downloademacs-3742f39f26c7cc73c113bd3117059c8107647353.tar.gz
(tar-mode-revert): Cope if user cancels the revert.
Diffstat (limited to 'lisp/tar-mode.el')
-rw-r--r--lisp/tar-mode.el18
1 files changed, 13 insertions, 5 deletions
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index ce8ed3b6184..9ac9eb90e08 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -630,11 +630,19 @@ appear on disk when you save the tar-file's buffer."
;; Revert the buffer and recompute the dired-like listing.
(defun tar-mode-revert (&optional no-autosave no-confirm)
- (setq tar-header-offset nil)
- (let ((revert-buffer-function nil))
- (revert-buffer t no-confirm)
- (widen))
- (tar-mode))
+ (let ((revert-buffer-function nil)
+ (old-offset tar-header-offset)
+ success)
+ (setq tar-header-offset nil)
+ (unwind-protect
+ (and (revert-buffer t no-confirm)
+ (progn (widen)
+ (setq success t)
+ (tar-mode)))
+ ;; If the revert was canceled,
+ ;; put back the old value of tar-header-offset.
+ (or success
+ (setq tar-header-offset old-offset)))))
(defun tar-next-line (p)