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

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/usr.bin/make/cond.c between version 1.18 and 1.19

version 1.18, 2003/09/06 06:52:08 version 1.19, 2004/01/06 01:18:52
Line 145  static Boolean CondDoMake(int, char *);
Line 145  static Boolean CondDoMake(int, char *);
 static Boolean CondDoExists(int, char *);  static Boolean CondDoExists(int, char *);
 static Boolean CondDoTarget(int, char *);  static Boolean CondDoTarget(int, char *);
 static Boolean CondDoCommands(int, char *);  static Boolean CondDoCommands(int, char *);
 static Boolean CondCvtArg(char *, double *);  static char * CondCvtArg(char *, double *);
 static Token CondToken(Boolean);  static Token CondToken(Boolean);
 static Token CondT(Boolean);  static Token CondT(Boolean);
 static Token CondF(Boolean);  static Token CondF(Boolean);
Line 491  CondDoCommands(int argLen, char *arg)
Line 491  CondDoCommands(int argLen, char *arg)
  *   *
  * Results:   * Results:
  *      Sets 'value' to double value of string.   *      Sets 'value' to double value of string.
  *      Returns true if the string was a valid number, false o.w.   *      Returns NULL if string was fully consumed,
    *      else returns remaining input.
  *   *
  * Side Effects:   * Side Effects:
  *      Can change 'value' even if string is not a valid number.   *      Can change 'value' even if string is not a valid number.
Line 499  CondDoCommands(int argLen, char *arg)
Line 500  CondDoCommands(int argLen, char *arg)
  *   *
  *-----------------------------------------------------------------------   *-----------------------------------------------------------------------
  */   */
 static Boolean  static char *
 CondCvtArg(char *str, double *value)  CondCvtArg(char *str, double *value)
 {  {
     if ((*str == '0') && (str[1] == 'x')) {      if ((*str == '0') && (str[1] == 'x')) {
Line 512  CondCvtArg(char *str, double *value)
Line 513  CondCvtArg(char *str, double *value)
             else if (isxdigit((unsigned char) *str))              else if (isxdigit((unsigned char) *str))
                 x = 10 + *str - isupper((unsigned char) *str) ? 'A' : 'a';                  x = 10 + *str - isupper((unsigned char) *str) ? 'A' : 'a';
             else              else
                 return FALSE;                  break;
             i = (i << 4) + x;              i = (i << 4) + x;
         }          }
         *value = (double) i;          *value = (double) i;
         return TRUE;          return *str ? str : NULL;
     }      } else {
     else {  
         char *eptr;          char *eptr;
         *value = strtod(str, &eptr);          *value = strtod(str, &eptr);
         return *eptr == '\0';          return *eptr ? eptr : NULL;
     }      }
 }  }
   
Line 747  do_string_compare:
Line 747  do_string_compare:
                     double      left, right;                      double      left, right;
                     char        *string;                      char        *string;
   
                     if (!CondCvtArg(lhs, &left))                      if (CondCvtArg(lhs, &left))
                         goto do_string_compare;                          goto do_string_compare;
                     if (*rhs == '$') {                      if (*rhs == '$') {
                         int     len;                          int     len;
Line 757  do_string_compare:
Line 757  do_string_compare:
                         if (string == var_Error) {                          if (string == var_Error) {
                             right = 0.0;                              right = 0.0;
                         } else {                          } else {
                             if (!CondCvtArg(string, &right)) {                              if (CondCvtArg(string, &right)) {
                                 if (freeIt)                                  if (freeIt)
                                     free(string);                                      free(string);
                                 goto do_string_compare;                                  goto do_string_compare;
Line 768  do_string_compare:
Line 768  do_string_compare:
                                 condExpr += len;                                  condExpr += len;
                         }                          }
                     } else {                      } else {
                         if (!CondCvtArg(rhs, &right))                          char *cp;
   
                           if ((cp = CondCvtArg(rhs, &right)) &&
                               cp == rhs)
                             goto do_string_compare;                              goto do_string_compare;
                         if (rhs == condExpr) {                          if (rhs == condExpr) {
                             /*                              /*
                              * Skip over the right-hand side                               * Skip over the right-hand side
                              */                               */
                             while(!isspace((unsigned char) *condExpr) &&                              if (cp)
                                   (*condExpr != '\0')) {                                  condExpr = cp;
                                 condExpr++;                              else
                             }                                  condExpr = strchr(rhs, '\0');
                         }                          }
                     }                      }
   

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

CVSweb <webmaster@jp.NetBSD.org>