[BACK]Return to compat.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / make

Diff for /src/usr.bin/make/compat.c between version 1.42 and 1.43

version 1.42, 2001/11/22 21:18:10 version 1.43, 2001/11/22 23:56:43
Line 77 
Line 77 
   
 static char         meta[256];  static char         meta[256];
   
 static GNode        *curTarg = NULL;  
 static GNode        *ENDNode;  static GNode        *ENDNode;
 static void CompatInterrupt(int);  static void CompatInterrupt(int);
 static int CompatRunCommand(void *, void *);  static int CompatRunCommand(void *, void *);
 static void CompatMake(void *, void *);  static void CompatMake(void *, void *);
 static int shellneed(char **);  static int shellneed(char **);
   
 /*-  static volatile sig_atomic_t interrupted;
  *-----------------------------------------------------------------------  
  * CompatInterrupt --  static void
  *      Interrupt the creation of the current target and remove it if  
  *      it ain't precious.  
  *  
  * Side Effects:  
  *      The target is removed and the process exits. If .INTERRUPT exists,  
  *      its commands are run first WITH INTERRUPTS IGNORED..  
  *-----------------------------------------------------------------------  
  */  
 static void  
 CompatInterrupt(signo)  CompatInterrupt(signo)
     int     signo;      int signo;
 {  {
     GNode   *gn;      if (interrupted != SIGINT)
           interrupted = signo;
     if (curTarg != NULL && !Targ_Precious(curTarg)) {  
         char      *file = Varq_Value(TARGET_INDEX, curTarg);  
   
         if (!noExecute && eunlink(file) != -1)  
             Error("*** %s removed\n", file);  
   
         /* Run .INTERRUPT only if hit with interrupt signal.  */  
         if (signo == SIGINT) {  
             gn = Targ_FindNode(".INTERRUPT", TARG_NOCREATE);  
             if (gn != NULL)  
                 Lst_Find(&gn->commands, CompatRunCommand, gn);  
         }  
   
     }  
     _exit(signo);  
 }  }
   
 /*-  /*-
Line 343 
Line 318 
                 break;                  break;
         }          }
   
           if (interrupted)
               break;
   
         if (stat != -1) {          if (stat != -1) {
             if (WIFSTOPPED(reason))              if (WIFSTOPPED(reason))
                 status = WSTOPSIG(reason);              /* stopped */                  status = WSTOPSIG(reason);              /* stopped */
Line 370 
Line 348 
                     status = 0;                      status = 0;
                 }                  }
             }              }
             break;              return !status;
         } else          } else
             Fatal("error in wait: %d", stat);              Fatal("error in wait: %d", stat);
             /*NOTREACHED*/              /*NOTREACHED*/
     }      }
   
     return !status;      /* This is reached only if interrupted */
       if (!Targ_Precious(gn)) {
           char      *file = Varq_Value(TARGET_INDEX, gn);
   
           if (!noExecute && eunlink(file) != -1)
               Error("*** %s removed\n", file);
       }
       if (interrupted == SIGINT) {
           GNode *i = Targ_FindNode(".INTERRUPT", TARG_NOCREATE);
           signal(SIGINT, SIG_IGN);
           signal(SIGTERM, SIG_IGN);
           signal(SIGHUP, SIG_IGN);
           signal(SIGQUIT, SIG_IGN);
           interrupted = 0;
           if (i != NULL)
               Lst_Find(&i->commands, CompatRunCommand, i);
           exit(SIGINT);
       }
       exit(interrupted);
 }  }
   
 /*-  /*-
Line 458 
Line 454 
         if (Job_CheckCommands(gn, Fatal)) {          if (Job_CheckCommands(gn, Fatal)) {
             /* Our commands are ok, but we still have to worry about the -t              /* Our commands are ok, but we still have to worry about the -t
              * flag...  */               * flag...  */
             if (!touchFlag) {              if (!touchFlag)
                 curTarg = gn;  
                 Lst_Find(&gn->commands, CompatRunCommand, gn);                  Lst_Find(&gn->commands, CompatRunCommand, gn);
                 curTarg = NULL;              else
             } else  
                 Job_Touch(gn, gn->type & OP_SILENT);                  Job_Touch(gn, gn->type & OP_SILENT);
         } else          } else
             gn->made = ERROR;              gn->made = ERROR;
Line 580 
Line 574 
     GNode         *gn = NULL;/* Current root target */      GNode         *gn = NULL;/* Current root target */
     int           errors;   /* Number of targets not remade due to errors */      int           errors;   /* Number of targets not remade due to errors */
   
     if (signal(SIGINT, SIG_IGN) != SIG_IGN)      signal(SIGINT, CompatInterrupt);
         signal(SIGINT, CompatInterrupt);      signal(SIGTERM, CompatInterrupt);
     if (signal(SIGTERM, SIG_IGN) != SIG_IGN)      signal(SIGHUP, CompatInterrupt);
         signal(SIGTERM, CompatInterrupt);      signal(SIGQUIT, CompatInterrupt);
     if (signal(SIGHUP, SIG_IGN) != SIG_IGN)  
         signal(SIGHUP, CompatInterrupt);  
     if (signal(SIGQUIT, SIG_IGN) != SIG_IGN)  
         signal(SIGQUIT, CompatInterrupt);  
   
     for (cp = "#=|^(){};&<>*?[]:$`\\\n"; *cp != '\0'; cp++)      for (cp = "#=|^(){};&<>*?[]:$`\\\n"; *cp != '\0'; cp++)
         meta[(unsigned char) *cp] = 1;          meta[(unsigned char) *cp] = 1;

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.43