aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9pfuse/main.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2006-07-26 15:54:41 +0000
committerrsc <devnull@localhost>2006-07-26 15:54:41 +0000
commit143cdf575889feef82ed98a19df8761002d3895f (patch)
tree9ad08a0def21c2f509df025b62aeec6f2043d579 /src/cmd/9pfuse/main.c
parent8f8ef0c6a9752494a008d478be391ff915057c2e (diff)
downloadplan9port-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.c11
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;
}