|
|
|
@ -61,7 +61,7 @@ class iniParser(_error):
|
|
|
|
|
"""установка прав создаваемого ini-файла"""
|
|
|
|
|
self.mode = mode
|
|
|
|
|
|
|
|
|
|
def lockfile(self, fd, fn, timeout=5):
|
|
|
|
|
def lockfile(self, fd, fn, timeout=5, readonly=False):
|
|
|
|
|
"""
|
|
|
|
|
Блокировка файла с таймаутом
|
|
|
|
|
"""
|
|
|
|
@ -71,7 +71,10 @@ class iniParser(_error):
|
|
|
|
|
try:
|
|
|
|
|
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
|
|
|
return True
|
|
|
|
|
except IOError, e:
|
|
|
|
|
except IOError as e:
|
|
|
|
|
# dirty hack for lock ini.env on cifs
|
|
|
|
|
if e.errno == errno.EBADF and readonly:
|
|
|
|
|
return False
|
|
|
|
|
if e.errno != errno.EAGAIN:
|
|
|
|
|
raise e
|
|
|
|
|
time.sleep(1)
|
|
|
|
@ -111,7 +114,7 @@ class iniParser(_error):
|
|
|
|
|
if not os.access(self.iniFile, os.R_OK):
|
|
|
|
|
return ""
|
|
|
|
|
self.FD = self._open("r")
|
|
|
|
|
self.lockfile(self.FD.fileno(), self.iniFile)
|
|
|
|
|
self.lockfile(self.FD.fileno(), self.iniFile, readonly=True)
|
|
|
|
|
textIni = self.FD.read()
|
|
|
|
|
return textIni
|
|
|
|
|
|
|
|
|
|