[tex-live] Problem with pgf/tikz in tl 2008 on Windows

Matthew Clarke clamat at telus.net
Tue Sep 23 21:26:07 CEST 2008

Tue, Sep 23, 2008 at 12:07:11PM -0500, Dan Luecking may have written:

> With regard to the discussion of the file in pgf having
> a truncated name:
> The file in question has the wrong name in pgf.tar
> I downloaded pgf.tar.lzma from www.ctan.org just 5 minutes ago.
> The output of
>    lzma d pgf.tar.lzma pgf.tar
>    tar -tf pgf.tar
> is, in part,
> .../tikz/libraries/tikzlibrarydecorations.pathmorphing.code.te
> (Line truncated at the start for readability.) The database
> texlive.tlpdb has it listed corectly. Thus, the problem should
> appear in any TeX Live that installed via the current archive.
> Windows may or may not have a character limit of 255 on filenames,
> but it certainly doesn't have such a limit on pathnames, and even
> the length of this particular path shouldn't come anywhere near 255.
> The path starting at "texmf..." is only 101. I can't believe anyone
> would install it in a path with 155 characters before that.
> "C:\Program Files\TeXLive\2008\"  only comes to 30.
> Dan

I just pulled a copy of pgf.tar.lzma from CTAN; the file is dated
14th August.  After decompression, inspection shows that the archive
is in "ustar" format.  Inspection also shows that the name stored in
the archive for that particular file is 100 bytes long and is not
truncated; it has the trailing ".tex" with the final "x".  On my system
(OpenBSD/i386-current), both the system tar and GNU tar report the correct
name when listing the archive's table of contents and both tar utilities
give the file its proper name when extracting from the archive.

It appears that your tar utility is incorrectly truncating the name.  In
a "ustar" format archive, for historical reasons, the archive member name
is split into two pieces: a prefix, given 155 bytes of storage space, and
a name, given 100 bytes of storage space.  If the full name is 100 bytes
or less, the "ustar" format puts it in the name space and leaves the
prefix space empty.  Otherwise, the name is split at a directory separator
character (/) and the first piece is put in the prefix space and the
second piece in the name space.  Historically, some programmers have made
the mistake of thinking that these spaces hold C style (null-terminated)
strings and that, taking into account the terminating null byte, the
maximum lengths are 154 for the prefix and 99 for the name.  This is not
the case; if the name is exactly 100 bytes long, the name part of the
header will hold that 100 byte name with no terminating null byte.

Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by
definition, not smart enough to debug it.  -- Kernighan
				-- quoted by Quentyn Taylor

More information about the tex-live mailing list