modified traceback to deal with "inline" functions, i.e. blocks
[unix-history] / usr / src / old / sh / expand.c
index eaf8aab..870aa20 100644 (file)
@@ -1,4 +1,4 @@
-/*     expand.c        4.2     83/03/28        */
+/*     expand.c        4.4     83/07/01        */
 
 #
 /*
 
 #
 /*
@@ -12,7 +12,7 @@
 #include       "defs.h"
 #include       <sys/param.h>
 #include       <sys/stat.h>
 #include       "defs.h"
 #include       <sys/param.h>
 #include       <sys/stat.h>
-#include       <dir.h>
+#include       <sys/dir.h>
 
 
 
 
 
 
@@ -79,7 +79,8 @@ INT   expand(as,rflg)
                REP     IF *rs=='/' THEN rescan=rs; *rs=0; gchain=0 FI
                PER     *rs++ DONE
 
                REP     IF *rs=='/' THEN rescan=rs; *rs=0; gchain=0 FI
                PER     *rs++ DONE
 
-               WHILE (dp = readdir(dirf)) != NULL ANDF (trapnote&SIGSET) == 0
+               IF setjmp(INTbuf) == 0 THEN trapjmp[INTR] = 1; FI
+               WHILE (trapnote&SIGSET) == 0 ANDF (dp = readdir(dirf)) != NULL
                DO      IF (*dp->d_name=='.' ANDF *cs!='.')
                        THEN    continue;
                        FI
                DO      IF (*dp->d_name=='.' ANDF *cs!='.')
                        THEN    continue;
                        FI
@@ -87,7 +88,7 @@ INT   expand(as,rflg)
                        THEN    addg(s,dp->d_name,rescan); count++;
                        FI
                OD
                        THEN    addg(s,dp->d_name,rescan); count++;
                        FI
                OD
-               closedir(dirf);
+               closedir(dirf); trapjmp[INTR] = 0;
 
                IF rescan
                THEN    REG ARGPTR      rchain;
 
                IF rescan
                THEN    REG ARGPTR      rchain;