/* See LICENSE file for copyright and license details. */ #include #include #include "util.h" static void usage(void) { eprintf("usage: %s cmd [arg ...]\n", argv0); } int main(int argc, char *argv[]) { int savederrno; argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0; if (!argc) usage(); if (getpgrp() == getpid()) { switch (fork()) { case -1: eprintf("fork:"); case 0: break; default: return 0; } } if (setsid() < 0) eprintf("setsid:"); execvp(argv[0], argv); savederrno = errno; weprintf("execvp %s:", argv[0]); _exit(126 + (savederrno == ENOENT)); }