int main(int argc, char *argv[]) { char *newroot, *init, **initargs; atexit(close_stdout); if (argv[1] && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h"))) usage(stdout); if (argv[1] && (!strcmp(argv[1], "--version") || !strcmp(argv[1], "-V"))) { printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; } if (argc < 3) usage(stderr); newroot = argv[1]; init = argv[2]; initargs = &argv[2]; if (!*newroot || !*init) usage(stderr); if (switchroot(newroot)) errx(EXIT_FAILURE, _("failed. Sorry.")); if (access(init, X_OK)) warn(_("cannot access %s"), init); execv(init, initargs); err(EXIT_FAILURE, _("failed to execute %s"), init); }
int main(int argc, char *argv[]) { char *newroot, *init, **initargs; if (argv[1] && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h"))) usage(stdout); if (argv[1] && (!strcmp(argv[1], "--version") || !strcmp(argv[1], "-V"))) version(); if (argc < 3) usage(stderr); newroot = argv[1]; init = argv[2]; initargs = &argv[2]; if (!*newroot || !*init) usage(stderr); if (switchroot(newroot)) errx(EXIT_FAILURE, "failed. Sorry."); if (access(init, X_OK)) warn("cannot access %s", init); /* get session leader */ setsid(); /* set controlling terminal */ if (ioctl (0, TIOCSCTTY, 1)) warn("failed to TIOCSCTTY"); execv(init, initargs); err(EXIT_FAILURE, "failed to execute %s", init); }