1 b3994ec5 2003-12-11 devnull #include <u.h>
2 b3994ec5 2003-12-11 devnull #include <libc.h>
5 b3994ec5 2003-12-11 devnull post9pservice(int fd, char *name)
8 b3994ec5 2003-12-11 devnull char *ns, *s;
9 b3994ec5 2003-12-11 devnull Waitmsg *w;
11 b3994ec5 2003-12-11 devnull if((ns = getns()) == nil)
12 b3994ec5 2003-12-11 devnull return -1;
13 b3994ec5 2003-12-11 devnull s = smprint("unix!%s/%s", ns, name);
14 b3994ec5 2003-12-11 devnull free(ns);
15 b3994ec5 2003-12-11 devnull if(s == nil)
16 b3994ec5 2003-12-11 devnull return -1;
17 b3994ec5 2003-12-11 devnull switch(rfork(RFPROC|RFFDG)){
19 b3994ec5 2003-12-11 devnull return -1;
21 b3994ec5 2003-12-11 devnull dup(fd, 0);
22 b3994ec5 2003-12-11 devnull dup(fd, 1);
23 b3994ec5 2003-12-11 devnull for(i=3; i<20; i++)
24 b3994ec5 2003-12-11 devnull close(i);
25 b3994ec5 2003-12-11 devnull execlp("9pserve", "9pserve", "-u", s, (char*)0);
26 b3994ec5 2003-12-11 devnull fprint(2, "exec 9pserve: %r\n");
27 b3994ec5 2003-12-11 devnull _exits("exec");
29 b3994ec5 2003-12-11 devnull w = wait();
30 b3994ec5 2003-12-11 devnull close(fd);
32 b3994ec5 2003-12-11 devnull if(w->msg && w->msg[0]){
34 b3994ec5 2003-12-11 devnull werrstr("9pserve failed");
35 b3994ec5 2003-12-11 devnull return -1;
38 b3994ec5 2003-12-11 devnull return 0;