# HG changeset patch # User Marcin Kuzminski # Date 1301697737 -7200 # Node ID 07963dd1f0f1ff443d730deb7b786d1db8719887 # Parent 523382549c45e89612beb6e7e3b9762f1c432d87 fixes for issue #133 diff -r 523382549c45 -r 07963dd1f0f1 rhodecode/__init__.py --- a/rhodecode/__init__.py Fri Apr 01 18:46:24 2011 +0200 +++ b/rhodecode/__init__.py Sat Apr 02 00:42:17 2011 +0200 @@ -32,6 +32,9 @@ __dbversion__ = 3 #defines current db version for migrations __platform__ = platform.system() +PLATFORM_WIN = ('Windows',) +PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD',) + try: from rhodecode.lib.utils import get_current_revision _rev = get_current_revision() diff -r 523382549c45 -r 07963dd1f0f1 rhodecode/lib/pidlock.py --- a/rhodecode/lib/pidlock.py Fri Apr 01 18:46:24 2011 +0200 +++ b/rhodecode/lib/pidlock.py Sat Apr 02 00:42:17 2011 +0200 @@ -4,6 +4,19 @@ from multiprocessing.util import Finalize import errno +from rhodecode import __platform__, PLATFORM_WIN + +if __platform__ in PLATFORM_WIN: + import ctypes + def kill(pid): + """kill function for Win32""" + kernel32 = ctypes.windll.kernel32 + handle = kernel32.OpenProcess(1, 0, pid) + return (0 != kernel32.TerminateProcess(handle, 0)) + +else: + kill = os.kill + class LockHeld(Exception):pass @@ -58,9 +71,9 @@ pidfile = open(self.pidfile, "r") pidfile.seek(0) running_pid = int(pidfile.readline()) - + pidfile.close() - + if self.debug: print 'lock file present running_pid: %s, checking for execution'\ % running_pid @@ -68,19 +81,19 @@ # process PID if running_pid: try: - os.kill(running_pid, 0) + kill(running_pid, 0) except OSError, exc: if exc.errno in (errno.ESRCH, errno.EPERM): print "Lock File is there but the program is not running" - print "Removing lock file for the: %s" % running_pid + print "Removing lock file for the: %s" % running_pid self.release() else: raise else: print "You already have an instance of the program running" - print "It is running as process %s" % running_pid + print "It is running as process %s" % running_pid raise LockHeld() - + except IOError, e: if e.errno != 2: raise @@ -90,7 +103,7 @@ """ if self.debug: print 'trying to release the pidlock' - + if self.callbackfn: #execute callback function on release if self.debug: