File:
[DVB] /
dietlibc /
lib /
lockf.c
Revision
1.3:
download - view:
text,
annotated -
select for diffs
Thu May 31 17:03:41 2001 UTC (23 years ago) by
fefe
Branches:
MAIN
CVS tags:
finnland_test_200301,
branch_rc14_fieldtest_finnland,
branch_rc13_fieldtest_finnland,
branch_rc12_fieldtest_finnland,
branch_rc10_fieldtest_finnland,
RELEASE_finnland_200301_1,
RC12_FIELDTEST_FINNLAND,
RC10_FIELDTEST_FINNLAND,
HEAD
lots of errno cleanups,
lots of errno related thread-safeness cleanups in librpc (don't ask).
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "dietfeatures.h"
int lockf(int fd, int cmd, off_t len) {
struct flock fl;
fl.l_whence=SEEK_CUR;
fl.l_start=0;
fl.l_len=len;
fl.l_pid=0;
switch (cmd) {
case F_TEST:
if (fcntl(fd,F_GETLK,&fl)<0)
return -1;
if (fl.l_type == F_UNLCK || fl.l_pid == getpid ())
return 0;
errno=EACCES;
return -1;
case F_ULOCK:
fl.l_type=F_UNLCK;
cmd=F_SETLK;
break;
case F_LOCK:
fl.l_type = F_WRLCK;
cmd = F_SETLKW;
break;
case F_TLOCK:
fl.l_type = F_WRLCK;
cmd = F_SETLK;
break;
default:
errno=EINVAL;
return -1;
}
return fcntl(fd,cmd,&fl);
}
LinuxTV legacy CVS <linuxtv.org/cvs>