rdiff-backup-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/rpath.py


From: Andrew Ferguson
Subject: [Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/rpath.py
Date: Wed, 17 Dec 2008 23:07:11 +0000

CVSROOT:        /sources/rdiff-backup
Module name:    rdiff-backup
Changes by:     Andrew Ferguson <owsla> 08/12/17 23:07:11

Modified files:
        .              : CHANGELOG 
        rdiff_backup   : rpath.py 

Log message:
        Fix for crash when deleting read-only files on Windows. (Patch from 
Josh Nisly)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/CHANGELOG?cvsroot=rdiff-backup&r1=1.324&r2=1.325
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/rpath.py?cvsroot=rdiff-backup&r1=1.132&r2=1.133

Patches:
Index: CHANGELOG
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/CHANGELOG,v
retrieving revision 1.324
retrieving revision 1.325
diff -u -b -r1.324 -r1.325
--- CHANGELOG   24 Nov 2008 22:07:32 -0000      1.324
+++ CHANGELOG   17 Dec 2008 23:07:11 -0000      1.325
@@ -1,6 +1,8 @@
 New in v1.2.3 (????/??/??)
 ---------------------------
 
+Fix for crash when deleting read-only files on Windows. (Patch from Josh Nisly)
+
 Fix for Python 2.2 in win_acls.py (Closes Savannah bug #24922).
 
 Throttle verbosity of listattr() warning messages from 3 to 4. (Andrew 
Ferguson)

Index: rdiff_backup/rpath.py
===================================================================
RCS file: /sources/rdiff-backup/rdiff-backup/rdiff_backup/rpath.py,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -b -r1.132 -r1.133
--- rdiff_backup/rpath.py       23 Oct 2008 16:31:09 -0000      1.132
+++ rdiff_backup/rpath.py       17 Dec 2008 23:07:11 -0000      1.133
@@ -261,6 +261,7 @@
                                        raise
 
                                # On Windows, files can't be renamed on top of 
an existing file
+                               rp_source.conn.os.chmod(rp_dest.path, 0700)
                                rp_source.conn.os.unlink(rp_dest.path)
                                rp_source.conn.os.rename(rp_source.path, 
rp_dest.path)
                            
@@ -1055,7 +1056,17 @@
                        except os.error:
                                if Globals.fsync_directories: self.fsync()
                                self.conn.shutil.rmtree(self.path)
-               else: self.conn.os.unlink(self.path)
+               else:
+                       try: self.conn.os.unlink(self.path)
+                       except OSError, error:
+                               if error.errno == errno.EPERM:
+                                       # On Windows, read-only files cannot be 
deleted.
+                                       # Remove the read-only attribute and 
try again.
+                                       self.chmod(0700)
+                                       self.conn.os.unlink(self.path)
+                               else:
+                                       raise
+
                self.setdata()
 
        def contains_files(self):




reply via email to

[Prev in Thread] Current Thread [Next in Thread]