|
From: | Emacs bug Tracking System |
Subject: | bug#4730: marked as done (23.1; tar-chown-entry corrupts tar file) |
Date: | Sat, 17 Oct 2009 04:45:09 +0000 |
Your message dated Sat, 17 Oct 2009 00:35:06 -0400 with message-id <jwv7huuzlj6.fsf-monnier+emacsbugreports@gnu.org> and subject line Re: bug#4730: 23.1; tar-chown-entry corrupts tar file has caused the Emacs bug report #4730, regarding 23.1; tar-chown-entry corrupts tar file to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@emacsbugs.donarmstrong.com immediately.) -- 4730: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=4730 Emacs Bug Tracking System Contact owner@emacsbugs.donarmstrong.com with problems
--- Begin Message ---Subject: 23.1; tar-chown-entry corrupts tar file If I'm editing a tar file, and I change a subfile's owner or group, I Date: Thu, 15 Oct 2009 12:31:21 -0400
get the following:
Debugger entered--Lisp error: (cl-assertion-failed (not (or enable-multibyte-cha
racters (multibyte-string-p new-data-string))))
signal(cl-assertion-failed ((not (or enable-multibyte-characters ...))))
tar-alter-one-field(265 "root tar-chown-entry("root")
call-interactively(tar-chown-entry nil nil)
and tar will be unable to read that particular tar header. I'm
able to work around it with the following advice:
(defadvice tar-alter-one-field (around fix-multibyte-input)
(let ((new-data-string (ad-get-arg 1)))
(if (multibyte-string-p new-data-string)
(ad-set-arg 1 (string-to-unibyte new-data-string)))
ad-do-it))
This is on a Debian 4.0 box with GNU tar 1.16.
In GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.8.20)
of 2009-08-03 on discordia
Windowing system distributor `The X.Org Foundation', version 11.0.70101000
configured using `configure '--with-x-toolkit=gtk''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t
Major mode: Tar
Minor modes in effect:
tooltip-mode: t
tool-bar-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <down-mouse-1> <mouse-1> C-x C-f f o o
<tab> . t <tab> <return> M-x t o g g l e - d e b u
g - <tab> e <tab> <return> O <C-backspace> r o o t
<return> <help-echo> <help-echo> <help-echo> <help-echo>
<down-mouse-1> <mouse-1> M-x r e p o <tab> r t - =
<backspace> e m a c s - b u g <return>
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Parsing tar file...done
Loading vc-svn...done
Debug on Error enabled globally
Entering debugger...
Buffer foo.tar has shrunk a lot; auto save disabled in that buffer until next re
al save
Making completion list...
--- End Message ---
--- Begin Message ---Subject: Re: bug#4730: 23.1; tar-chown-entry corrupts tar file Date: Sat, 17 Oct 2009 00:35:06 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) > If I'm editing a tar file, and I change a subfile's owner or group, I > get the following: > Debugger entered--Lisp error: (cl-assertion-failed (not (or > enable-multibyte-cha > racters (multibyte-string-p new-data-string)))) > signal(cl-assertion-failed ((not (or enable-multibyte-characters ...)))) > tar-alter-one-field(265 "root tar-chown-entry("root") > call-interactively(tar-chown-entry nil nil) Thank you. I've installed the patch below which fixes it, Stefan --- tar-mode.el.~1.141.~ 2009-09-03 23:06:21.000000000 -0400 +++ tar-mode.el 2009-10-17 00:31:24.000000000 -0400 @@ -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
--- End Message ---
[Prev in Thread] | Current Thread | [Next in Thread] |