From: Kevin Ryde <user42@zip.com.au>
To: emacs-pretest-bug@gnu.org
Subject: bug#1862: 23.0.60; tar-mode on posix ustar
Date: Mon, 12 Jan 2009 11:37:11 +1100 [thread overview]
Message-ID: <87vdsltl54.fsf@blah.blah> (raw)
[-- Attachment #1: Type: text/plain, Size: 1754 bytes --]
Running
emacs -Q File-Corresponding-0.003.tar.gz
on that file from
http://search.cpan.org/CPAN/authors/id/J/JO/JOHANL/File-Corresponding-0.003.tar.gz
(about 14 kbytes) produces a buffer like
drwxrwxrwx 0/0 0 File-Corresponding-0.003
-r--r--r-- 0/0 1274 Build.PL
-r--r--r-- 0/0 382 Changes
-r--r--r-- 0/0 1272 Makefile.PL
...
where I hoped it would show the directory part of each name, the same as
shown by "tar tvf" (GNU tar 1.20),
File-Corresponding-0.003
File-Corresponding-0.003/Build.PL
File-Corresponding-0.003/Changes
File-Corresponding-0.003/Makefile.PL
...
Such a file is generated by the perl Archive::Tar module. It uses the
posix style magic "ustar\0", with digits "00" in the `version' field.
But I think tar-header-block-tokenize only recognises a nul "\000" in
that version field (in addition to ``OLDGNU'' style which is a space).
I get some joy from the change below. Are those two places the only
ones wanting to match the extra form?
2009-01-10 Kevin Ryde <user42@zip.com.au>
* tar-mode.el (tar-header-block-tokenize): Recognise posix
"ustar\0\060" magic for long filenames.
In GNU Emacs 23.0.60.12 (i586-pc-linux-gnu, GTK+ Version 2.12.11)
of 2009-01-07 on blah.blah
configured using `configure 'CFLAGS=-O -g' '--prefix=/down/emacs/b/inst' '--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_AU
value of $XMODIFIERS: nil
locale-coding-system: iso-latin-1-unix
default-enable-multibyte-characters: t
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: tar-mode.el.posix-ustar.diff --]
[-- Type: text/x-diff, Size: 2055 bytes --]
*** tar-mode.el 12 Jan 2009 11:33:35 +1100 1.135
--- tar-mode.el 12 Jan 2009 11:33:59 +1100
***************
*** 240,246 ****
(link-p (aref string tar-linkp-offset))
(magic-str (substring string tar-magic-offset
(1- tar-uname-offset)))
! (uname-valid-p (car (member magic-str '("ustar " "ustar\0\0"))))
name linkname
(nulsexp "[^\000]*\000"))
(when (string-match nulsexp string tar-name-offset)
--- 240,249 ----
(link-p (aref string tar-linkp-offset))
(magic-str (substring string tar-magic-offset
(1- tar-uname-offset)))
! (uname-valid-p (car (member magic-str
! '("ustar " ;; "OLDGNU"
! "ustar\0\0" ;; per tar-rename-entry
! "ustar\0\060")))) ;; POSIX
name linkname
(nulsexp "[^\000]*\000"))
(when (string-match nulsexp string tar-name-offset)
***************
*** 256,262 ****
nil
(- link-p ?0)))
(setq linkname (substring string tar-link-offset link-end))
! (when (and (equal uname-valid-p "ustar\0\0")
(string-match nulsexp string tar-prefix-offset)
(> (match-end 0) (1+ tar-prefix-offset)))
(setq name (concat (substring string tar-prefix-offset
--- 259,266 ----
nil
(- link-p ?0)))
(setq linkname (substring string tar-link-offset link-end))
! (when (and (member uname-valid-p '("ustar\0\0" ;; tar-rename-entry
! "ustar\0\060")) ;; POSIX
(string-match nulsexp string tar-prefix-offset)
(> (match-end 0) (1+ tar-prefix-offset)))
(setq name (concat (substring string tar-prefix-offset
next reply other threads:[~2009-01-12 0:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <jwvy6xh9oug.fsf-monnier+emacsbugreports@gnu.org>
2009-01-12 0:37 ` Kevin Ryde [this message]
2009-01-12 3:45 ` bug#1862: marked as done (23.0.60; tar-mode on posix ustar) Emacs bug Tracking System
[not found] ` <handler.1862.D1862.12317315262970.notifdone@emacsbugs.donarmstrong.com>
2009-01-16 0:18 ` bug#1862: 23.0.60; tar-mode on posix ustar Kevin Ryde
2009-01-16 2:39 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vdsltl54.fsf@blah.blah \
--to=user42@zip.com.au \
--cc=1862@emacsbugs.donarmstrong.com \
--cc=emacs-pretest-bug@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).