diff options
author | rsc <devnull@localhost> | 2006-07-26 15:54:41 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-07-26 15:54:41 +0000 |
commit | 143cdf575889feef82ed98a19df8761002d3895f (patch) | |
tree | 9ad08a0def21c2f509df025b62aeec6f2043d579 /src/cmd/9pfuse/main.c | |
parent | 8f8ef0c6a9752494a008d478be391ff915057c2e (diff) | |
download | plan9port-143cdf575889feef82ed98a19df8761002d3895f.tar.gz plan9port-143cdf575889feef82ed98a19df8761002d3895f.tar.bz2 plan9port-143cdf575889feef82ed98a19df8761002d3895f.zip |
FreeBSD fixes (Lou Kamenov)
Diffstat (limited to 'src/cmd/9pfuse/main.c')
-rw-r--r-- | src/cmd/9pfuse/main.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c index f0a9efae..5a2ef8f6 100644 --- a/src/cmd/9pfuse/main.c +++ b/src/cmd/9pfuse/main.c @@ -689,7 +689,7 @@ fuseaccess(FuseMsg *m) { struct fuse_access_in *in; CFid *fid; - int err; + int err, omode; static int a2o[] = { 0, OEXEC, @@ -706,7 +706,14 @@ fuseaccess(FuseMsg *m) replyfuseerrno(m, EINVAL); return; } - if((fid = _fuseopenfid(m->hdr->nodeid, 0, a2o[in->mask], &err)) == nil){ + omode = a2o[in->mask]; + if((fid = nodeid2fid(m->hdr->nodeid)) == nil){ + replyfuseerrno(m, ESTALE); + return; + } + if(fsqid(fid).type&QTDIR) + omode = OREAD; + if((fid = _fuseopenfid(m->hdr->nodeid, 0, omode, &err)) == nil){ replyfuseerrno(m, err); return; } |