some small fixes
authorceriel <none@none>
Fri, 28 Oct 1988 10:11:49 +0000 (10:11 +0000)
committerceriel <none@none>
Fri, 28 Oct 1988 10:11:49 +0000 (10:11 +0000)
lang/cem/libcc/stdio/system.c
lang/cem/libcc/stdio/termcap.c

index b006c3c..351734f 100644 (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;
 }
index 3b5ae5d..0ff3727 100644 (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) {