Ticket #3707: lockfile-win32.diff

File lockfile-win32.diff, 2.0 KB (added by amaury, 13 years ago)
  • c:/afa/python/Twisted-8.2.0/twisted/python/lockfile.py

    old new  
    2525    _windows = False
    2626except:
    2727    _windows = True
    28     from win32api import OpenProcess
    29     import pywintypes
    3028
    31     ERROR_ACCESS_DENIED = 5
    32     ERROR_INVALID_PARAMETER = 87
     29    try:
     30        from win32api import OpenProcess
     31        import pywintypes
     32    except ImportError:
     33        kill = None
     34    else:
     35        ERROR_ACCESS_DENIED = 5
     36        ERROR_INVALID_PARAMETER = 87
    3337
    34     _open = file
     38        def kill(pid, signal):
     39            try:
     40                OpenProcess(0, 0, pid)
     41            except pywintypes.error, e:
     42                if e.args[0] == ERROR_ACCESS_DENIED:
     43                    return
     44                elif e.args[0] == ERROR_INVALID_PARAMETER:
     45                    raise OSError(errno.ESRCH, None)
     46                raise
     47            else:
     48                raise RuntimeError("OpenProcess is required to fail.")
    3549
    36     def kill(pid, signal):
    37         try:
    38             OpenProcess(0, 0, pid)
    39         except pywintypes.error, e:
    40             if e.args[0] == ERROR_ACCESS_DENIED:
    41                 return
    42             elif e.args[0] == ERROR_INVALID_PARAMETER:
    43                 raise OSError(errno.ESRCH, None)
    44             raise
    45         else:
    46             raise RuntimeError("OpenProcess is required to fail.")
     50    _open = file
    4751
    4852    # XXX Implement an atomic thingamajig for win32
    4953    def symlink(value, filename):
     
    144148                            return False
    145149                        raise
    146150                    try:
    147                         kill(int(pid), 0)
     151                        if kill is not None:
     152                            kill(int(pid), 0)
    148153                    except OSError, e:
    149154                        if e.errno == errno.ESRCH:
    150155                            # The owner has vanished, try to claim it in the next