some small fixes

This commit is contained in:
ceriel 1988-10-28 10:11:49 +00:00
parent 01252cb592
commit 78237f3ef8
2 changed files with 18 additions and 4 deletions

View file

@ -5,15 +5,22 @@ system(str)
char *str;
{
int pid, exitstatus, waitval;
int (*sigint)(), (*sigquit)();
int i;
if ((pid = fork()) < 0) return -1;
if ((pid = fork()) < 0) return -1; /* How do we distinguish this
from exit status -1?
*/
if (pid == 0) {
for (i = 3; i <= 20; i++) close(i);
execl("/bin/sh", "sh", "-c", str, (char *) 0);
/* get here if execl fails ... */
_exit(127); /* see manual page */
}
sigint = signal( SIGINT, SIG_IGN );
sigquit = signal( SIGQUIT, SIG_IGN );
while ((waitval = wait(&exitstatus)) != pid) {
if (waitval == -1) break;
}
@ -21,5 +28,9 @@ system(str)
/* no child ??? or maybe interrupted ??? */
exitstatus = -1;
}
signal( SIGINT, sigint );
signal( SIGQUIT, sigquit );
return exitstatus;
}

View file

@ -145,7 +145,8 @@ char *id;
return(-1);
while (*++cp != ':')
;
for (++cp ; *cp ; cp++) {
while (*cp) {
cp++;
while (ISSPACE(*cp))
cp++;
if (strncmp(cp, id, CAPABLEN) == 0) {
@ -178,7 +179,8 @@ char *id;
return(-1);
while (*++cp != ':')
;
for (++cp ; *cp ; cp++) {
while (*cp) {
cp++;
while (ISSPACE(*cp))
cp++;
if (strncmp(cp, id, CAPABLEN) == 0)
@ -207,7 +209,8 @@ char **area;
return(NULL);
while (*++cp != ':')
;
for (++cp ; *cp ; cp++) {
while (*cp) {
cp++;
while (ISSPACE(*cp))
cp++;
if (strncmp(cp, id, CAPABLEN) == 0) {