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 59518849 2005-02-11 devnull nsinit(char *name)
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
13 46f79934 2005-01-04 devnull ns = getns();
14 2d70c581 2005-07-13 devnull if(ns == nil){
15 2d70c581 2005-07-13 devnull werrstr("no name space");
16 46f79934 2005-01-04 devnull return nil;
17 2d70c581 2005-07-13 devnull }
18 46f79934 2005-01-04 devnull
19 46f79934 2005-01-04 devnull addr = smprint("unix!%s/%s", ns, name);
20 46f79934 2005-01-04 devnull free(ns);
21 2d70c581 2005-07-13 devnull if(addr == nil){
22 2d70c581 2005-07-13 devnull werrstr("smprint: %r");
23 46f79934 2005-01-04 devnull return nil;
24 2d70c581 2005-07-13 devnull }
25 46f79934 2005-01-04 devnull
26 46f79934 2005-01-04 devnull fd = dial(addr, 0, 0, 0);
27 46f79934 2005-01-04 devnull if(fd < 0){
28 46f79934 2005-01-04 devnull werrstr("dial %s: %r", addr);
29 46f79934 2005-01-04 devnull free(addr);
30 46f79934 2005-01-04 devnull return nil;
31 46f79934 2005-01-04 devnull }
32 46f79934 2005-01-04 devnull free(addr);
33 46f79934 2005-01-04 devnull
34 2d70c581 2005-07-13 devnull fcntl(fd, F_SETFD, FD_CLOEXEC);
35 59518849 2005-02-11 devnull return fsinit(fd);
36 59518849 2005-02-11 devnull }
37 46f79934 2005-01-04 devnull
38 59518849 2005-02-11 devnull CFsys*
39 59518849 2005-02-11 devnull nsmount(char *name, char *aname)
40 59518849 2005-02-11 devnull {
41 59518849 2005-02-11 devnull CFsys *fs;
42 59518849 2005-02-11 devnull CFid *fid;
43 59518849 2005-02-11 devnull
44 59518849 2005-02-11 devnull fs = nsinit(name);
45 59518849 2005-02-11 devnull if(fs == nil)
46 46f79934 2005-01-04 devnull return nil;
47 59518849 2005-02-11 devnull if((fid = fsattach(fs, nil, getuser(), aname)) == nil){
48 59518849 2005-02-11 devnull _fsunmount(fs);
49 59518849 2005-02-11 devnull return nil;
50 46f79934 2005-01-04 devnull }
51 59518849 2005-02-11 devnull fssetroot(fs, fid);
52 46f79934 2005-01-04 devnull return fs;
53 46f79934 2005-01-04 devnull }
54 80ecfd24 2005-02-08 devnull
55 80ecfd24 2005-02-08 devnull CFid*
56 80ecfd24 2005-02-08 devnull nsopen(char *name, char *aname, char *fname, int mode)
57 80ecfd24 2005-02-08 devnull {
58 80ecfd24 2005-02-08 devnull CFsys *fs;
59 80ecfd24 2005-02-08 devnull CFid *fid;
60 80ecfd24 2005-02-08 devnull
61 80ecfd24 2005-02-08 devnull fs = nsmount(name, aname);
62 80ecfd24 2005-02-08 devnull if(fs == nil)
63 80ecfd24 2005-02-08 devnull return nil;
64 80ecfd24 2005-02-08 devnull fid = fsopen(fs, fname, mode);
65 80ecfd24 2005-02-08 devnull fsunmount(fs);
66 80ecfd24 2005-02-08 devnull return fid;
67 80ecfd24 2005-02-08 devnull }