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 }
41 80ecfd24 2005-02-08 devnull
42 80ecfd24 2005-02-08 devnull CFid*
43 80ecfd24 2005-02-08 devnull nsopen(char *name, char *aname, char *fname, int mode)
44 80ecfd24 2005-02-08 devnull {
45 80ecfd24 2005-02-08 devnull CFsys *fs;
46 80ecfd24 2005-02-08 devnull CFid *fid;
47 80ecfd24 2005-02-08 devnull
48 80ecfd24 2005-02-08 devnull fs = nsmount(name, aname);
49 80ecfd24 2005-02-08 devnull if(fs == nil)
50 80ecfd24 2005-02-08 devnull return nil;
51 80ecfd24 2005-02-08 devnull fid = fsopen(fs, fname, mode);
52 80ecfd24 2005-02-08 devnull fsunmount(fs);
53 80ecfd24 2005-02-08 devnull return fid;
54 80ecfd24 2005-02-08 devnull }
55 80ecfd24 2005-02-08 devnull