t9pfuse: do not fswalk("..") - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit fa588406f02b5f2adf666211bef03fbee30a61b0
 (DIR) parent 1c78140d83ed1f3a2ced027a64113dcf187971fb
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Mon, 13 Jan 2020 17:07:44 -0500
       
       9pfuse: do not fswalk("..")
       
       f is open, so walk will fail.
       The comments say we only need one directory anyway.
       
       Fixes #277.
       
       Diffstat:
         M src/cmd/9pfuse/main.c               |      17 +++++------------
       
       1 file changed, 5 insertions(+), 12 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c
       t@@ -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)
        {
       t@@ -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)
       t@@ -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;
        }