URI: 
       tadd fsamount, nsamount; use ndb for authdial; use explicit %# - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 42400cf81f4fb04897bc1b609fc08720bc542df8
   DIR parent 59518849d81a71284b90513f6ba76770b42ce32b
  HTML Author: rsc <devnull@localhost>
       Date:   Fri, 11 Feb 2005 17:01:18 +0000
       
       add fsamount, nsamount; use ndb for authdial; use explicit %#
       
       Diffstat:
         A src/libauth/fsamount.c              |      33 +++++++++++++++++++++++++++++++
         M src/libauth/mkfile                  |       2 ++
         A src/libauth/nsamount.c              |      33 +++++++++++++++++++++++++++++++
       
       3 files changed, 68 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/src/libauth/fsamount.c b/src/libauth/fsamount.c
       t@@ -0,0 +1,33 @@
       +#include <u.h>
       +#include <libc.h>
       +#include <auth.h>
       +#include <thread.h>
       +#include <9pclient.h>
       +#include "authlocal.h"
       +
       +CFsys*
       +fsamount(int fd, char *aname)
       +{
       +        CFid *afid, *fid;
       +        AuthInfo *ai;
       +        CFsys *fs;
       +        
       +        fs = fsinit(fd);
       +        if(fs == nil)
       +                return nil;
       +        if((afid = fsauth(fs, getuser(), aname)) == nil)
       +                goto noauth;
       +        ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client");
       +        if(ai != nil)
       +                auth_freeAI(ai);
       +noauth:
       +        fid = fsattach(fs, afid, getuser(), aname);
       +        fsclose(afid);
       +        if(fid == nil){
       +                _fsunmount(fs);
       +                return nil;
       +        }
       +        fssetroot(fs, fid);
       +        return fs;
       +}
       +
   DIR diff --git a/src/libauth/mkfile b/src/libauth/mkfile
       t@@ -16,9 +16,11 @@ OFILES=\
                auth_rpc.$O\
                auth_userpasswd.$O\
                auth_wep.$O\
       +        fsamount.$O\
                login.$O\
        #        newns.$O\
        #        noworld.$O\
       +        nsamount.$O\
        
        HFILES=\
                $PLAN9/include/auth.h\
   DIR diff --git a/src/libauth/nsamount.c b/src/libauth/nsamount.c
       t@@ -0,0 +1,33 @@
       +#include <u.h>
       +#include <libc.h>
       +#include <auth.h>
       +#include <thread.h>
       +#include <9pclient.h>
       +#include "authlocal.h"
       +
       +CFsys*
       +nsamount(char *name, char *aname)
       +{
       +        CFid *afid, *fid;
       +        AuthInfo *ai;
       +        CFsys *fs;
       +        
       +        fs = nsinit(name);
       +        if(fs == nil)
       +                return nil;
       +        if((afid = fsauth(fs, getuser(), aname)) == nil)
       +                goto noauth;
       +        ai = fsauth_proxy(afid, amount_getkey, "proto=p9any role=client");
       +        if(ai != nil)
       +                auth_freeAI(ai);
       +noauth:
       +        fid = fsattach(fs, afid, getuser(), aname);
       +        fsclose(afid);
       +        if(fid == nil){
       +                _fsunmount(fs);
       +                return nil;
       +        }
       +        fssetroot(fs, fid);
       +        return fs;
       +}
       +