>jw schultz [mailto:[EMAIL PROTECTED]] wrote:
>On Fri, Feb 07, 2003 at 11:15:57AM -0500, Roderick Schertler wrote:
>> Under Aix directories have the mode 024xxxx instead of the customary
>> 04xxxx.  Because of this when you sync a directory to or from an Aix
>> system it's never up to date.
>> 
>> Here is a patch which fixes this.  It causes rsync to look at only the
>> bits that chmod actually influences, 07777, when deciding whether or not
>> the modes differ.
>> 
>> I was surprised there wasn't an existing constant for 07777, but I
>> couldn't find one.  I thought then to exclude the S_IFMT bits, but on
>> Aix that has the usual value of 0170000, so it wouldn't exclude the
>> problematic 0200000 bit.
>
>First, a tecnical note:
>
>Instead of all those ifndef,define,endif lines with
>literals just so you can OR them, cut to the quick with
>
>       #ifndef ALLPERMS
>       #define ALLPERMS 07777
>       #endif
>
>ALLPERMS is a BSDism that even shows up in the linux headers.
>
>Since POSIX and SUSv3 specify that the actual mode_t
>bits are implementation specific I'm just a trifle leery of
>adding this in.  We support some rather strange systems
>although ACCESSPERMS and INITACCESSPERMS don't appear to
>have bitten us so far.  My paranoid side says that the
>actual value should be set in configure and default to ~0.

I did some research and found that ALLPERMS is not in POSIX-96 or POSIX-01. Therefore, 
I don't 
think it is wise to use it in rsync, unless one were to write a full-bore configure 
test, and 
define it if it is not present.

The POSIX-01 description of chmod() says that it changes S_ISUID, S_ISGID, S_ISVTX, 
and the 
file permission bits.  My feeling is that it would be ok to use a mask of those 3 
macros with 
0777; any implementation that doesn't make the file permission bits the low-order 9 
bits with 
their usual definition is insane.

Actually, I think the original definition (below), is just fine, as long as the 
non-POSIX-96 
macro S_ISVTX is handled.
        
        #define CHMOD_BITS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
        
We already define ACCESSPERMS as 0777 in rsync.h, so I used that macro instead of the 
3 S_IRWXx 
macros.  I applied this change, and I also update the call to do_chmod in rsync.c to 
also mask 
down the bits.  rsync will no longer play with the funky system-specific bits. If 
people need 
it to do that, I'd ask that we get patches with configure tests for them.

Roderick, would you please grab a copy of rsync from CVS and retest this change?  You 
can see 
my patch at http://lists.samba.org/pipermail/rsync-cvs/2003-February/date.html


Thanks
PG
--
Paul Green, Senior Technical Consultant, Stratus Technologies.
Voice: +1 978-461-7557; FAX: +1 978-461-3610
Speaking from Stratus not for Stratus



-- 
To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.tuxedo.org/~esr/faqs/smart-questions.html

Reply via email to