[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp ChangeLog tar-mode.el
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] emacs/lisp ChangeLog tar-mode.el |
Date: |
Fri, 13 Mar 2009 15:37:07 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Stefan Monnier <monnier> 09/03/13 15:37:06
Modified files:
lisp : ChangeLog tar-mode.el
Log message:
(tar-header-block-tokenize): Presume less, check more.
(tar-summarize-buffer): Don't silently skip incomplete headers.
(tar-mode): Revert to fundamental-mode in case of malformed tar data.
(tar-extract): Try to make sure set-auto-mode doesn't mistakenly
treat a tar file member as being a tar file itself, just because
its own filename includes the parent tar file's.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15456&r2=1.15457
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/tar-mode.el?cvsroot=emacs&r1=1.137&r2=1.138
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15456
retrieving revision 1.15457
diff -u -b -r1.15456 -r1.15457
--- ChangeLog 13 Mar 2009 05:08:19 -0000 1.15456
+++ ChangeLog 13 Mar 2009 15:37:03 -0000 1.15457
@@ -1,3 +1,12 @@
+2009-03-13 Stefan Monnier <address@hidden>
+
+ * tar-mode.el (tar-header-block-tokenize): Presume less, check more.
+ (tar-summarize-buffer): Don't silently skip incomplete headers.
+ (tar-mode): Revert to fundamental-mode in case of malformed tar data.
+ (tar-extract): Try to make sure set-auto-mode doesn't mistakenly
+ treat a tar file member as being a tar file itself, just because
+ its own filename includes the parent tar file's.
+
2009-03-13 Kenichi Handa <address@hidden>
* international/mule-diag.el (print-fontset): Handling of the
Index: tar-mode.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/tar-mode.el,v
retrieving revision 1.137
retrieving revision 1.138
diff -u -b -r1.137 -r1.138
--- tar-mode.el 16 Jan 2009 02:39:02 -0000 1.137
+++ tar-mode.el 13 Mar 2009 15:37:06 -0000 1.138
@@ -226,7 +226,7 @@
"Return a `tar-header' structure.
This is a list of name, mode, uid, gid, size,
write-date, checksum, link-type, and link-name."
- (assert (<= (+ pos 512) (point-max)))
+ (if (> (+ pos 512) (point-max)) (error "Malformed Tar header"))
(assert (zerop (mod (- pos (point-min)) 512)))
(assert (not enable-multibyte-characters))
(let ((string (buffer-substring pos (setq pos (+ pos 512)))))
@@ -483,7 +483,7 @@
(point-min) (point-max))))
descriptor)
(with-current-buffer tar-data-buffer
- (while (and (<= (+ pos 512) (point-max))
+ (while (and (< pos (point-max))
(setq descriptor (tar-header-block-tokenize pos coding)))
(let ((size (tar-header-size descriptor)))
(if (< size 0)
@@ -654,9 +654,17 @@
(generate-new-buffer (format " *tar-data %s*"
(file-name-nondirectory
(or buffer-file-name (buffer-name))))))
+ (condition-case err
+ (progn
(tar-swap-data)
(tar-summarize-buffer)
(tar-next-line 0))
+ (error
+ ;; If summarizing caused an error, then maybe the buffer doesn't contain
+ ;; tar data. Rather than show a mysterious empty buffer, let's
+ ;; revert to fundamental-mode.
+ (fundamental-mode)
+ (signal (car err) (cdr err)))))
(defun tar-subfile-mode (p)
@@ -773,7 +781,13 @@
(read-only-p (or buffer-read-only view-p))
(new-buffer-file-name (expand-file-name
;; `:' is not allowed on Windows
- (concat tarname "!" name)))
+ (concat tarname "!"
+ (if (string-match "/" name)
+ name
+ ;; Make sure `name' contains a /
+ ;; so set-auto-mode doesn't try
+ ;; to look at `tarname' for hints.
+ (concat "./" name)))))
(buffer (get-file-buffer new-buffer-file-name))
(just-created nil)
undo-list)
- [Emacs-diffs] emacs/lisp ChangeLog tar-mode.el,
Stefan Monnier <=