This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: CMake 2.4.7-1 ready


Brian Dessent wrote:

No, nothing's changed in the untar code in forever. I debugged it and the problem is that setup does not recognise the file as a valid tar archive. What version of tar did you use to create it?

The problem is the 'magic' field of the tar header (offset 257).  Setup
expects this to contain "ustar" followed by two spaces and a trailing
NUL:

62 if (original->peek (magic, longest_magic) > 0)
63 {
64 if (memcmp (&magic[257], "ustar\040\040\0", 8) == 0)
65 {
66 /* tar */
67 archive_tar *rv = new archive_tar (original);
68 if (!rv->error ())
69 return rv;
70 return NULL;
71 }
OK, I looked at the libtar code and found this:
 if (t->options & TAR_GNU)
   strncpy(t->th_buf.magic, "ustar  ", 8);
 else
 {
   strncpy(t->th_buf.version, TVERSION, TVERSLEN);
   strncpy(t->th_buf.magic, TMAGIC, TMAGLEN);
 }

#define  TMAGIC    "ustar"  /* ustar and a null */
#define  TMAGLEN    6
#define  TVERSION  "00"  /* 00 and no null */
#define  TVERSLEN  2

So, that explains why the tar file works, it is just not a gnu tar file. Something must have changed in my code because the 2.4.6 version
has the gnu style header and the 2.4.7 version has the other header.
I will try and figure out what changed and create a new release.


-Bill



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]