-struct {
- int signal;
- void (*handler)(int);
-} sighandlers[] = {
- {
- SIGHUP, sighup_handler}, {
- SIGTERM, sigterm_handler}, {
- SIGQUIT, sigquit_handler}, {
- SIGSEGV, fatal_signal_handler}, {
- SIGBUS, fatal_signal_handler}, {
- SIGILL, fatal_signal_handler}, {
- SIGPIPE, ignore_signal_handler}, {
- SIGINT, sigint_handler}, {
- SIGUSR1, sigusr1_handler}, {
- SIGUSR2, sigusr2_handler}, {
- SIGCHLD, ignore_signal_handler}, {
- SIGALRM, sigalrm_handler}, {
- SIGWINCH, sigwinch_handler}, {
- 0, NULL}
-};
-
-void setup_signals(void)
-{
- int i;
- struct sigaction act;
-
- sigemptyset(&emptysigset);
- act.sa_handler = NULL;
- act.sa_mask = emptysigset;
- act.sa_flags = 0;
-
- /* Set a default signal handler for every signal, errors will be
- ignored. */
- for(i = 0; i < NSIG; i++) {
- if(!do_detach)
- act.sa_handler = SIG_DFL;
- else
- act.sa_handler = unexpected_signal_handler;
- sigaction(i, &act, NULL);
+ for(i = 0; envp[i]; i++) {
+ char *e = strchr(envp[i], '=');
+ if(e) {
+ char p[e - envp[i] + 1];
+ strncpy(p, envp[i], e - envp[i]);
+ p[e - envp[i]] = '\0';
+ putenv(p);
+ }