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

Diff for /src/usr.bin/make/varmodifiers.c between version 1.7 and 1.8

version 1.7, 2001/05/03 13:41:13 version 1.8, 2001/05/07 22:59:33
Line 659 
Line 659 
     Boolean             err     UNUSED;      Boolean             err     UNUSED;
     int                 endc;      int                 endc;
 {  {
     static VarPattern   pattern;      VarPattern          *pattern;
     const char          *cp, *cp2;      const char          *cp, *cp2;
     int cnt = 0;      int cnt = 0;
     char startc = endc == ')' ? '(' : '}';      char startc = endc == ')' ? '(' : '}';
Line 689 
Line 689 
         }          }
     }      }
   
     pattern.lhs = interval_dup(*p, cp);      pattern = (VarPattern *)emalloc(sizeof(VarPattern));
     pattern.leftLen = cp - *p;      pattern->lbuffer = pattern->lhs = interval_dup(*p, cp);
     pattern.rhs = interval_dup(cp+1, cp2);      pattern->leftLen = cp - *p;
     pattern.rightLen = cp2 - (cp+1);      pattern->rhs = interval_dup(cp+1, cp2);
     pattern.flags = 0;      pattern->rightLen = cp2 - (cp+1);
       pattern->flags = 0;
     *p = cp2;      *p = cp2;
     return &pattern;      return pattern;
 }  }
   
   
Line 1314 
Line 1315 
     Boolean     err;      Boolean     err;
     int         endc;      int         endc;
 {  {
     static VarPattern   pattern;        /* just one for the whole system */      VarPattern *pattern;
     char        delim;      char        delim;
     const char  *s;      const char  *s;
   
       pattern = (VarPattern *)emalloc(sizeof(VarPattern));
       pattern->flags = 0;
     s = *p;      s = *p;
   
     pattern.flags = 0;  
     delim = s[1];      delim = s[1];
     if (delim == '\0')      if (delim == '\0')
         return NULL;          return NULL;
     s += 2;      s += 2;
   
     pattern.rhs = NULL;      pattern->rhs = NULL;
     pattern.lhs = VarGetPattern(ctxt, err, &s, delim, delim,      pattern->lhs = VarGetPattern(ctxt, err, &s, delim, delim,
         &pattern.leftLen, NULL);          &pattern->leftLen, NULL);
     pattern.lbuffer = pattern.lhs;      pattern->lbuffer = pattern->lhs;
     if (pattern.lhs != NULL) {      if (pattern->lhs != NULL) {
         pattern.rhs = VarGetPattern(ctxt, err, &s, delim, delim,          pattern->rhs = VarGetPattern(ctxt, err, &s, delim, delim,
             &pattern.rightLen, &pattern);              &pattern->rightLen, pattern);
         if (pattern.rhs != NULL) {          if (pattern->rhs != NULL) {
             /* Check for global substitution. If 'g' after the final              /* Check for global substitution. If 'g' after the final
              * delimiter, substitution is global and is marked that               * delimiter, substitution is global and is marked that
              * way.  */               * way.  */
             for (;; s++) {              for (;; s++) {
                 switch (*s) {                  switch (*s) {
                 case 'g':                  case 'g':
                     pattern.flags |= VAR_SUB_GLOBAL;                      pattern->flags |= VAR_SUB_GLOBAL;
                     continue;                      continue;
                 case '1':                  case '1':
                     pattern.flags |= VAR_SUB_ONE;                      pattern->flags |= VAR_SUB_ONE;
                     continue;                      continue;
                 }                  }
                 break;                  break;
             }              }
             if (*s == endc || *s == ':') {              if (*s == endc || *s == ':') {
                 *p = s;                  *p = s;
                 return &pattern;                  return pattern;
             }              }
         }          }
     }      }
     free_patternarg(&pattern);      free_patternarg(pattern);
     return NULL;      return NULL;
 }  }
   
Line 1396 
Line 1398 
     Boolean     err;      Boolean     err;
     int         endc;      int         endc;
 {  {
     static VarPattern pattern;      VarPattern *pattern;
     const char *s;      const char *s;
   
       pattern = (VarPattern *)emalloc(sizeof(VarPattern));
     s = *p + 1;      s = *p + 1;
     pattern.rhs = NULL;      pattern->rhs = NULL;
     pattern.lbuffer = VarGetPattern(ctxt, err, &s, ':', endc,      pattern->lbuffer = VarGetPattern(ctxt, err, &s, ':', endc,
         &pattern.leftLen, NULL);          &pattern->leftLen, NULL);
     if (s[-1] == endc || s[-1] == ':') {      if (s[-1] == endc || s[-1] == ':') {
         *p = s-1;          *p = s-1;
         return &pattern;          return pattern;
     }      }
     free_patternarg(&pattern);      free_patternarg(pattern);
     return NULL;      return NULL;
 }  }
   
Line 1418 
Line 1421 
     Boolean     err;      Boolean     err;
     int         endc    UNUSED;      int         endc    UNUSED;
 {  {
     static VarPattern pattern;      VarPattern *pattern;
     const char *s;      const char *s;
   
       pattern = (VarPattern *)emalloc(sizeof(VarPattern));
     s = *p + 1;      s = *p + 1;
     pattern.rhs = NULL;      pattern->rhs = NULL;
     pattern.lbuffer = VarGetPattern(ctxt, err, &s, '!', '!',      pattern->lbuffer = VarGetPattern(ctxt, err, &s, '!', '!',
         &pattern.leftLen, NULL);          &pattern->leftLen, NULL);
     if (s[-1] == '!') {      if (s[-1] == '!') {
         *p = s-1;          *p = s-1;
         return &pattern;          return pattern;
     }      }
     free_patternarg(&pattern);      free_patternarg(pattern);
     return NULL;      return NULL;
 }  }
   
Line 1438 
Line 1442 
     void *p;      void *p;
 {  {
     VarPattern *vp = (VarPattern *)p;      VarPattern *vp = (VarPattern *)p;
   
     free(vp->lbuffer);      free(vp->lbuffer);
     free(vp->rhs);      free(vp->rhs);
       free(vp);
 }  }
   
 #ifndef MAKE_BOOTSTRAP  #ifndef MAKE_BOOTSTRAP

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8