FYI... I am confirming this bug, I have to use my own version of tar to get BitKeeper to pass regression test in the cygwin env.. ( I forgot what my hack was , but probably similar)
Andrew ----- Original Message ----- From: "Ivan Dobrianov" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Monday, April 08, 2002 6:08 PM Subject: Re: tar won't restore permissions > Ok, I posted this question more than a year ago ... and the problem is > still present in the latest Cygwin builds: > > tar xpvf myArchive.tar > > will not restore read-only permissions, i.e. files with r-- perms will > get rw- permission when restored!!! I am seeing this on Win NT, 2000, > and XP on FAT32 and NTFS with and without setting $CYGWIN to ntea or > ntfs. This used to work right in the days of B20. > > I. To see the bug: > 1) copy the follwing text to a file called "demo" > ----------------------------------------------------- > echo " " > > [ -d tar_bug ] || mkdir tar_bug > cd tar_bug > rm -rf * > > cat > myFile<<EOF > qwerty > EOF > > chmod 444 myFile > ls -l myFile > > tar cvf myArchive.tar myFile > tar tvf myArchive.tar > > sleep 2 > > mkdir untarred > cd untarred > tar xpvf ../myArchive.tar -U > > ls -l > -------------------------------------------------------- > 2) Do: > sh demo > > 3) I get the follwing output: > -------------------------------------------------------- > -r--r--r-- 1 administ None 8 Jan 20 11:55 myFile > myFile > -r--r--r-- administrator/None 8 2001-01-20 11:55:14 myFile > myFile > total 0 > -rw-r--r-- 1 administ None 8 Jan 20 11:55 myFile > -------------------------------------------------------- > > *** Note that myFile is writable in the end! *** > > NOTE: Yes, if you "CYGWIN=ntea" under NTFS, the problem _SEEMS_ to get > fixed, but upon inspection, with say Explorer, it turns out the file is > still writable - the problem is just being masked! > > II. The fix. > > Well, I have a tweaked version of tar-1.13.19-1 which seems to work > fine. Here is the hacky patch of extract.c that does the trick > -------------------------------------------------------- > ~/tar_fix > diff extract.c_DUP_00 extract.c > 125a126,127 > > /* printf ("File: %s\n", file_name); */ > > > 135c137,139 > < if (permstatus == ARCHIVED_PERMSTATUS > --- > > /* Ivan says: for whatever reason the caller THINKS the mode is ok, > > but it is not, at least under Win NT w/ cygwin */ > > if (0 && permstatus == ARCHIVED_PERMSTATUS > 158a163,164 > > > > /* printf ("File: %s -> mode: %o\n", file_name, mode); */ > ~/tar_fix > > -------------------------------------------------------- > > I don't know if this is the "right" way to fix the problem - probably it > is not! I'll leave it to more knowledgeable people to do the real thing > ... or point the workaround that has been eluding me for that past > year and more :-) -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/