Lines 1720-1725
static struct pid {
Link Here
|
1720 |
int pid; |
1720 |
int pid; |
1721 |
} *pidlist; |
1721 |
} *pidlist; |
1722 |
|
1722 |
|
|
|
1723 |
static struct sigaction *old_alarm= NULL; /* XXX horrible awful hack */ |
1724 |
|
1723 |
pointer |
1725 |
pointer |
1724 |
Popen(char *command, char *type) |
1726 |
Popen(char *command, char *type) |
1725 |
{ |
1727 |
{ |
Lines 1741-1751
Popen(char *command, char *type)
Link Here
|
1741 |
return NULL; |
1743 |
return NULL; |
1742 |
} |
1744 |
} |
1743 |
|
1745 |
|
|
|
1746 |
/* Ignore the smart scheduler while this is going on */ |
1747 |
sigaction(SIGALRM, SIG_IGN, old_alarm); |
1748 |
|
1744 |
switch (pid = fork()) { |
1749 |
switch (pid = fork()) { |
1745 |
case -1: /* error */ |
1750 |
case -1: /* error */ |
1746 |
close(pdes[0]); |
1751 |
close(pdes[0]); |
1747 |
close(pdes[1]); |
1752 |
close(pdes[1]); |
1748 |
xfree(cur); |
1753 |
xfree(cur); |
|
|
1754 |
sigaction(SIGALRM, old_alarm, NULL); |
1749 |
return NULL; |
1755 |
return NULL; |
1750 |
case 0: /* child */ |
1756 |
case 0: /* child */ |
1751 |
if (setgid(getgid()) == -1) |
1757 |
if (setgid(getgid()) == -1) |
Lines 1921-1926
Pclose(pointer iop)
Link Here
|
1921 |
/* allow EINTR again */ |
1927 |
/* allow EINTR again */ |
1922 |
OsReleaseSignals (); |
1928 |
OsReleaseSignals (); |
1923 |
|
1929 |
|
|
|
1930 |
sigaction(SIGALRM, old_alarm,NULL); |
1931 |
|
1924 |
return pid == -1 ? -1 : pstat; |
1932 |
return pid == -1 ? -1 : pstat; |
1925 |
} |
1933 |
} |
1926 |
|
1934 |
|