Blob
1 #include <u.h>2 #include <libc.h>4 int5 post9pservice(int fd, char *name)6 {7 int i;8 char *ns, *s;9 Waitmsg *w;11 if((ns = getns()) == nil)12 return -1;14 s = smprint("unix!%s/%s", ns, name);15 free(ns);16 if(s == nil)17 return -1;18 switch(fork()){19 case -1:20 return -1;21 case 0:22 dup(fd, 0);23 dup(fd, 1);24 for(i=3; i<20; i++)25 close(i);26 execlp("9pserve", "9pserve", "-u", s, (char*)0);27 fprint(2, "exec 9pserve: %r\n");28 _exits("exec");29 default:30 w = wait();31 if(w == nil)32 return -1;33 close(fd);34 free(s);35 if(w->msg && w->msg[0]){36 free(w);37 werrstr("9pserve failed");38 return -1;39 }40 free(w);41 return 0;42 }43 }