]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/auth/newns.c
merge
[plan9front.git] / sys / src / cmd / auth / newns.c
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4
5 extern int newnsdebug;
6
7 char    *defargv[] = { "/bin/rc", "-i", nil };
8 char    *namespace = "/lib/namespace";
9 int     add = 0;
10
11 void
12 usage(void)
13 {
14         fprint(2, "usage: %s [-ad] [-n namespace] [cmd [args...]]\n", argv0);
15         exits("usage");
16 }
17
18 void
19 run(char **a)
20 {
21         exec(a[0], a);
22
23         if(a[0][0] != '/' && a[0][0] != '#' &&
24           (a[0][0] != '.' || (a[0][1] != '/' &&
25                              (a[0][1] != '.' ||  a[0][2] != '/'))))
26                 exec(smprint("/bin/%s", a[0]), a);
27
28         sysfatal("exec: %s: %r", a[0]);
29 }
30
31 void
32 main(int argc, char **argv)
33 {
34         ARGBEGIN{
35         case 'a':
36                 add = 1;
37                 break;
38         case 'd':
39                 newnsdebug = 1;
40                 break;
41         case 'n':
42                 namespace = EARGF(usage());
43                 break;
44         default:
45                 usage();
46                 break;
47         }ARGEND
48
49         if(add){
50                 rfork(RFNAMEG);
51                 addns(getuser(), namespace);
52         }else
53                 newns(getuser(), namespace);
54
55         if(argc == 0)
56                 argv = defargv;
57
58         run(argv);
59 }