Blair Zajac wrote:
>> diff -Nur rdiff-backup-cvs/rdiff_backup/rpath.py rdiff-backup- 
>> symlink-perms/rdiff_backup/rpath.py
>> --- rdiff-backup-cvs/rdiff_backup/rpath.py   2006-01-13  
>> 00:29:47.000000000 -0500
>> +++ rdiff-backup-symlink-perms/rdiff_backup/rpath.py 2006-11-04  
>> 15:55:39.000000000 -0500
>> @@ -100,7 +100,12 @@
>>
>>      if rpin.isreg(): return copy_reg_file(rpin, rpout, compress)
>>      elif rpin.isdir(): rpout.mkdir()
>> -    elif rpin.issym(): rpout.symlink(rpin.readlink())
>> +    elif rpin.issym():
>> +            # some systems support permissions for symlinks, but
>> +            # only by setting at creation via the umask
>> +            os.umask(0777 - rpin.getperms())
>> +            rpout.symlink(rpin.readlink())
>> +            os.umask(077)   # restore rdiff-backup standard umask
> 
> I think it would be clearer to do something like this saving the  
> current result of the umask, so if the umask is changed anywhere  
> else, it'll always be restored:
> 
>               # some systems support permissions for symlinks, but
>               # only by setting at creation via the umask
>               orig_umask = os.umask(0777 - rpin.getperms())
>               rpout.symlink(rpin.readlink())
>               os.umask(orig_umask)

Indeed. Thanks, Blair.

Dean, can you apply the attached patch to CVS?

Andrew

-- 
Andrew Ferguson - [EMAIL PROTECTED]

diff -Nur rdiff-backup-cvs/rdiff_backup/rpath.py 
rdiff-backup-umaskfix/rdiff_backup/rpath.py
--- rdiff-backup-cvs/rdiff_backup/rpath.py      2006-11-04 21:43:10.000000000 
-0500
+++ rdiff-backup-umaskfix/rdiff_backup/rpath.py 2006-11-05 13:16:57.000000000 
-0500
@@ -103,9 +103,9 @@
        elif rpin.issym():
                # some systems support permissions for symlinks, but
                # only by setting at creation via the umask
-               os.umask(0777 - rpin.getperms())
+               orig_umask = os.umask(0777 - rpin.getperms())
                rpout.symlink(rpin.readlink())
-               os.umask(077)   # restore rdiff-backup standard umask
+               os.umask(orig_umask)    # restore previous umask
        elif rpin.ischardev():
                major, minor = rpin.getdevnums()
                rpout.makedev("c", major, minor)
_______________________________________________
rdiff-backup-users mailing list at [email protected]
http://lists.nongnu.org/mailman/listinfo/rdiff-backup-users
Wiki URL: http://rdiff-backup.solutionsfirst.com.au/index.php/RdiffBackupWiki

Reply via email to