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

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

version 1.18, 1999/12/06 22:28:44 version 1.19, 1999/12/09 18:18:24
Line 485 
Line 485 
         (void)VarAdd(name, val, ctxt);          (void)VarAdd(name, val, ctxt);
     } else {      } else {
         Buf_Discard(v->val, Buf_Size(v->val));          Buf_Discard(v->val, Buf_Size(v->val));
         Buf_AddChars(v->val, strlen(val), val);          Buf_AddString(v->val, val);
   
         if (DEBUG(VAR)) {          if (DEBUG(VAR)) {
             printf("%s:%s = %s\n", ctxt->name, name, val);              printf("%s:%s = %s\n", ctxt->name, name, val);
Line 539 
Line 539 
     if (v == (Var *) NIL) {      if (v == (Var *) NIL) {
         (void)VarAdd(name, val, ctxt);          (void)VarAdd(name, val, ctxt);
     } else {      } else {
         Buf_AddChar(v->val, ' ');          Buf_AddSpace(v->val);
         Buf_AddChars(v->val, strlen(val), val);          Buf_AddString(v->val, val);
   
         if (DEBUG(VAR)) {          if (DEBUG(VAR)) {
             printf("%s:%s = %s\n", ctxt->name, name,              printf("%s:%s = %s\n", ctxt->name, name,
Line 629 
Line 629 
 {  {
     size_t len = strlen(word);      size_t len = strlen(word);
   
     if (addSpace) {      if (addSpace)
         Buf_AddChar(buf, ' ');          Buf_AddSpace(buf);
     }      while (len--)
   
     while (len--) {  
         Buf_AddChar(buf, toupper(*word++));          Buf_AddChar(buf, toupper(*word++));
     }  
     return (TRUE);      return (TRUE);
 }  }
   
Line 663 
Line 660 
 {  {
     size_t len = strlen(word);      size_t len = strlen(word);
   
     if (addSpace) {      if (addSpace)
         Buf_AddChar(buf, ' ');          Buf_AddSpace(buf);
     }      while (len--)
   
     while (len--) {  
         Buf_AddChar(buf, tolower(*word++));          Buf_AddChar(buf, tolower(*word++));
     }  
     return (TRUE);      return (TRUE);
 }  }
   
Line 698 
Line 692 
 {  {
     register char *slash;      register char *slash;
   
     slash = strrchr (word, '/');      slash = strrchr(word, '/');
     if (slash != (char *)NULL) {      if (slash != NULL) {
         if (addSpace) {          if (addSpace)
             Buf_AddChar(buf, ' ');              Buf_AddSpace(buf);
         }          Buf_AddInterval(buf, word, slash);
         *slash = '\0';  
         Buf_AddChars(buf, strlen(word), word);  
         *slash = '/';  
         return (TRUE);          return (TRUE);
     } else {      } else {
         /*          /* If no directory part, give . (q.v. the POSIX standard) */
          * If no directory part, give . (q.v. the POSIX standard)          if (addSpace)
          */              Buf_AddString(buf, " .");
         if (addSpace) {          else
             Buf_AddChars(buf, 2, " .");  
         } else {  
             Buf_AddChar(buf, '.');              Buf_AddChar(buf, '.');
         }  
     }      }
     return(dummy ? TRUE : TRUE);      return(dummy ? TRUE : TRUE);
 }  }
Line 745 
Line 733 
 {  {
     register char *slash;      register char *slash;
   
     if (addSpace) {      if (addSpace)
         Buf_AddChar(buf, ' ');          Buf_AddSpace(buf);
     }      slash = strrchr(word, '/');
       if (slash != NULL)
     slash = strrchr (word, '/');          Buf_AddString(buf, slash+1);
     if (slash != (char *)NULL) {      else
         *slash++ = '\0';          Buf_AddString(buf, word);
         Buf_AddChars(buf, strlen(slash), slash);  
         slash[-1] = '/';  
     } else {  
         Buf_AddChars(buf, strlen(word), word);  
     }  
     return (dummy ? TRUE : TRUE);      return (dummy ? TRUE : TRUE);
 }  }
   
Line 782 
Line 765 
     Buffer        buf;          /* Buffer in which to store it */      Buffer        buf;          /* Buffer in which to store it */
     ClientData    dummy;      ClientData    dummy;
 {  {
     register char *dot;      char *dot;
   
     dot = strrchr (word, '.');      dot = strrchr(word, '.');
     if (dot != (char *)NULL) {      if (dot != NULL) {
         if (addSpace) {          if (addSpace)
             Buf_AddChar(buf, ' ');              Buf_AddSpace(buf);
         }          Buf_AddString(buf, dot+1);
         *dot++ = '\0';  
         Buf_AddChars(buf, strlen(dot), dot);  
         dot[-1] = '.';  
         addSpace = TRUE;          addSpace = TRUE;
     }      }
     return (dummy ? addSpace : addSpace);      return (dummy ? addSpace : addSpace);
Line 820 
Line 800 
     Buffer        buf;          /* Buffer in which to store it */      Buffer        buf;          /* Buffer in which to store it */
     ClientData    dummy;      ClientData    dummy;
 {  {
     register char *dot;      char *dot;
   
     if (addSpace) {      if (addSpace)
         Buf_AddChar(buf, ' ');          Buf_AddSpace(buf);
     }  
   
     dot = strrchr (word, '.');      dot = strrchr(word, '.');
     if (dot != (char *)NULL) {      if (dot != NULL)
         *dot = '\0';          Buf_AddInterval(buf, word, dot);
         Buf_AddChars(buf, strlen(word), word);      else
         *dot = '.';          Buf_AddString(buf, word);
     } else {  
         Buf_AddChars(buf, strlen(word), word);  
     }  
     return (dummy ? TRUE : TRUE);      return (dummy ? TRUE : TRUE);
 }  }
   
Line 862 
Line 838 
     ClientData    pattern;      /* Pattern the word must match */      ClientData    pattern;      /* Pattern the word must match */
 {  {
     if (Str_Match(word, (char *) pattern)) {      if (Str_Match(word, (char *) pattern)) {
         if (addSpace) {          if (addSpace)
             Buf_AddChar(buf, ' ');              Buf_AddSpace(buf);
         }  
         addSpace = TRUE;          addSpace = TRUE;
         Buf_AddChars(buf, strlen(word), word);          Buf_AddString(buf, word);
     }      }
     return(addSpace);      return(addSpace);
 }  }
Line 903 
Line 878 
   
     if (*word) {      if (*word) {
             if (addSpace)              if (addSpace)
                 Buf_AddChar(buf, ' ');                  Buf_AddSpace(buf);
   
             addSpace = TRUE;              addSpace = TRUE;
   
             if ((ptr = Str_SYSVMatch(word, pat->lhs, &len)) != NULL)              if ((ptr = Str_SYSVMatch(word, pat->lhs, &len)) != NULL)
                 Str_SYSVSubst(buf, pat->rhs, ptr, len);                  Str_SYSVSubst(buf, pat->rhs, ptr, len);
             else              else
                 Buf_AddChars(buf, strlen(word), word);                  Buf_AddString(buf, word);
     }      }
     return(addSpace);      return(addSpace);
 }  }
Line 942 
Line 917 
     ClientData    pattern;      /* Pattern the word must match */      ClientData    pattern;      /* Pattern the word must match */
 {  {
     if (!Str_Match(word, (char *) pattern)) {      if (!Str_Match(word, (char *) pattern)) {
         if (addSpace) {          if (addSpace)
             Buf_AddChar(buf, ' ');              Buf_AddSpace(buf);
         }  
         addSpace = TRUE;          addSpace = TRUE;
         Buf_AddChars(buf, strlen(word), word);          Buf_AddString(buf, word);
     }      }
     return(addSpace);      return(addSpace);
 }  }
Line 998 
Line 972 
                          * if rhs is non-null.                           * if rhs is non-null.
                          */                           */
                         if (pattern->rightLen != 0) {                          if (pattern->rightLen != 0) {
                             if (addSpace) {                              if (addSpace)
                                 Buf_AddChar(buf, ' ');                                  Buf_AddSpace(buf);
                             }  
                             addSpace = TRUE;                              addSpace = TRUE;
                             Buf_AddChars(buf, pattern->rightLen, pattern->rhs);                              Buf_AddChars(buf, pattern->rightLen, pattern->rhs);
                         }                          }
Line 1015 
Line 988 
                      * Matches at start but need to copy in trailing characters                       * Matches at start but need to copy in trailing characters
                      */                       */
                     if ((pattern->rightLen + wordLen - pattern->leftLen) != 0){                      if ((pattern->rightLen + wordLen - pattern->leftLen) != 0){
                         if (addSpace) {                          if (addSpace)
                             Buf_AddChar(buf, ' ');                              Buf_AddSpace(buf);
                         }  
                         addSpace = TRUE;                          addSpace = TRUE;
                     }                      }
                     Buf_AddChars(buf, pattern->rightLen, pattern->rhs);                      Buf_AddChars(buf, pattern->rightLen, pattern->rhs);
Line 1047 
Line 1019 
                  * by the right-hand-side.                   * by the right-hand-side.
                  */                   */
                 if (((cp - word) + pattern->rightLen) != 0) {                  if (((cp - word) + pattern->rightLen) != 0) {
                     if (addSpace) {                      if (addSpace)
                         Buf_AddChar(buf, ' ');                          Buf_AddSpace(buf);
                     }  
                     addSpace = TRUE;                      addSpace = TRUE;
                 }                  }
                 Buf_AddChars(buf, cp - word, word);                  Buf_AddInterval(buf, word, cp);
                 Buf_AddChars(buf, pattern->rightLen, pattern->rhs);                  Buf_AddChars(buf, pattern->rightLen, pattern->rhs);
                 pattern->flags |= VAR_SUB_MATCHED;                  pattern->flags |= VAR_SUB_MATCHED;
             } else {              } else {
Line 1082 
Line 1053 
                 cp = strstr(word, pattern->lhs);                  cp = strstr(word, pattern->lhs);
                 if (cp != (char *)NULL) {                  if (cp != (char *)NULL) {
                     if (addSpace && (((cp - word) + pattern->rightLen) != 0)){                      if (addSpace && (((cp - word) + pattern->rightLen) != 0)){
                         Buf_AddChar(buf, ' ');                          Buf_AddSpace(buf);
                         addSpace = FALSE;                          addSpace = FALSE;
                     }                      }
                     Buf_AddChars(buf, cp-word, word);                      Buf_AddInterval(buf, word, cp);
                     Buf_AddChars(buf, pattern->rightLen, pattern->rhs);                      Buf_AddChars(buf, pattern->rightLen, pattern->rhs);
                     wordLen -= (cp - word) + pattern->leftLen;                      wordLen -= (cp - word) + pattern->leftLen;
                     word = cp + pattern->leftLen;                      word = cp + pattern->leftLen;
Line 1098 
Line 1069 
                 }                  }
             }              }
             if (wordLen != 0) {              if (wordLen != 0) {
                 if (addSpace) {                  if (addSpace)
                     Buf_AddChar(buf, ' ');                      Buf_AddSpace(buf);
                 }  
                 Buf_AddChars(buf, wordLen, word);                  Buf_AddChars(buf, wordLen, word);
             }              }
             /*              /*
Line 1113 
Line 1083 
         return (addSpace);          return (addSpace);
     }      }
  nosub:   nosub:
     if (addSpace) {      if (addSpace)
         Buf_AddChar(buf, ' ');          Buf_AddSpace(buf);
     }  
     Buf_AddChars(buf, wordLen, word);      Buf_AddChars(buf, wordLen, word);
     return(TRUE);      return(TRUE);
 }  }
Line 1179 
Line 1148 
   
 #define MAYBE_ADD_SPACE()               \  #define MAYBE_ADD_SPACE()               \
         if (addSpace && !added)         \          if (addSpace && !added)         \
             Buf_AddChar(buf, ' ');      \              Buf_AddSpace(buf);          \
         added = 1          added = 1
   
     added = 0;      added = 0;
Line 1389 
Line 1358 
                  * substitution and recurse.                   * substitution and recurse.
                  */                   */
                 cp2 = Var_Parse(cp, ctxt, err, &len, &freeIt);                  cp2 = Var_Parse(cp, ctxt, err, &len, &freeIt);
                 Buf_AddChars(buf, strlen(cp2), cp2);                  Buf_AddString(buf, cp2);
                 if (freeIt)                  if (freeIt)
                     free(cp2);                      free(cp2);
                 cp += len - 1;                  cp += len - 1;
Line 2179 
Line 2148 
   
             for (cp = str++; *str != '$' && *str != '\0'; str++)              for (cp = str++; *str != '$' && *str != '\0'; str++)
                 continue;                  continue;
             Buf_AddChars(buf, str - cp, cp);              Buf_AddInterval(buf, cp, str);
         } else {          } else {
             if (var != NULL) {              if (var != NULL) {
                 int expand;                  int expand;
Line 2210 
Line 2179 
                          * the nested one                           * the nested one
                          */                           */
                         if (*p == '$') {                          if (*p == '$') {
                             Buf_AddChars(buf, p - str, str);                              Buf_AddInterval(buf, str, p);
                             str = p;                              str = p;
                             continue;                              continue;
                         }                          }
Line 2223 
Line 2192 
                              */                               */
                             for (;*p != '$' && *p != '\0'; p++)                              for (;*p != '$' && *p != '\0'; p++)
                                 continue;                                  continue;
                             Buf_AddChars(buf, p - str, str);                              Buf_AddInterval(buf, str, p);
                             str = p;                              str = p;
                             expand = FALSE;                              expand = FALSE;
                         }                          }
Line 2280 
Line 2249 
                  * Copy all the characters from the variable value straight                   * Copy all the characters from the variable value straight
                  * into the new string.                   * into the new string.
                  */                   */
                 Buf_AddChars(buf, strlen(val), val);                  Buf_AddString(buf, val);
                 if (doFree) {                  if (doFree) {
                     free ((Address)val);                      free ((Address)val);
                 }                  }

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