xref: /plan9-contrib/sys/src/cmd/auth/none.c (revision ec59a3ddbfceee0efe34584c2c9981a5e5ff1ec4)
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4 
5 void
6 main(int argc, char *argv[])
7 {
8 	char cmd[256];
9 	int fd;
10 
11 	argv0 = argv[0];
12 	if (rfork(RFENVG|RFNAMEG) < 0)
13 		sysfatal("can't make new pgrp");
14 
15 	fd = open("#c/user", OWRITE);
16 	if (fd < 0)
17 		sysfatal("can't open #c/user");
18 	if (write(fd, "none", strlen("none")) < 0)
19 		sysfatal("can't become none");
20 	close(fd);
21 
22 	if (newns("none", nil) < 0)
23 		sysfatal("can't build namespace");
24 
25 	if (argc > 1) {
26 		strecpy(cmd, cmd+sizeof cmd, argv[1]);
27 		exec(cmd, &argv[1]);
28 		if (strncmp(cmd, "/", 1) != 0
29 		&& strncmp(cmd, "./", 2) != 0
30 		&& strncmp(cmd, "../", 3) != 0) {
31 			snprint(cmd, sizeof cmd, "/bin/%s", argv[1]);
32 			exec(cmd, &argv[1]);
33 		}
34 	} else {
35 		strcpy(cmd, "/bin/rc");
36 		execl(cmd, cmd, nil);
37 	}
38 	sysfatal(cmd);
39 }
40