X-Git-Url: http://git.samba.org/samba.git/?p=rsync.git;a=blobdiff_plain;f=util.c;h=7d15a8a605c973fbfe0fd264a19421299adcb816;hp=bcbd8c1b83648c940beeacb15a3be05af28e3d77;hb=31593dd6106cfef78fc88cbe9c831a51f00a4aa6;hpb=91eee5946ad6d033303abfe184085c87a283da29 diff --git a/util.c b/util.c index bcbd8c1b..7d15a8a6 100644 --- a/util.c +++ b/util.c @@ -491,12 +491,16 @@ int process_exists(int pid) return(kill(pid,0) == 0 || errno != ESRCH); } -int lock_file(int fd) +/* lock a byte range in a open file */ +int lock_range(int fd, int offset, int len) { - return flock(fd, LOCK_EX) == 0; -} + struct flock lock; -int unlock_file(int fd) -{ - return flock(fd, LOCK_UN) == 0; + lock.l_type = F_WRLCK; + lock.l_whence = SEEK_SET; + lock.l_start = offset; + lock.l_len = len; + lock.l_pid = 0; + + return fcntl(fd,F_SETLK,&lock) == 0; }