---
 src/cmd/9pfuse/main.c | 15 ++++++++++-----
 src/lib9pclient/fs.c  |  5 +++--
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c
index ca9f3872..bc76b16d 100644
--- a/src/cmd/9pfuse/main.c
+++ b/src/cmd/9pfuse/main.c
@@ -61,6 +61,7 @@
 
 int debug;
 char *aname = "";
+char *uname = "";
 void fusedispatch(void*);
 Channel *fusechan;
 
@@ -85,12 +86,12 @@ double entrytimeout = 1.0;
 
 CFsys *fsys;
 CFid *fsysroot;
-void init9p(char*, char*);
+void init9p(char*, char*, char*);
 
 void
 usage(void)
 {
-       fprint(2, "usage: 9pfuse [-D] [-A attrtimeout] [-a aname] address 
mtpt\n");
+       fprint(2, "usage: 9pfuse [-D] [-A attrtimeout] [-a aname] [-u uname] 
address mtpt\n");
        exit(1);
 }
 
@@ -106,6 +107,7 @@ threadmaybackground(void)
 void
 threadmain(int argc, char **argv)
 {
+       uname = getuser();
        ARGBEGIN{
        case 'D':
                chatty9pclient++;
@@ -117,6 +119,9 @@ threadmain(int argc, char **argv)
        case 'a':
                aname = EARGF(usage());
                break;
+       case 'u':
+               uname = EARGF(usage());
+               break;
        default:
                usage();
        }ARGEND
@@ -131,7 +136,7 @@ threadmain(int argc, char **argv)
 
        setsid();       /* won't be able to use console, but can't be 
interrupted */
 
-       init9p(argv[0], aname);
+       init9p(argv[0], aname, uname);
        initfuse(argv[1]);
 
        fusechan = chancreate(sizeof(void*), 0);
@@ -160,7 +165,7 @@ fusereader(void *v)
 }
 
 void
-init9p(char *addr, char *spec)
+init9p(char *addr, char *spec, char *uname)
 {
        int fd;
 
@@ -170,7 +175,7 @@ init9p(char *addr, char *spec)
                if((fd = dial(netmkaddr(addr, "tcp", "564"), nil, nil, nil)) < 
0)
                        sysfatal("dial %s: %r", addr);
        proccreate(watchfd, (void*)(uintptr)fd, STACK);
-       if((fsys = fsmount(fd, spec)) == nil)
+       if((fsys = fsmount(fd, spec, uname)) == nil)
                sysfatal("fsmount: %r");
        fsysroot = fsroot(fsys);
 }
diff --git a/src/lib9pclient/fs.c b/src/lib9pclient/fs.c
index f1b9b085..0088375e 100644
--- a/src/lib9pclient/fs.c
+++ b/src/lib9pclient/fs.c
@@ -66,8 +66,9 @@ fsroot(CFsys *fs)
        return fs->root;
 }
 
+
 CFsys*
-fsmount(int fd, char *aname)
+fsmount(int fd, char *aname, char *uname)
 {
        CFsys *fs;
        CFid *fid;
@@ -76,7 +77,7 @@ fsmount(int fd, char *aname)
        if(fs == nil)
                return nil;
 
-       if((fid = fsattach(fs, nil, getuser(), aname)) == nil){
+       if((fid = fsattach(fs, nil, uname, aname)) == nil){
                _fsunmount(fs);
                return nil;
        }
-- 
2.46.4

Reply via email to