]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/auth/none.c
merge
[plan9front.git] / sys / src / cmd / auth / none.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 = nil;
9
10 void
11 usage(void)
12 {
13         fprint(2, "usage: %s [-d] [-n namespace] [cmd [args...]]\n", argv0);
14         exits("usage");
15 }
16
17 void
18 run(char **a)
19 {
20         exec(a[0], a);
21
22         if(a[0][0] != '/' && a[0][0] != '#' &&
23           (a[0][0] != '.' || (a[0][1] != '/' &&
24                              (a[0][1] != '.' ||  a[0][2] != '/'))))
25                 exec(smprint("/bin/%s", a[0]), a);
26
27         sysfatal("exec: %s: %r", a[0]);
28 }
29
30 void
31 main(int argc, char *argv[])
32 {
33         int fd;
34
35         ARGBEGIN{
36         case 'd':
37                 newnsdebug = 1;
38                 break;
39         case 'n':
40                 namespace = EARGF(usage());
41                 break;
42         default:
43                 usage();
44         }ARGEND
45
46         fd = open("#c/user", OWRITE);
47         if(fd < 0)
48                 sysfatal("can't open #c/user: %r");
49         if(write(fd, "none", strlen("none")) < 0)
50                 sysfatal("can't become none: %r");
51         close(fd);
52
53         if(newns("none", namespace) < 0)
54                 sysfatal("can't build namespace: %r");
55
56         if(argc == 0)
57                 argv = defargv;
58
59         run(argv);
60 }