--- /sys/src/cmd/ip/ftpfs/ftpfs.c Sat Dec 31 17:31:22 2016 +++ ftpfs.c Mon Feb 12 17:21:42 2018 @@ -85,6 +85,7 @@ char *nosuchfile = "file does not exist"; char *keyspec = ""; +int docache = 0; void usage(void) @@ -149,6 +150,9 @@ case 'q': quiet = 1; break; + case 'h': + docache = 1; + break; } ARGEND if(argc != 1) usage(); @@ -401,7 +405,7 @@ /* everything else */ node = extendpath(node, s_copy(elems[i])); - if(ISCACHED(node->parent)){ + if(docache && ISCACHED(node->parent)){ /* the cache of the parent is good, believe it */ if(!ISVALID(node)){ err = nosuchfile; @@ -454,7 +458,7 @@ filedirty(f->node); } else { /* read the remote file or directory */ - if(!ISCACHED(f->node)){ + if(!docache || !ISCACHED(f->node)){ filefree(f->node); if(f->node->d->qid.type & QTDIR){ invalidate(f->node); @@ -464,7 +468,8 @@ if(readfile(f->node) < 0) return errstring; } - CACHED(f->node); + if(docache) + CACHED(f->node); } } @@ -534,10 +539,11 @@ } } else { /* reread file if it's fallen out of the cache */ - if(!ISCACHED(f->node)) + if(!docache || !ISCACHED(f->node)) if(readfile(f->node) < 0) return errstring; - CACHED(f->node); + if(docache) + CACHED(f->node); rv = fileread(f->node, (char*)mbuf, off, cnt); if(rv < 0) return errstring; @@ -614,10 +620,11 @@ Node *p; p = f->node->parent; - if(!ISCACHED(p)){ + if(!docache || !ISCACHED(p)){ invalidate(p); readdir(p); - CACHED(p); + if(docache) + CACHED(p); } if(!ISVALID(f->node)) return nosuchfile;