From fa588406f02b5f2adf666211bef03fbee30a61b0 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 13 Jan 2020 17:07:44 -0500 Subject: 9pfuse: do not fswalk("..") f is open, so walk will fail. The comments say we only need one directory anyway. Fixes #277. --- src/cmd/9pfuse/main.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'src/cmd/9pfuse') diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c index 0df61002..69d1ad75 100644 --- a/src/cmd/9pfuse/main.c +++ b/src/cmd/9pfuse/main.c @@ -885,7 +885,7 @@ fusereadlink(FuseMsg *m) * are stored in m->d,nd,d0. */ int canpack(Dir*, uvlong, uchar**, uchar*); -Dir *dotdirs(CFid*); +Dir *dotdir(CFid*); void fusereaddir(FuseMsg *m) { @@ -902,8 +902,8 @@ fusereaddir(FuseMsg *m) if(in->offset == 0){ fsseek(ff->fid, 0, 0); free(ff->d0); - ff->d0 = ff->d = dotdirs(ff->fid); - ff->nd = 2; + ff->d0 = ff->d = dotdir(ff->fid); + ff->nd = 1; } n = in->size; if(n > fusemaxwrite) @@ -944,20 +944,13 @@ out: * We could add .. too, but it isn't necessary. */ Dir* -dotdirs(CFid *f) +dotdir(CFid *f) { Dir *d; - CFid *f1; - d = emalloc(2*sizeof *d); + d = emalloc(1*sizeof *d); d[0].name = "."; d[0].qid = fsqid(f); - d[1].name = ".."; - f1 = fswalk(f, ".."); - if(f1){ - d[1].qid = fsqid(f1); - fsclose(f1); - } return d; } -- cgit v1.2.3