mercurial/pure/osutil.py
changeset 19465 004f965630d9
parent 18959 2f6418d8a4c9
child 25645 977102cb12fc
--- a/mercurial/pure/osutil.py	Wed Jul 17 10:40:40 2013 -0400
+++ b/mercurial/pure/osutil.py	Fri Jul 12 11:14:42 2013 +0900
@@ -59,6 +59,7 @@
     posixfile = open
 else:
     import ctypes, msvcrt
+    from errno import ESRCH, ENOENT
 
     _kernel32 = ctypes.windll.kernel32
 
@@ -98,7 +99,14 @@
 
     def _raiseioerror(name):
         err = ctypes.WinError()
-        raise IOError(err.errno, '%s: %s' % (name, err.strerror))
+        # For python 2.4, treat ESRCH as ENOENT like WindowsError does
+        # in python 2.5 or later.
+        # py24:           WindowsError(3, '').errno => 3
+        # py25 or later:  WindowsError(3, '').errno => 2
+        errno = err.errno
+        if errno == ESRCH:
+            errno = ENOENT
+        raise IOError(errno, '%s: %s' % (name, err.strerror))
 
     class posixfile(object):
         '''a file object aiming for POSIX-like semantics