diff options
author | rsc <devnull@localhost> | 2005-01-07 07:19:35 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-01-07 07:19:35 +0000 |
commit | c71af67adc9946fe2a560259f5e79174dfa07e8d (patch) | |
tree | cc0131160eac4270c33edf9fcefadfe18af0944f /src/lib9 | |
parent | 9e863cf5617925a7f7e855207e56f94fc72a662e (diff) | |
download | plan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.tar.gz plan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.tar.bz2 plan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.zip |
do not depend on flock
Diffstat (limited to 'src/lib9')
-rw-r--r-- | src/lib9/open.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib9/open.c b/src/lib9/open.c index 526b2a94..896ca528 100644 --- a/src/lib9/open.c +++ b/src/lib9/open.c @@ -12,6 +12,7 @@ p9open(char *name, int mode) { int cexec, rclose; int fd, umode, lock, rdwr; + struct flock fl; rdwr = mode&3; umode = rdwr; @@ -34,7 +35,11 @@ p9open(char *name, int mode) fd = open(name, umode); if(fd >= 0){ if(lock){ - if(flock(fd, (rdwr==OREAD) ? LOCK_SH : LOCK_EX) < 0){ + fl.l_type = (rdwr==OREAD) ? F_RDLCK : F_WRLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 0; + if(fcntl(fd, F_SETLK, &fl) < 0){ close(fd); return -1; } |