From: Jan-Simon Pendry Date: Sat, 2 Apr 1994 22:42:03 +0000 (-0800) Subject: rework susystem X-Git-Tag: BSD-4_4_Lite2-Snapshot-Development~2882 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/0bcf7a5b0974cec6a9741108b4bbe200bd287db4 rework susystem SCCS-vsn: bin/rcp/util.c 8.2 --- diff --git a/usr/src/bin/rcp/util.c b/usr/src/bin/rcp/util.c index e56ffdf2c9..b690842d15 100644 --- a/usr/src/bin/rcp/util.c +++ b/usr/src/bin/rcp/util.c @@ -6,7 +6,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)util.c 8.1 (Berkeley) %G%"; +static char sccsid[] = "@(#)util.c 8.2 (Berkeley) %G%"; #endif /* not lint */ #include @@ -27,7 +27,7 @@ static char sccsid[] = "@(#)util.c 8.1 (Berkeley) %G%"; char * colon(cp) - register char *cp; + char *cp; { if (*cp == ':') /* Leading colon is part of file name. */ return (0); @@ -60,8 +60,8 @@ int okname(cp0) char *cp0; { - register int c; - register char *cp; + int c; + char *cp; cp = cp0; do { @@ -82,19 +82,23 @@ susystem(s, userid) int userid; char *s; { - register sig_t istat, qstat; - int status, pid, w; - - if ((pid = vfork()) == 0) { + sig_t istat, qstat; + int status, w; + pid_t pid; + + pid = vfork(); + switch (pid) { + case -1: + return (127); + + case 0: (void)setuid(userid); execl(_PATH_BSHELL, "sh", "-c", s, NULL); _exit(127); } istat = signal(SIGINT, SIG_IGN); qstat = signal(SIGQUIT, SIG_IGN); - while ((w = wait(&status)) != pid && w != -1) - ; - if (w == -1) + if (waitpid(pid, &status, 0) < 0) status = -1; (void)signal(SIGINT, istat); (void)signal(SIGQUIT, qstat);