#include #include #include void main(int argc, char *argv[]) { char cmd[256]; int fd; argv0 = argv[0]; if (rfork(RFENVG|RFNAMEG) < 0) sysfatal("can't make new pgrp"); fd = open("#c/user", OWRITE); if (fd < 0) sysfatal("can't open #c/user"); if (write(fd, "none", strlen("none")) < 0) sysfatal("can't become none"); close(fd); if (newns("none", nil) < 0) sysfatal("can't build namespace"); if (argc > 1) { strncpy(cmd, argv[1], sizeof(cmd)); exec(cmd, &argv[1]); if (strncmp(cmd, "/", 1) != 0 && strncmp(cmd, "./", 2) != 0 && strncmp(cmd, "../", 3) != 0) { snprint(cmd, sizeof(cmd), "/bin/%s", argv[1]); exec(cmd, &argv[1]); } } else { strcpy(cmd, "/bin/rc"); execl(cmd, cmd, nil); } sysfatal(cmd); }