diff options
Diffstat (limited to 'src/lib9pclient/ns.c')
| -rw-r--r-- | src/lib9pclient/ns.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/lib9pclient/ns.c b/src/lib9pclient/ns.c index 428f7fbb..c71defd6 100644 --- a/src/lib9pclient/ns.c +++ b/src/lib9pclient/ns.c @@ -5,11 +5,10 @@ #include <ctype.h> CFsys* -nsmount(char *name, char *aname) +nsinit(char *name) { char *addr, *ns; int fd; - CFsys *fs; ns = getns(); if(ns == nil) @@ -29,13 +28,23 @@ nsmount(char *name, char *aname) free(addr); fcntl(fd, F_SETFL, FD_CLOEXEC); + return fsinit(fd); +} + +CFsys* +nsmount(char *name, char *aname) +{ + CFsys *fs; + CFid *fid; - fs = fsmount(fd, aname); - if(fs == nil){ - close(fd); + fs = nsinit(name); + if(fs == nil) + return nil; + if((fid = fsattach(fs, nil, getuser(), aname)) == nil){ + _fsunmount(fs); return nil; } - + fssetroot(fs, fid); return fs; } |
