#include <stdio.h>
#include <sys/wait.h>
+#include <signal.h>
#include "gdb.h"
#include "update.h"
#include "sms_update_int.h"
char *str;
{
union wait waitb;
- int n, pid;
+ int n, pid, mask;
str += 8;
while (*str == ' ')
str++;
+ mask = sigblock(sigmask(SIGCHLD));
pid = fork();
switch (pid) {
case -1:
n = errno;
+ sigsetmask(mask);
log_priority = log_ERROR;
com_err(whoami, errno, ": can't fork to run install script");
code = send_object(conn, (char *)&n, INTEGER_T);
case 0:
execlp(str, str, (char *)NULL);
n = errno;
+ sigsetmask(mask);
log_priority = log_ERROR;
com_err(whoami, n, ": %s", str);
(void) send_object(conn, (char *)&n, INTEGER_T);
do {
n = wait(&waitb);
} while (n != -1 && n != pid);
+ sigsetmask(mask);
if (waitb.w_status) {
log_priority = log_ERROR;
com_err(whoami, 0, "child exited with status %d", waitb.w_status);