Merge "Switch to current OpenBSD system.c."
This commit is contained in:
commit
901553aaf4
@ -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 := \
|
||||||
|
@ -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);
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user