]> Cypherpunks.ru repositories - goredo.git/blobdiff - main.go
Replace flock() with fcntl() locks
[goredo.git] / main.go
diff --git a/main.go b/main.go
index f87bdac0d7f97295c88664af3706c20211e2f5be..5bb158b9f3438a137047ae16202241b30e2bdf2f 100644 (file)
--- a/main.go
+++ b/main.go
@@ -227,7 +227,11 @@ func main() {
        if v := os.Getenv(EnvOODTgtsFd); v != "" {
                fd := mustParseFd(v, EnvOODTgtsFd)
                fdLock := mustParseFd(v, EnvOODTgtsLockFd)
-               if err = unix.Flock(int(fdLock.Fd()), unix.LOCK_EX); err != nil {
+               flock := unix.Flock_t{
+                       Type:   unix.F_WRLCK,
+                       Whence: io.SeekStart,
+               }
+               if err = unix.FcntlFlock(fdLock.Fd(), unix.F_SETLKW, &flock); err != nil {
                        log.Fatalln(err)
                }
                if _, err = fd.Seek(0, io.SeekStart); err != nil {
@@ -237,7 +241,8 @@ func main() {
                if err != nil {
                        log.Fatalln(err)
                }
-               if err = unix.Flock(int(fdLock.Fd()), unix.LOCK_UN); err != nil {
+               flock.Type = unix.F_UNLCK
+               if err = unix.FcntlFlock(fdLock.Fd(), unix.F_SETLK, &flock); err != nil {
                        log.Fatalln(err)
                }
                OODTgts = map[string]struct{}{}