From 4062011e2f2b45c85cdafd27a30179d7e9f19778 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 17 Oct 2009 04:36:11 +0000 Subject: [PATCH] (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). --- lisp/ChangeLog | 26 ++++++++++++++++---------- lisp/tar-mode.el | 22 ++++++++++++++++------ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bb119085989..434dcbaff89 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2009-10-17 Stefan Monnier + + * 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 * 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. diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 762ecc07284..0e681f56702 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -171,8 +171,9 @@ This information is useful, but it takes screen space away from file names." ;; 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 @@ write-date, checksum, link-type, and link-name." 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 @@ for this to be permanent." (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 @@ for this to be permanent." (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 -- 2.39.2