xref: /plan9/sys/src/libauth/amount.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
3219b2ee8SDavid du Colombier #include <auth.h>
4*9a747e4fSDavid du Colombier #include "authlocal.h"
5219b2ee8SDavid du Colombier 
6219b2ee8SDavid du Colombier int
amount(int fd,char * mntpt,int flags,char * aname)7*9a747e4fSDavid du Colombier amount(int fd, char *mntpt, int flags, char *aname)
8219b2ee8SDavid du Colombier {
9*9a747e4fSDavid du Colombier 	int rv, afd;
10*9a747e4fSDavid du Colombier 	AuthInfo *ai;
11*9a747e4fSDavid du Colombier 
12*9a747e4fSDavid du Colombier 	afd = fauth(fd, aname);
13*9a747e4fSDavid du Colombier 	if(afd >= 0){
14*9a747e4fSDavid du Colombier 		ai = auth_proxy(afd, amount_getkey, "proto=p9any role=client");
15*9a747e4fSDavid du Colombier 		if(ai != nil)
16*9a747e4fSDavid du Colombier 			auth_freeAI(ai);
17*9a747e4fSDavid du Colombier 	}
18*9a747e4fSDavid du Colombier 	rv = mount(fd, afd, mntpt, flags, aname);
19*9a747e4fSDavid du Colombier 	if(afd >= 0)
20*9a747e4fSDavid du Colombier 		close(afd);
21*9a747e4fSDavid du Colombier 	return rv;
22219b2ee8SDavid du Colombier }
23