changeset 105653:8177db6744a6

(tar-data-swapped-p): Make the assertion a bit more permissive for when the buffer is empty. (tar-header-block-tokenize): Decode the username and groupname. (tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 17 Oct 2009 04:36:11 +0000
parents 51bc239bdc37
children 1a53b2a8065d
files lisp/ChangeLog lisp/tar-mode.el
diffstat 2 files changed, 32 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Oct 17 04:18:31 2009 +0000
+++ b/lisp/ChangeLog	Sat Oct 17 04:36:11 2009 +0000
@@ -1,3 +1,10 @@
+2009-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* tar-mode.el (tar-data-swapped-p): Make the assertion a bit more
+	permissive for when the buffer is empty.
+	(tar-header-block-tokenize): Decode the username and groupname.
+	(tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
+
 2009-10-17  Chong Yidong  <cyd@stupidchicken.com>
 
 	* cedet/srecode/srt.el:
@@ -13,8 +20,8 @@
 	(semantic-analyze-scoped-inherited-tag-map): Wrap calculation of
 	tmpscope so that the regular scope will continue to work.
 
-	* cedet/semantic/idle.el (semantic-idle-tag-highlight): Use
-	semantic-idle-summary-highlight-face as the highlighting.
+	* cedet/semantic/idle.el (semantic-idle-tag-highlight):
+	Use semantic-idle-summary-highlight-face as the highlighting.
 
 	* emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
 	contains multibyte characters, choose first applicable coding
@@ -40,12 +47,11 @@
 
 	* cedet/ede/proj-prog.el (project-run-target): New method.
 
-	* cedet/ede/proj-obj.el (ede-cc-linker): Rename from
-	ede-gcc-linker.
+	* cedet/ede/proj-obj.el (ede-cc-linker): Rename from ede-gcc-linker.
 	(ede-g++-linker): Change Change link lines.
 
-	* cedet/ede/pmake.el (ede-pmake-insert-variable-shared): When
-	searching for old variables, go to the end of the buffer and
+	* cedet/ede/pmake.el (ede-pmake-insert-variable-shared):
+	When searching for old variables, go to the end of the buffer and
 	search backward from there.
 	(ede-proj-makefile-automake-insert-subdirs)
 	(ede-proj-makefile-automake-insert-extradist): New methods.
@@ -56,16 +62,16 @@
 	check that it exists.
 
 	* cedet/ede/linux.el (ede-linux-version): Don't call "head".
-	(ede-linux-load): Wrap dir in file-name-as-directory.  Set
-	:version slot.
+	(ede-linux-load): Wrap dir in file-name-as-directory.
+	Set :version slot.
 
 	* cedet/ede/files.el (ede-get-locator-object): When enabling
 	locate, do so on "top".
 
 	* cedet/ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in
 	file-name-as-directory during compare.
-	(ede-emacs-version): Return Emacs/XEmacs differentiator.  Get
-	version number from different places.  Don't call egrep.
+	(ede-emacs-version): Return Emacs/XEmacs differentiator.
+	Get version number from different places.  Don't call egrep.
 	(ede-emacs-load): Set :version slot.  Call file-name-as-directory
 	to set the directory.
 
--- a/lisp/tar-mode.el	Sat Oct 17 04:18:31 2009 +0000
+++ b/lisp/tar-mode.el	Sat Oct 17 04:36:11 2009 +0000
@@ -171,8 +171,9 @@
        ;; state correctly: the raw data is expected to be always larger than
        ;; the summary.
        (progn
-	 (assert (eq tar-data-swapped
-		     (> (buffer-size tar-data-buffer) (buffer-size))))
+	 (assert (or (= (buffer-size tar-data-buffer) (buffer-size))
+                     (eq tar-data-swapped
+                         (> (buffer-size tar-data-buffer) (buffer-size)))))
 	 tar-data-swapped)))
 
 (defun tar-swap-data ()
@@ -312,8 +313,12 @@
            link-p
            linkname
            uname-valid-p
-           (and uname-valid-p (substring string tar-uname-offset uname-end))
-           (and uname-valid-p (substring string tar-gname-offset gname-end))
+           (when uname-valid-p
+             (decode-coding-string
+              (substring string tar-uname-offset uname-end) coding))
+           (when uname-valid-p
+             (decode-coding-string
+              (substring string tar-gname-offset gname-end) coding))
            (tar-parse-octal-integer string tar-dmaj-offset tar-dmin-offset)
            (tar-parse-octal-integer string tar-dmin-offset tar-prefix-offset)
            ))))))
@@ -1013,7 +1018,10 @@
         (read-string "New UID string: " (tar-header-uname descriptor))))))
   (cond ((stringp new-uid)
 	 (setf (tar-header-uname (tar-current-descriptor)) new-uid)
-	 (tar-alter-one-field tar-uname-offset (concat new-uid "\000")))
+	 (tar-alter-one-field tar-uname-offset
+                              (concat (encode-coding-string
+                                       new-uid tar-file-name-coding-system)
+                                      "\000")))
 	(t
 	 (setf (tar-header-uid (tar-current-descriptor)) new-uid)
 	 (tar-alter-one-field tar-uid-offset
@@ -1039,7 +1047,9 @@
   (cond ((stringp new-gid)
 	 (setf (tar-header-gname (tar-current-descriptor)) new-gid)
 	 (tar-alter-one-field tar-gname-offset
-	   (concat new-gid "\000")))
+                              (concat (encode-coding-string
+                                       new-gid tar-file-name-coding-system)
+                                      "\000")))
 	(t
 	 (setf (tar-header-gid (tar-current-descriptor)) new-gid)
 	 (tar-alter-one-field tar-gid-offset