21 #if defined(R__WIN32) && !defined(R__WINGCC)
26 #define O_CREAT _O_CREAT
27 #define O_RDWR _O_RDWR
36 TLockPath::TLockPath(
const char *path) : fName(path), fLockId(-1)
39 if (gSystem->ExpandPathName(fName))
40 Warning(
"TLockPath",
"problems expanding path '%s'", fName.Data());
43 Int_t TLockPath::Lock(Bool_t shared)
45 const char *pname = GetName();
47 if (gSystem->AccessPathName(pname))
48 fLockId = open(pname, O_CREAT | O_RDWR, 0644);
50 fLockId = open(pname, O_RDWR);
53 SysError(
"Lock",
"cannot open lock file %s", pname);
58 Info(
"Lock",
"%d: locking file %s ...", gSystem->GetPid(), pname);
60 #if !defined(R__WIN32) && !defined(R__WINGCC)
61 int op = (shared) ? LOCK_SH : LOCK_EX ;
62 if (flock(fLockId, op) == -1) {
63 SysError(
"Lock",
"error locking %s", pname);
71 Info(
"Lock",
"%d: file %s locked", gSystem->GetPid(), pname);
80 Int_t TLockPath::Unlock()
86 Info(
"Unlock",
"%d: unlocking file %s ...", gSystem->GetPid(), GetName());
88 lseek(fLockId, 0, SEEK_SET);
89 #if !defined(R__WIN32) && !defined(R__WINGCC)
90 if (flock(fLockId, LOCK_UN) == -1) {
91 SysError(
"Unlock",
"error unlocking %s", GetName());
99 Info(
"Unlock",
"%d: file %s unlocked", gSystem->GetPid(), GetName());