Blame


1 46f79934 2005-01-04 devnull #include <u.h>
2 46f79934 2005-01-04 devnull #include <libc.h>
3 46f79934 2005-01-04 devnull #include <fcall.h>
4 46f79934 2005-01-04 devnull #include <9pclient.h>
5 46f79934 2005-01-04 devnull #include <ctype.h>
6 46f79934 2005-01-04 devnull
7 46f79934 2005-01-04 devnull CFsys*
8 46f79934 2005-01-04 devnull nsmount(char *name, char *aname)
9 46f79934 2005-01-04 devnull {
10 46f79934 2005-01-04 devnull char *addr, *ns;
11 46f79934 2005-01-04 devnull int fd;
12 46f79934 2005-01-04 devnull CFsys *fs;
13 46f79934 2005-01-04 devnull
14 46f79934 2005-01-04 devnull ns = getns();
15 46f79934 2005-01-04 devnull if(ns == nil)
16 46f79934 2005-01-04 devnull return nil;
17 46f79934 2005-01-04 devnull
18 46f79934 2005-01-04 devnull addr = smprint("unix!%s/%s", ns, name);
19 46f79934 2005-01-04 devnull free(ns);
20 46f79934 2005-01-04 devnull if(addr == nil)
21 46f79934 2005-01-04 devnull return nil;
22 46f79934 2005-01-04 devnull
23 46f79934 2005-01-04 devnull fd = dial(addr, 0, 0, 0);
24 46f79934 2005-01-04 devnull if(fd < 0){
25 46f79934 2005-01-04 devnull werrstr("dial %s: %r", addr);
26 46f79934 2005-01-04 devnull free(addr);
27 46f79934 2005-01-04 devnull return nil;
28 46f79934 2005-01-04 devnull }
29 46f79934 2005-01-04 devnull free(addr);
30 46f79934 2005-01-04 devnull
31 46f79934 2005-01-04 devnull fcntl(fd, F_SETFL, FD_CLOEXEC);
32 46f79934 2005-01-04 devnull
33 46f79934 2005-01-04 devnull fs = fsmount(fd, aname);
34 46f79934 2005-01-04 devnull if(fs == nil){
35 46f79934 2005-01-04 devnull close(fd);
36 46f79934 2005-01-04 devnull return nil;
37 46f79934 2005-01-04 devnull }
38 46f79934 2005-01-04 devnull
39 46f79934 2005-01-04 devnull return fs;
40 46f79934 2005-01-04 devnull }