87 int myflock(
int fd,
int lock_style,
int operation)
95 msg_panic(
"myflock: improper operation type: 0x%x", operation);
102 #ifdef HAS_FLOCK_LOCK
105 static int lock_ops[] = {
106 LOCK_UN, LOCK_SH, LOCK_EX, -1,
107 -1, LOCK_SH | LOCK_NB, LOCK_EX | LOCK_NB, -1
110 while ((status = flock(fd, lock_ops[operation])) < 0
121 #ifdef HAS_FCNTL_LOCK
126 static int lock_ops[] = {
127 F_UNLCK, F_RDLCK, F_WRLCK
130 memset((
void *) &lock, 0,
sizeof(lock));
133 while ((status = fcntl(fd, request, &lock)) < 0
140 msg_panic(
"myflock: unsupported lock style: 0x%x", lock_style);
148 if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EACCES)
NORETURN msg_panic(const char *fmt,...)
#define MYFLOCK_OP_NOWAIT
int myflock(int fd, int lock_style, int operation)
#define MYFLOCK_STYLE_FLOCK
#define MYFLOCK_STYLE_FCNTL