[BACK]Return to var.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/var.c between version 1.663 and 1.664

version 1.663, 2020/11/05 20:50:13 version 1.664, 2020/11/05 21:16:20
Line 3692  EvalUndefined(
Line 3692  EvalUndefined(
  * Return whether to continue parsing. */   * Return whether to continue parsing. */
 static Boolean  static Boolean
 ParseVarnameLong(  ParseVarnameLong(
         const char **pp,          const char *p,
         char startc,          char startc,
         GNode *ctxt,          GNode *ctxt,
         VarEvalFlags eflags,          VarEvalFlags eflags,
   
           const char **out_FALSE_pp,
         VarParseResult *out_FALSE_res,          VarParseResult *out_FALSE_res,
         const char **out_FALSE_val,          const char **out_FALSE_val,
         void **out_FALSE_freeIt,          void **out_FALSE_freeIt,
Line 3715  ParseVarnameLong(
Line 3716  ParseVarnameLong(
     Boolean haveModifier;      Boolean haveModifier;
     Boolean dynamic = FALSE;      Boolean dynamic = FALSE;
   
     const char *const start = *pp;      const char *const start = p;
     char endc = startc == '(' ? ')' : '}';      char endc = startc == '(' ? ')' : '}';
   
     const char *p = start + 2;      p += 2;                     /* skip "${" or "$(" or "y(" */
     varname = ParseVarname(&p, startc, endc, ctxt, eflags, &namelen);      varname = ParseVarname(&p, startc, endc, ctxt, eflags, &namelen);
   
     if (*p == ':') {      if (*p == ':') {
Line 3727  ParseVarnameLong(
Line 3728  ParseVarnameLong(
         haveModifier = FALSE;          haveModifier = FALSE;
     } else {      } else {
         Parse_Error(PARSE_FATAL, "Unclosed variable \"%s\"", varname);          Parse_Error(PARSE_FATAL, "Unclosed variable \"%s\"", varname);
         *pp = p;  
         free(varname);          free(varname);
           *out_FALSE_pp = p;
         *out_FALSE_val = var_Error;          *out_FALSE_val = var_Error;
         *out_FALSE_res = VPR_PARSE_MSG;          *out_FALSE_res = VPR_PARSE_MSG;
         return FALSE;          return FALSE;
Line 3750  ParseVarnameLong(
Line 3751  ParseVarnameLong(
   
         if (!haveModifier) {          if (!haveModifier) {
             p++;                /* skip endc */              p++;                /* skip endc */
             *pp = p;              *out_FALSE_pp = p;
             *out_FALSE_res = EvalUndefined(dynamic, start, p, varname, eflags,              *out_FALSE_res = EvalUndefined(dynamic, start, p, varname, eflags,
                                            out_FALSE_freeIt, out_FALSE_val);                                             out_FALSE_freeIt, out_FALSE_val);
             return FALSE;              return FALSE;
Line 3828  VarParseResult
Line 3829  VarParseResult
 Var_Parse(const char **pp, GNode *ctxt, VarEvalFlags eflags,  Var_Parse(const char **pp, GNode *ctxt, VarEvalFlags eflags,
           const char **out_val, void **out_val_freeIt)            const char **out_val, void **out_val_freeIt)
 {  {
     const char *const start = *pp;      const char *p = *pp;
     const char *p;      const char *const start = p;
     Boolean haveModifier;       /* TRUE if have modifiers for the variable */      Boolean haveModifier;       /* TRUE if have modifiers for the variable */
     char startc;                /* Starting character if variable in parens      char startc;                /* Starting character if variable in parens
                                  * or braces */                                   * or braces */
Line 3857  Var_Parse(const char **pp, GNode *ctxt, 
Line 3858  Var_Parse(const char **pp, GNode *ctxt, 
      * initialized. */       * initialized. */
     endc = '\0';      endc = '\0';
   
     startc = start[1];      startc = p[1];
     if (startc != '(' && startc != '{') {      if (startc != '(' && startc != '{') {
         VarParseResult res;          VarParseResult res;
         if (!ParseVarnameShort(startc, pp, ctxt, eflags, &res, out_val, &v))          if (!ParseVarnameShort(startc, pp, ctxt, eflags, &res, out_val, &v))
             return res;              return res;
         haveModifier = FALSE;          haveModifier = FALSE;
         p = start + 1;          p++;
     } else {      } else {
         VarParseResult res;          VarParseResult res;
         if (!ParseVarnameLong(pp, startc, ctxt, eflags,          if (!ParseVarnameLong(p, startc, ctxt, eflags,
                               &res, out_val, out_val_freeIt,                                pp, &res, out_val, out_val_freeIt,
                               &endc, &p, &v, &haveModifier, &extramodifiers,                                &endc, &p, &v, &haveModifier, &extramodifiers,
                               &dynamic, &exprFlags))                                &dynamic, &exprFlags))
             return res;              return res;

Legend:
Removed from v.1.663  
changed lines
  Added in v.1.664

CVSweb <webmaster@jp.NetBSD.org>