hgext/purge.py
changeset 8044 c1e2b7407dc3
parent 8043 b777dd8f7836
child 8076 5ec526c1a32f
--- a/hgext/purge.py	Fri Apr 10 21:20:28 2009 +0200
+++ b/hgext/purge.py	Sat Apr 11 00:13:18 2009 +0200
@@ -73,11 +73,15 @@
             ui.write('%s%s' % (name, eol))
 
     def removefile(path):
-        # read-only files cannot be unlinked under Windows
-        s = os.stat(path)
-        if (s.st_dev & stat.S_IWRITE) == 0:
-            os.chmod(path, s.st_mode | stat.S_IWRITE)
-        os.remove(path)
+        try:
+            os.remove(path)
+        except OSError:
+            # read-only files cannot be unlinked under Windows
+            s = os.stat(path)
+            if (s.st_mode & stat.S_IWRITE) != 0:
+                raise
+            os.chmod(path, stat.S_IMODE(s.st_mode) | stat.S_IWRITE)
+            os.remove(path)
 
     directories = []
     match = cmdutil.match(repo, dirs, opts)