This is the mail archive of the
mailing list for the Cygwin project.
Re: untarring symlinks with ../ fails randomly
On Apr 26 11:22, Christopher Faylor wrote:
> On Tue, Apr 26, 2011 at 03:08:52PM +0000, Dan Grayson wrote:
> >(Re-posting yet again, didn't get through yesterday or today (?), this time
> >from a different account.)
> >Debugging with gdb shows that "tar" is prepared for the possibility that
> >symbolic links don't work and that hard links will have to be used instead.
> >So, when it encounters a symbolic link, it creates a zero-length file with mode
> >0 as a placeholder, and it records the inode number of the new file. That way
> >it can wait until all the regular files have been created, and then replace the
> >placeholder by a symbolic link, or if that doesn't work, by a hard link to the
> >existing file. However, a tar file can contain multiple entries corresponding
> >to the same file name or path, so it may happen that the placeholder is no
> >longer present at the end, having been replaced by another file. Hence, it
> >will only replace the placeholder if the inode number and the creation time are
> >unchanged. But, under cygwin, the creation time may change gratuitously after
> >the creation of the file, at random!
> Cygwin doesn't change the creation time gratuitously. Sounds like BLODA to me.
Btw., POSIX st_ctime is not "creation time" but "change time". It's the
timestamp of the last change to the file's metadata (inode content on
filesystems like ext2/3/4).
The "change time" was always available in file info calls in the
native NT API, and it's available in the Win32 API since Windows Vista
Unfortunately Microsoft doesn't provide documentation on the resolution
of the "change time", only of the other timestamps, see
If you're looking for the creation time, it's in st_birthtime.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple