Subject: bug in BSD tar?
Date: Mon, 28 May 2007 21:49:37 +0100
From: Steven Hartland <address@hidden>
To: address@hidden
When compressing files with specific filenames it appears that BSD
tar is creating invalid archives which when handed to gnutar to
expand it errors with the following:
[log]
tar -xvzf test.tar.gz
tar: Ignoring unknown extended header keyword `SCHILY.dev'
tar: Ignoring unknown extended header keyword `SCHILY.ino'
tar: Ignoring unknown extended header keyword `SCHILY.nlink'
cantiquedeno\353l1_loop.wav
tar: Error exit delayed from previous errors
[/log]
This archive contains just a single file with no special
attributes yet BSD seems to be doing something strange due
to the filename only.
The following is the out of the filename using ls and find:
address@hidden:music> ls -l cantiquede*
-rw-r--r-- 1 user group 1766066 Feb 8 20:54 cantiquedeno?l1_loop.wav
address@hidden:music> find . -name can\*
./cantiquedenoël1_loop.wav
I've tested creating the tar with gtar and all is well when
expanded so I can only conclude at this point that BSD is
broken in some way by this strange filename.
tar --version
bsdtar 1.01.020, libarchive 1.02.006
Copyright (C) 2003-2004 Tim Kientzle
Steve
GNU tar is broken. POSIX specifically allows for vendor extensions (such
as the SCHILY.* extensions which were introduced by star), and the correct
way to handle them is by printing a warning message, ignoring the extension,
and not treating it as an error.
You can work around gtar's breakage by explicitly telling it to ignore these
options via --pax-option="delete=SCHILY.*" .