diff --git a/games/rogue/machdep.c b/games/rogue/machdep.c index ae9e39a..0c6a11e 100644 --- a/games/rogue/machdep.c +++ b/games/rogue/machdep.c @@ -536,14 +536,22 @@ md_lock(boolean l) void md_shell(const char *shell) { - long w[2]; - - if (!fork()) { + int w; + pid_t pid; + + pid = fork(); + switch (pid) { + case -1: + break; + case 0: /* revoke */ setgid(getgid()); - execl(shell, shell, NULL); + execl(shell, shell, (char *)NULL); + _exit(255); + default: + waitpid(pid, &w, 0); + break; } - wait((int *)w); } #endif /* UNIX */