1#include <stdlib.h>
2#include <unistd.h>
3
4#include "nfs_flock.h"
5
6int lock_reg(int fd, int type, off_t offset, int whence, off_t len, int cmd)
7{
8	struct flock lock;
9
10	lock.l_type = type;
11	lock.l_start = offset;
12	lock.l_whence = whence;
13	lock.l_len = len;
14
15	return (fcntl(fd, cmd, &lock));
16}
17
18int lock_test(int fd, int type, off_t offset, int whence, int len)
19{
20	struct flock lock;
21
22	lock.l_type = type;
23	lock.l_start = offset;
24	lock.l_whence = whence;
25	lock.l_len = len;
26
27	if (fcntl(fd, F_GETLK, &lock) < 0) {
28		perror("F_GETLK");
29		exit(2);
30	}
31
32	if (lock.l_type == F_UNLCK)
33		return (0);
34
35	return (lock.l_pid);
36}
37