aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-07 07:19:35 +0000
committerrsc <devnull@localhost>2005-01-07 07:19:35 +0000
commitc71af67adc9946fe2a560259f5e79174dfa07e8d (patch)
treecc0131160eac4270c33edf9fcefadfe18af0944f /src
parent9e863cf5617925a7f7e855207e56f94fc72a662e (diff)
downloadplan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.tar.gz
plan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.tar.bz2
plan9port-c71af67adc9946fe2a560259f5e79174dfa07e8d.zip
do not depend on flock
Diffstat (limited to 'src')
-rw-r--r--src/lib9/open.c7
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;
}