Module Name: src Committed By: rillig Date: Fri Sep 11 04:18:45 UTC 2020
Modified Files: src/usr.bin/make: cond.c Log Message: make(1): rename CondParser.condExpr to p The prefix "cond" was needed when this struct field was a global variable. The main name "expr" was not precise enough since this code is about parsing a condition, not an expression. During parsing, this variable does not contain the whole expression but a pointer to the remaining part of the condition, therefore the name "expr" had been confusing. To generate a diff of this commit: cvs rdiff -u -r1.121 -r1.122 src/usr.bin/make/cond.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/cond.c diff -u src/usr.bin/make/cond.c:1.121 src/usr.bin/make/cond.c:1.122 --- src/usr.bin/make/cond.c:1.121 Fri Sep 11 04:07:44 2020 +++ src/usr.bin/make/cond.c Fri Sep 11 04:18:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cond.c,v 1.121 2020/09/11 04:07:44 rillig Exp $ */ +/* $NetBSD: cond.c,v 1.122 2020/09/11 04:18:44 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: cond.c,v 1.121 2020/09/11 04:07:44 rillig Exp $"; +static char rcsid[] = "$NetBSD: cond.c,v 1.122 2020/09/11 04:18:44 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94"; #else -__RCSID("$NetBSD: cond.c,v 1.121 2020/09/11 04:07:44 rillig Exp $"); +__RCSID("$NetBSD: cond.c,v 1.122 2020/09/11 04:18:44 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -150,7 +150,7 @@ typedef enum { typedef struct { const struct If *if_info; /* Info for current statement */ - const char *condExpr; /* The expression to parse */ + const char *p; /* The remaining condition to parse */ Token curr; /* Single push-back token used in parsing */ } CondParser; @@ -191,8 +191,8 @@ CondParser_PushBack(CondParser *par, Tok static void CondParser_SkipWhitespace(CondParser *par) { - while (isspace((unsigned char)par->condExpr[0])) - par->condExpr++; + while (isspace((unsigned char)par->p[0])) + par->p++; } /* Parse the argument of a built-in function. @@ -415,25 +415,25 @@ CondGetString(CondParser *par, Boolean d Buf_Init(&buf, 0); str = NULL; *freeIt = NULL; - *quoted = qt = *par->condExpr == '"' ? 1 : 0; + *quoted = qt = *par->p == '"' ? 1 : 0; if (qt) - par->condExpr++; - for (start = par->condExpr; *par->condExpr && str == NULL;) { - switch (*par->condExpr) { + par->p++; + for (start = par->p; *par->p && str == NULL;) { + switch (*par->p) { case '\\': - par->condExpr++; - if (par->condExpr[0] != '\0') { - Buf_AddByte(&buf, *par->condExpr); - par->condExpr++; + par->p++; + if (par->p[0] != '\0') { + Buf_AddByte(&buf, *par->p); + par->p++; } continue; case '"': if (qt) { - par->condExpr++; /* we don't want the quotes */ + par->p++; /* we don't want the quotes */ goto got_str; } - Buf_AddByte(&buf, *par->condExpr); /* likely? */ - par->condExpr++; + Buf_AddByte(&buf, *par->p); /* likely? */ + par->p++; continue; case ')': case '!': @@ -444,14 +444,14 @@ CondGetString(CondParser *par, Boolean d case '\t': if (!qt) goto got_str; - Buf_AddByte(&buf, *par->condExpr); - par->condExpr++; + Buf_AddByte(&buf, *par->p); + par->p++; continue; case '$': /* if we are in quotes, then an undefined variable is ok */ eflags = ((!qt && doEval) ? VARE_UNDEFERR : 0) | (doEval ? VARE_WANTRES : 0); - str = Var_Parse(par->condExpr, VAR_CMD, eflags, &len, freeIt); + str = Var_Parse(par->p, VAR_CMD, eflags, &len, freeIt); if (str == var_Error) { if (*freeIt) { free(*freeIt); @@ -464,16 +464,16 @@ CondGetString(CondParser *par, Boolean d str = NULL; goto cleanup; } - par->condExpr += len; + par->p += len; /* * If the '$' was first char (no quotes), and we are * followed by space, the operator or end of expression, * we are done. */ - if ((par->condExpr == start + len) && - (*par->condExpr == '\0' || - isspace((unsigned char)*par->condExpr) || - strchr("!=><)", *par->condExpr))) { + if ((par->p == start + len) && + (*par->p == '\0' || + isspace((unsigned char)*par->p) || + strchr("!=><)", *par->p))) { goto cleanup; } @@ -495,8 +495,8 @@ CondGetString(CondParser *par, Boolean d str = NULL; goto cleanup; } - Buf_AddByte(&buf, *par->condExpr); - par->condExpr++; + Buf_AddByte(&buf, *par->p); + par->p++; continue; } } @@ -556,16 +556,16 @@ compare_expression(CondParser *par, Bool * known relational operator, pretend we got a * != 0 comparison. */ - op = par->condExpr; - switch (*par->condExpr) { + op = par->p; + switch (*par->p) { case '!': case '=': case '<': case '>': - if (par->condExpr[1] == '=') { - par->condExpr += 2; + if (par->p[1] == '=') { + par->p += 2; } else { - par->condExpr += 1; + par->p += 1; } break; default: @@ -575,7 +575,7 @@ compare_expression(CondParser *par, Bool } /* For .ifxxx "..." check for non-empty string. */ if (lhsQuoted) { - t = lhs[0] != 0; + t = lhs[0] != '\0'; goto done; } /* For .ifxxx <number> compare against zero */ @@ -584,7 +584,7 @@ compare_expression(CondParser *par, Bool goto done; } /* For .if ${...} check for non-empty string (defProc is ifdef). */ - if (par->if_info->form[0] == 0) { + if (par->if_info->form[0] == '\0') { t = lhs[0] != 0; goto done; } @@ -595,7 +595,7 @@ compare_expression(CondParser *par, Bool CondParser_SkipWhitespace(par); - if (*par->condExpr == '\0') { + if (*par->p == '\0') { Parse_Error(PARSE_WARNING, "Missing right-hand-side of operator"); goto done; @@ -745,7 +745,7 @@ compare_function(CondParser *par, Boolea Token t; char *arg = NULL; int arglen; - const char *cp = par->condExpr; + const char *cp = par->p; const char *cp1; for (fn_def = fn_defs; fn_def->fn_name != NULL; fn_def++) { @@ -760,18 +760,18 @@ compare_function(CondParser *par, Boolea arglen = fn_def->fn_getarg(doEval, &cp, &arg, fn_def->fn_name); if (arglen <= 0) { - par->condExpr = cp; + par->p = cp; return arglen < 0 ? TOK_ERROR : TOK_FALSE; } /* Evaluate the argument using the required function. */ t = !doEval || fn_def->fn_proc(arglen, arg); free(arg); - par->condExpr = cp; + par->p = cp; return t; } /* Push anything numeric through the compare expression */ - cp = par->condExpr; + cp = par->p; if (isdigit((unsigned char)cp[0]) || strchr("+-", cp[0])) return compare_expression(par, doEval); @@ -788,7 +788,7 @@ compare_function(CondParser *par, Boolea continue; if (*cp1 == '=' || *cp1 == '!') return compare_expression(par, doEval); - par->condExpr = cp; + par->p = cp; /* * Evaluate the argument using the default function. @@ -813,36 +813,36 @@ CondToken(CondParser *par, Boolean doEva return t; } - while (par->condExpr[0] == ' ' || par->condExpr[0] == '\t') { - par->condExpr++; + while (par->p[0] == ' ' || par->p[0] == '\t') { + par->p++; } - switch (par->condExpr[0]) { + switch (par->p[0]) { case '(': - par->condExpr++; + par->p++; return TOK_LPAREN; case ')': - par->condExpr++; + par->p++; return TOK_RPAREN; case '|': - par->condExpr++; - if (par->condExpr[0] == '|') { - par->condExpr++; + par->p++; + if (par->p[0] == '|') { + par->p++; } return TOK_OR; case '&': - par->condExpr++; - if (par->condExpr[0] == '&') { - par->condExpr++; + par->p++; + if (par->p[0] == '&') { + par->p++; } return TOK_AND; case '!': - par->condExpr++; + par->p++; return TOK_NOT; case '#': @@ -1040,7 +1040,7 @@ Cond_EvalExpression(const struct If *inf assert(info != NULL); par.if_info = info; - par.condExpr = line; + par.p = line; par.curr = TOK_NONE; rval = do_Cond_EvalExpression(&par, value);