# Initialize # # Douglas Thrift # # $Id$ import os import socket import sys path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) if path not in sys.path: sys.path.insert(0, path) path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'lib')) if path not in sys.path: sys.path.insert(0, path) del path os.environ['DJANGO_SETTINGS_MODULE'] = 'ccscslab.settings' if socket.gethostname() != 'wireless.ccs.ucsb.edu' else 'ccscslab.settings.wireless' def lock(debug, file = sys.argv[0]): import atexit import tempfile dir = os.path.join(tempfile.gettempdir(), '.ccscslab') root = os.getuid() == 0 if root: os.seteuid(1001) if not os.path.exists(dir): os.mkdir(dir, 0700) file = os.path.join(dir, os.path.basename(file)) try: fd = os.open(file, os.O_WRONLY | os.O_NONBLOCK | os.O_CREAT | os.O_EXLOCK, 0600) except OSError, error: import errno if error.errno == errno.EWOULDBLOCK: if debug: print 'lock:\n %s\n locked' % file sys.exit(1) else: raise if debug: print 'lock:\n %s\n locking' % file @atexit.register def unlock(): os.close(fd) if debug: print 'lock:\n %s\n unlocked' % file if root: os.seteuid(0)