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

Diff for /src/usr.bin/make/cond.c between version 1.37 and 1.38

version 1.37, 2007/09/17 08:36:57 version 1.38, 2007/09/17 09:28:36
Line 192 
Line 192 
  *-----------------------------------------------------------------------   *-----------------------------------------------------------------------
  */   */
 static bool  static bool
 CondGetArg(const char **linePtr, struct Name *arg, const char *func,  CondGetArg(const char **linePtr, struct Name *arg, const char *func,
     bool parens) /* true if arg should be bounded by parens */      bool parens) /* true if arg should be bounded by parens */
 {  {
     const char          *cp;      const char          *cp;
Line 869 
Line 869 
     return l;      return l;
 }  }
   
 /* Evaluate conditional in line.  /* Evaluate conditional in line.
  * returns COND_SKIP, COND_PARSE, COND_INVALID, COND_ISFOR, COND_ISINCLUDE,   * returns COND_SKIP, COND_PARSE, COND_INVALID, COND_ISFOR, COND_ISINCLUDE,
  * COND_ISUNDEF.   * COND_ISUNDEF.
  * A conditional line looks like this:   * A conditional line looks like this:
Line 901 
Line 901 
     k = ohash_interval(line, &end);      k = ohash_interval(line, &end);
     switch(k % MAGICSLOTS2) {      switch(k % MAGICSLOTS2) {
     case K_COND_IF % MAGICSLOTS2:      case K_COND_IF % MAGICSLOTS2:
         if (k == K_COND_IF && len == strlen(COND_IF) &&          if (k == K_COND_IF && len == strlen(COND_IF) &&
             strncmp(line, COND_IF, len) == 0) {              strncmp(line, COND_IF, len) == 0) {
             ifp = ifs + COND_IF_INDEX;              ifp = ifs + COND_IF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_IFDEF % MAGICSLOTS2:      case K_COND_IFDEF % MAGICSLOTS2:
         if (k == K_COND_IFDEF && len == strlen(COND_IFDEF) &&          if (k == K_COND_IFDEF && len == strlen(COND_IFDEF) &&
             strncmp(line, COND_IFDEF, len) == 0) {              strncmp(line, COND_IFDEF, len) == 0) {
             ifp = ifs + COND_IFDEF_INDEX;              ifp = ifs + COND_IFDEF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_IFNDEF % MAGICSLOTS2:      case K_COND_IFNDEF % MAGICSLOTS2:
         if (k == K_COND_IFNDEF && len == strlen(COND_IFNDEF) &&          if (k == K_COND_IFNDEF && len == strlen(COND_IFNDEF) &&
             strncmp(line, COND_IFNDEF, len) == 0) {              strncmp(line, COND_IFNDEF, len) == 0) {
             ifp = ifs + COND_IFNDEF_INDEX;              ifp = ifs + COND_IFNDEF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_IFMAKE % MAGICSLOTS2:      case K_COND_IFMAKE % MAGICSLOTS2:
         if (k == K_COND_IFMAKE && len == strlen(COND_IFMAKE) &&          if (k == K_COND_IFMAKE && len == strlen(COND_IFMAKE) &&
             strncmp(line, COND_IFMAKE, len) == 0) {              strncmp(line, COND_IFMAKE, len) == 0) {
             ifp = ifs + COND_IFMAKE_INDEX;              ifp = ifs + COND_IFMAKE_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_IFNMAKE % MAGICSLOTS2:      case K_COND_IFNMAKE % MAGICSLOTS2:
         if (k == K_COND_IFNMAKE && len == strlen(COND_IFNMAKE) &&          if (k == K_COND_IFNMAKE && len == strlen(COND_IFNMAKE) &&
             strncmp(line, COND_IFNMAKE, len) == 0) {              strncmp(line, COND_IFNMAKE, len) == 0) {
             ifp = ifs + COND_IFNMAKE_INDEX;              ifp = ifs + COND_IFNMAKE_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ELIF % MAGICSLOTS2:      case K_COND_ELIF % MAGICSLOTS2:
         if (k == K_COND_ELIF && len == strlen(COND_ELIF) &&          if (k == K_COND_ELIF && len == strlen(COND_ELIF) &&
             strncmp(line, COND_ELIF, len) == 0) {              strncmp(line, COND_ELIF, len) == 0) {
             ifp = ifs + COND_ELIF_INDEX;              ifp = ifs + COND_ELIF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ELIFDEF % MAGICSLOTS2:      case K_COND_ELIFDEF % MAGICSLOTS2:
         if (k == K_COND_ELIFDEF && len == strlen(COND_ELIFDEF) &&          if (k == K_COND_ELIFDEF && len == strlen(COND_ELIFDEF) &&
             strncmp(line, COND_ELIFDEF, len) == 0) {              strncmp(line, COND_ELIFDEF, len) == 0) {
             ifp = ifs + COND_ELIFDEF_INDEX;              ifp = ifs + COND_ELIFDEF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ELIFNDEF % MAGICSLOTS2:      case K_COND_ELIFNDEF % MAGICSLOTS2:
         if (k == K_COND_ELIFNDEF && len == strlen(COND_ELIFNDEF) &&          if (k == K_COND_ELIFNDEF && len == strlen(COND_ELIFNDEF) &&
             strncmp(line, COND_ELIFNDEF, len) == 0) {              strncmp(line, COND_ELIFNDEF, len) == 0) {
             ifp = ifs + COND_ELIFNDEF_INDEX;              ifp = ifs + COND_ELIFNDEF_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ELIFMAKE % MAGICSLOTS2:      case K_COND_ELIFMAKE % MAGICSLOTS2:
         if (k == K_COND_ELIFMAKE && len == strlen(COND_ELIFMAKE) &&          if (k == K_COND_ELIFMAKE && len == strlen(COND_ELIFMAKE) &&
             strncmp(line, COND_ELIFMAKE, len) == 0) {              strncmp(line, COND_ELIFMAKE, len) == 0) {
             ifp = ifs + COND_ELIFMAKE_INDEX;              ifp = ifs + COND_ELIFMAKE_INDEX;
         } else          } else
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ELIFNMAKE % MAGICSLOTS2:      case K_COND_ELIFNMAKE % MAGICSLOTS2:
         if (k == K_COND_ELIFNMAKE && len == strlen(COND_ELIFNMAKE) &&          if (k == K_COND_ELIFNMAKE && len == strlen(COND_ELIFNMAKE) &&
             strncmp(line, COND_ELIFNMAKE, len) == 0) {              strncmp(line, COND_ELIFNMAKE, len) == 0) {
             ifp = ifs + COND_ELIFNMAKE_INDEX;              ifp = ifs + COND_ELIFNMAKE_INDEX;
         } else          } else
Line 973 
Line 973 
     case K_COND_ELSE % MAGICSLOTS2:      case K_COND_ELSE % MAGICSLOTS2:
         /* valid conditional whose value is the inverse          /* valid conditional whose value is the inverse
          * of the previous if we parsed.  */           * of the previous if we parsed.  */
         if (k == K_COND_ELSE && len == strlen(COND_ELSE) &&          if (k == K_COND_ELSE && len == strlen(COND_ELSE) &&
             strncmp(line, COND_ELSE, len) == 0) {              strncmp(line, COND_ELSE, len) == 0) {
             if (condTop == MAXIF) {              if (condTop == MAXIF) {
                 Parse_Error(level, "if-less else");                  Parse_Error(level, "if-less else");
Line 987 
Line 987 
             return COND_INVALID;              return COND_INVALID;
         break;          break;
     case K_COND_ENDIF % MAGICSLOTS2:      case K_COND_ENDIF % MAGICSLOTS2:
         if (k == K_COND_ENDIF && len == strlen(COND_ENDIF) &&          if (k == K_COND_ENDIF && len == strlen(COND_ENDIF) &&
             strncmp(line, COND_ENDIF, len) == 0) {              strncmp(line, COND_ENDIF, len) == 0) {
         /* End of a conditional section. If skipIfLevel is non-zero, that          /* End of a conditional section. If skipIfLevel is non-zero, that
          * conditional was skipped, so lines following it should also be           * conditional was skipped, so lines following it should also be
Line 1094 
Line 1094 
                 break;                  break;
         }          }
     }      }
   
     if (!ifp->isElse)      if (!ifp->isElse)
         condTop--;          condTop--;
     else if (skipIfLevel != 0 || condStack[condTop].value) {      else if (skipIfLevel != 0 || condStack[condTop].value) {
Line 1128 
Line 1128 
     int i;      int i;
   
     if (condTop != MAXIF) {      if (condTop != MAXIF) {
         Parse_Error(PARSE_FATAL, "%s%d open conditional%s",          Parse_Error(PARSE_FATAL, "%s%d open conditional%s",
             condTop == 0 ? "at least ": "", MAXIF-condTop,              condTop == 0 ? "at least ": "", MAXIF-condTop,
             MAXIF-condTop == 1 ? "" : "s");              MAXIF-condTop == 1 ? "" : "s");
         for (i = MAXIF-1; i >= condTop; i--) {          for (i = MAXIF-1; i >= condTop; i--) {

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38