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

Diff for /src/usr.bin/make/parsevar.c between version 1.2 and 1.3

version 1.2, 2004/04/07 13:11:36 version 1.3, 2007/07/08 17:44:20
Line 41 
Line 41 
   
 static const char *find_op1(const char *);  static const char *find_op1(const char *);
 static const char *find_op2(const char *);  static const char *find_op2(const char *);
   static bool parse_variable_assignment(const char *, int);
   
 static const char *  static const char *
 find_op1(const char *p)  find_op1(const char *p)
Line 68 
Line 69 
     return p;      return p;
 }  }
   
 bool  static bool
 Parse_DoVar(const char *line,  parse_variable_assignment(const char *line,
     GSymT *ctxt)                /* Context in which to do the assignment */      int ctxt)                   /* Context in which to do the assignment */
 {  {
     const char  *arg;      const char  *arg;
     char        *res1 = NULL, *res2 = NULL;      char        *res1 = NULL, *res2 = NULL;
Line 82 
Line 83 
     int             type;       /* Type of assignment */      int             type;       /* Type of assignment */
     struct Name     name;      struct Name     name;
   
     arg = VarName_Get(line, &name, (SymTable *)ctxt, true,      arg = VarName_Get(line, &name, NULL, true,
         FEATURES(FEATURE_SUNSHCMD) ? find_op1 : find_op2);          FEATURES(FEATURE_SUNSHCMD) ? find_op1 : find_op2);
   
     while (isspace(*arg))      while (isspace(*arg))
Line 147 
Line 148 
     while (isspace(*arg))      while (isspace(*arg))
         arg++;          arg++;
     /* If the variable already has a value, we don't do anything.  */      /* If the variable already has a value, we don't do anything.  */
     if ((type & VAR_OPT) && Var_Valuei(name.s, name.e) != NULL) {      if ((type & VAR_OPT) && Var_Definedi(name.s, name.e)) {
         VarName_Free(&name);          VarName_Free(&name);
         return true;          return true;
     }      }
Line 188 
Line 189 
         if (Var_Valuei(name.s, name.e) == NULL)          if (Var_Valuei(name.s, name.e) == NULL)
             Var_Seti(name.s, name.e, "", ctxt);              Var_Seti(name.s, name.e, "", ctxt);
   
         res2 = Var_Subst(arg, (SymTable *)ctxt, false);          res2 = Var_Subst(arg, NULL, false);
         oldVars = oldOldVars;          oldVars = oldOldVars;
   
         arg = res2;          arg = res2;
Line 203 
Line 204 
     free(res2);      free(res2);
     free(res1);      free(res1);
     return true;      return true;
   }
   
   bool
   Parse_DoVar(const char *line)
   {
           return parse_variable_assignment(line, VAR_GLOBAL);
   }
   
   bool
   Parse_CmdlineVar(const char *line)
   {
           bool result;
   
           oldVars = false;
           result = parse_variable_assignment(line, VAR_CMD);
           oldVars = true;
           return result;
 }  }
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3