1 /* flock.c - manage advisory file locks
3 * Copyright 2015 The Android Open Source Project
5 USE_FLOCK(NEWTOY(flock, "<1>1nsux[-sux]", TOYFLAG_USR|TOYFLAG_BIN))
11 usage: flock [-sxun] fd
13 Manage advisory file locks.
16 -x Exclusive lock (default).
18 -n Non-blocking: fail rather than wait for the lock.
28 int fd = xstrtol(*toys.optargs, NULL, 10), op;
30 if (toys.optflags & FLAG_u) op = LOCK_UN;
31 else op = (toys.optflags & FLAG_s) ? LOCK_SH : LOCK_EX;
33 if (toys.optflags & FLAG_n) op |= LOCK_NB;
36 if ((op & LOCK_NB) && errno == EAGAIN) toys.exitval = 1;
37 else perror_exit("flock");