tvftp: walk fixes (Fazlul Shahriar) - 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 ff086a82325b22fcbd373edecfc3870e95049401
 (DIR) parent d29f5ece8b534180076e2859dcc014b3c36b00cf
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Sun,  1 Jun 2008 08:50:49 -0400
       
       vftp: walk fixes (Fazlul Shahriar)
       
       Diffstat:
         M src/cmd/vbackup/vftp.c              |      15 ++++++++++++++-
       
       1 file changed, 14 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/src/cmd/vbackup/vftp.c b/src/cmd/vbackup/vftp.c
       t@@ -54,6 +54,16 @@ ebuf(void)
                return buf;
        }
        
       +static char*
       +estrdup(char *s)
       +{
       +        char *t;
       +        
       +        t = emalloc(strlen(s)+1);
       +        strcpy(t, s);
       +        return t;
       +}
       +
        char*
        walk(char *path, Nfs3Handle *ph)
        {
       t@@ -61,6 +71,7 @@ walk(char *path, Nfs3Handle *ph)
                Nfs3Handle h;
                Nfs3Status ok;
                
       +        path = estrdup(path); /* writable */
                if(path[0] == '/')
                        h = root;
                else
       t@@ -75,10 +86,12 @@ walk(char *path, Nfs3Handle *ph)
                                continue;
                        if((ok = fsyslookup(fsys, auth, &h, p, &h)) != Nfs3Ok){
                                nfs3errstr(ok);
       +                        free(path);
                                return ebuf();
                        }
                }
                *ph = h;
       +        free(path);
                return nil;
        }
        
       t@@ -107,7 +120,7 @@ cmdcd(int argc, char **argv)
                        return err;
                if((ok = fsysgetattr(fsys, auth, &h, &attr)) != Nfs3Ok){
                        nfs3errstr(ok);
       -                fprint(2, "%s: %r\n");
       +                fprint(2, "%s: %r\n", argv[1]);
                        return nil;
                }
                if(attr.type != Nfs3FileDir)