[llvm-commits] [llvm] r152915 - /llvm/trunk/utils/lit/lit/TestRunner.py

NAKAMURA Takumi geek4civic at gmail.com
Fri Mar 16 03:48:03 PDT 2012


Author: chapuni
Date: Fri Mar 16 05:48:03 2012
New Revision: 152915

URL: http://llvm.org/viewvc/llvm-project?rev=152915&view=rev
Log:
lit/TestRunner.py: [Win32] Rework WinWaitReleased().

We can simply confirm the handle released to open it with EXCLUSIVE. Attempting renaming was bad.

Modified:
    llvm/trunk/utils/lit/lit/TestRunner.py

Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=152915&r1=152914&r2=152915&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Fri Mar 16 05:48:03 2012
@@ -29,12 +29,20 @@
     except OSError:
         pass
 
-def WinRename(f_o, f_n):
-    import time
+def WinWaitReleased(f):
+    import time, win32file
     retry_cnt = 256
-    while (True):
+    while True:
         try:
-            os.rename(f_o, f_n)
+            h = win32file.CreateFile(
+                f,
+                0, # Querying, neither GENERIC_READ nor GENERIC_WRITE
+                0, # Exclusive
+                None,
+                win32file.OPEN_EXISTING,
+                win32file.FILE_ATTRIBUTE_NORMAL,
+                None)
+            h.close()
             break
         except WindowsError, (winerror, strerror):
             retry_cnt = retry_cnt - 1
@@ -45,21 +53,6 @@
             else:
                 raise
 
-def WinWaitReleased(f):
-    import random
-    t = "%s%06d" % (f, random.randint(0, 999999))
-    RemoveForce(t)
-    try:
-        WinRename(f, t) # rename
-        WinRename(t, f) # restore
-    except WindowsError, (winerror, strerror):
-        if winerror in (2, 3):
-            # 2: ERROR_FILE_NOT_FOUND
-            # 3: ERROR_PATH_NOT_FOUND
-            pass
-        else:
-            raise
-
 def executeCommand(command, cwd=None, env=None):
     p = subprocess.Popen(command, cwd=cwd,
                          stdin=subprocess.PIPE,





More information about the llvm-commits mailing list