Subject: Re: tar won't restore permissions
From: "Andrew Chang" <[email-masked]>
To: "Ivan Dobrianov" <[email-masked]>, <[email-masked]>
Cc: <[email-masked]>
Date: Mon, 8 Apr 2002 18:19:36 -0700

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-masked]>
To: <[email-masked]>
Cc: <[email-masked]>; <[email-masked]>
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/