BSD 4_3_Tahoe release
[unix-history] / usr / src / bin / sh / service.c
index 8426c40..ee30f82 100644 (file)
@@ -1,4 +1,6 @@
-/*     service.c       4.1     82/05/07        */
+#ifndef lint
+static char sccsid[] = "@(#)service.c  4.5 4/24/88";
+#endif
 
 #
 /*
 
 #
 /*
@@ -18,6 +20,7 @@ PROC VOID     gsort();
 
 INT            errno;
 STRING         sysmsg[];
 
 INT            errno;
 STRING         sysmsg[];
+INT            num_sysmsg;
 
 /* fault handling */
 #define ENOMEM 12
 
 /* fault handling */
 #define ENOMEM 12
@@ -237,7 +240,11 @@ VOID       await(i)
 
                BEGIN
                   REG INT      *pw=pwlist;
 
                BEGIN
                   REG INT      *pw=pwlist;
-                  p=wait(&w);
+                  IF setjmp(INTbuf) == 0
+                  THEN trapjmp[INTR] = 1; p=wait(&w);
+                  ELSE p = -1;
+                  FI
+                  trapjmp[INTR] = 0;
                   WHILE pw <= &pwlist[ipwc]
                   DO IF *pw==p
                      THEN *pw=0; pwc--;
                   WHILE pw <= &pwlist[ipwc]
                   DO IF *pw==p
                      THEN *pw=0; pwc--;
@@ -255,8 +262,10 @@ VOID       await(i)
                        THEN    prs("ptrace: ");
                                sig = w_hi;
                        FI
                        THEN    prs("ptrace: ");
                                sig = w_hi;
                        FI
-                       IF sysmsg[sig]
-                       THEN    IF i!=p ORF (flags&prompt)==0 THEN prp(); prn(p); blank() FI
+                       IF sig < num_sysmsg ANDF sysmsg[sig]
+                       THEN    IF i!=p ORF (flags&prompt)==0
+                               THEN prp(); prn(p); blank()
+                               FI
                                prs(sysmsg[sig]);
                                IF w&0200 THEN prs(coredump) FI
                        FI
                                prs(sysmsg[sig]);
                                IF w&0200 THEN prs(coredump) FI
                        FI
@@ -383,7 +392,7 @@ LOCAL INT   split(s)
                ELIF c==0
                THEN    s--;
                FI
                ELIF c==0
                THEN    s--;
                FI
-               IF c=expand((argp=endstak(argp))->argval,0)
+               IF c=expand(((ARGPTR)(argp=endstak(argp)))->argval,0)
                THEN    count += c;
                ELSE    /* assign(&fngnod, argp->argval); */
                        makearg(argp); count++;
                THEN    count += c;
                ELSE    /* assign(&fngnod, argp->argval); */
                        makearg(argp); count++;