Merge "Switch to current OpenBSD system.c."

This commit is contained in:
Elliott Hughes 2014-02-25 23:21:00 +00:00 committed by Gerrit Code Review
commit 901553aaf4
2 changed files with 9 additions and 9 deletions

View File

@ -106,7 +106,6 @@ libc_common_src_files := \
stdlib/strtod.c \ stdlib/strtod.c \
unistd/alarm.c \ unistd/alarm.c \
unistd/syslog.c \ unistd/syslog.c \
unistd/system.c \
unistd/time.c \ unistd/time.c \
# Fortify implementations of libc functions. # Fortify implementations of libc functions.
@ -388,6 +387,7 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdlib/strtoumax.c \ upstream-openbsd/lib/libc/stdlib/strtoumax.c \
upstream-openbsd/lib/libc/stdlib/strtoll.c \ upstream-openbsd/lib/libc/stdlib/strtoll.c \
upstream-openbsd/lib/libc/stdlib/strtol.c \ upstream-openbsd/lib/libc/stdlib/strtol.c \
upstream-openbsd/lib/libc/stdlib/system.c \
upstream-openbsd/lib/libc/locale/wcsxfrm.c \ upstream-openbsd/lib/libc/locale/wcsxfrm.c \
libc_arch_static_src_files := \ libc_arch_static_src_files := \

View File

@ -29,18 +29,18 @@
*/ */
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h>
#include <signal.h> #include <signal.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <paths.h> #include <paths.h>
#include <sys/wait.h>
extern char **environ; extern char **environ;
int int
system(const char *command) system(const char *command)
{ {
pid_t pid; pid_t pid;
sig_t intsave, quitsave; sig_t intsave, quitsave;
sigset_t mask, omask; sigset_t mask, omask;
int pstat; int pstat;
@ -61,14 +61,14 @@ system(const char *command)
case 0: /* child */ case 0: /* child */
sigprocmask(SIG_SETMASK, &omask, NULL); sigprocmask(SIG_SETMASK, &omask, NULL);
execve(_PATH_BSHELL, argp, environ); execve(_PATH_BSHELL, argp, environ);
_exit(127); _exit(127);
} }
intsave = (sig_t) bsd_signal(SIGINT, SIG_IGN); intsave = signal(SIGINT, SIG_IGN);
quitsave = (sig_t) bsd_signal(SIGQUIT, SIG_IGN); quitsave = signal(SIGQUIT, SIG_IGN);
pid = waitpid(pid, (int *)&pstat, 0); pid = waitpid(pid, (int *)&pstat, 0);
sigprocmask(SIG_SETMASK, &omask, NULL); sigprocmask(SIG_SETMASK, &omask, NULL);
(void)bsd_signal(SIGINT, intsave); (void)signal(SIGINT, intsave);
(void)bsd_signal(SIGQUIT, quitsave); (void)signal(SIGQUIT, quitsave);
return (pid == -1 ? -1 : pstat); return (pid == -1 ? -1 : pstat);
} }