aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorHartmut Brandt <harti@FreeBSD.org>2005-02-11 10:49:01 +0000
committerHartmut Brandt <harti@FreeBSD.org>2005-02-11 10:49:01 +0000
commit40fe2aa3110f24e22370049526164c49e9707e81 (patch)
tree76e6582e82eb36d0309859d495552a23a2835b51 /usr.bin
parent1121c3949722e23838af1478f6a8ef64c5b77839 (diff)
downloadsrc-40fe2aa3110f24e22370049526164c49e9707e81.tar.gz
src-40fe2aa3110f24e22370049526164c49e9707e81.zip
Convert several instances of negative logic to positive logic.
Submitted by: Max Okumoto <okumoto@ucsd.edu>
Notes
Notes: svn path=/head/; revision=141686
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/make/var.c169
1 files changed, 84 insertions, 85 deletions
diff --git a/usr.bin/make/var.c b/usr.bin/make/var.c
index ede5591e6db3..947a5ce2997f 100644
--- a/usr.bin/make/var.c
+++ b/usr.bin/make/var.c
@@ -891,58 +891,7 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr,
dynamic = FALSE;
start = str;
- if (str[1] != OPEN_PAREN && str[1] != OPEN_BRACE) {
- /*
- * If it's not bounded by braces of some sort, life is much simpler.
- * We just need to check for the first character and return the
- * value if it exists.
- */
- char name[2];
-
- name[0] = str[1];
- name[1] = '\0';
-
- v = VarFind(name, ctxt, FIND_ENV | FIND_GLOBAL | FIND_CMD);
- if (v == (Var *)NULL) {
- if (str[1] != '\0')
- *lengthPtr = 2;
- else
- *lengthPtr = 1;
-
- if ((ctxt == VAR_CMD) || (ctxt == VAR_GLOBAL)) {
- /*
- * If substituting a local variable in a non-local context,
- * assume it's for dynamic source stuff. We have to handle
- * this specially and return the longhand for the variable
- * with the dollar sign escaped so it makes it back to the
- * caller. Only four of the local variables are treated
- * specially as they are the only four that will be set
- * when dynamic sources are expanded.
- */
- /* XXX: It looks like $% and $! are reversed here */
- switch (str[1]) {
- case '@':
- return ("$(.TARGET)");
- case '%':
- return ("$(.ARCHIVE)");
- case '*':
- return ("$(.PREFIX)");
- case '!':
- return ("$(.MEMBER)");
- default:
- break;
- }
- }
- /*
- * Error
- */
- return (err ? var_Error : varNoError);
- } else {
- haveModifier = FALSE;
- tstr = &str[1];
- endc = str[1];
- }
- } else {
+ if (str[1] == OPEN_PAREN || str[1] == OPEN_BRACE) {
/* build up expanded variable name in this buffer */
Buffer *buf = Buf_Init(MAKE_BSIZE);
@@ -1089,7 +1038,13 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr,
}
}
- if (!haveModifier) {
+ if (haveModifier) {
+ /*
+ * Still need to get to the end of the variable specification,
+ * so kludge up a Var structure for the modifications
+ */
+ v = VarCreate(str, NULL, VAR_JUNK);
+ } else {
/*
* No modifiers -- have specification length so we can return
* now.
@@ -1107,15 +1062,60 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr,
Buf_Destroy(buf, TRUE);
return (err ? var_Error : varNoError);
}
- } else {
+ }
+ }
+ Buf_Destroy(buf, TRUE);
+ } else {
+ /*
+ * If it's not bounded by braces of some sort, life is much simpler.
+ * We just need to check for the first character and return the
+ * value if it exists.
+ */
+ char name[2];
+
+ name[0] = str[1];
+ name[1] = '\0';
+
+ v = VarFind(name, ctxt, FIND_ENV | FIND_GLOBAL | FIND_CMD);
+ if (v == (Var *)NULL) {
+ if (str[1] != '\0')
+ *lengthPtr = 2;
+ else
+ *lengthPtr = 1;
+
+ if ((ctxt == VAR_CMD) || (ctxt == VAR_GLOBAL)) {
/*
- * Still need to get to the end of the variable specification,
- * so kludge up a Var structure for the modifications
+ * If substituting a local variable in a non-local context,
+ * assume it's for dynamic source stuff. We have to handle
+ * this specially and return the longhand for the variable
+ * with the dollar sign escaped so it makes it back to the
+ * caller. Only four of the local variables are treated
+ * specially as they are the only four that will be set
+ * when dynamic sources are expanded.
*/
- v = VarCreate(str, NULL, VAR_JUNK);
+ /* XXX: It looks like $% and $! are reversed here */
+ switch (str[1]) {
+ case '@':
+ return ("$(.TARGET)");
+ case '%':
+ return ("$(.ARCHIVE)");
+ case '*':
+ return ("$(.PREFIX)");
+ case '!':
+ return ("$(.MEMBER)");
+ default:
+ break;
+ }
}
+ /*
+ * Error
+ */
+ return (err ? var_Error : varNoError);
+ } else {
+ haveModifier = FALSE;
+ tstr = &str[1];
+ endc = str[1];
}
- Buf_Destroy(buf, TRUE);
}
if (v->flags & VAR_IN_USE) {
@@ -1764,37 +1764,14 @@ Var_Subst(const char *var, char *str, GNode *ctxt, Boolean undefErr)
Buf_AddByte(buf, (Byte)str[0]);
str += 2;
- } else if (str[0] != '$') {
- /*
- * Skip as many characters as possible -- either to the end of
- * the string or to the next dollar sign (variable invocation).
- */
- const char *cp = str;
-
- do {
- str++;
- } while (str[0] != '$' && str[0] != '\0');
- Buf_AppendRange(buf, cp, str);
-
- } else {
+ } else if (str[0] == '$') {
/*
* Variable invocation.
*/
if (var != NULL) {
int expand;
for (;;) {
- if (str[1] != OPEN_PAREN && str[1] != OPEN_BRACE) {
- /*
- * Single letter variable name
- */
- if (var[1] != '\0' || var[0] != str[1]) {
- Buf_AddBytes(buf, 2, (const Byte *)str);
- str += 2;
- expand = FALSE;
- } else {
- expand = TRUE;
- }
- } else {
+ if (str[1] == OPEN_PAREN || str[1] == OPEN_BRACE) {
size_t ln;
const char *p = str + 2;
@@ -1821,7 +1798,9 @@ Var_Subst(const char *var, char *str, GNode *ctxt, Boolean undefErr)
}
ln = p - (str + 2);
- if (var[ln] != '\0' || strncmp(var, str + 2, ln) != 0) {
+ if (var[ln] == '\0' && strncmp(var, str + 2, ln) == 0) {
+ expand = TRUE;
+ } else {
/*
* Not the variable we want to expand, scan
* until the next variable
@@ -1832,8 +1811,17 @@ Var_Subst(const char *var, char *str, GNode *ctxt, Boolean undefErr)
Buf_AppendRange(buf, str, p);
str = p;
expand = FALSE;
- } else {
+ }
+ } else {
+ /*
+ * Single letter variable name
+ */
+ if (var[1] == '\0' && var[0] == str[1]) {
expand = TRUE;
+ } else {
+ Buf_AddBytes(buf, 2, (const Byte *)str);
+ str += 2;
+ expand = FALSE;
}
}
break;
@@ -1891,6 +1879,17 @@ Var_Subst(const char *var, char *str, GNode *ctxt, Boolean undefErr)
free(val);
}
}
+ } else {
+ /*
+ * Skip as many characters as possible -- either to the end of
+ * the string or to the next dollar sign (variable invocation).
+ */
+ const char *cp = str;
+
+ do {
+ str++;
+ } while (str[0] != '$' && str[0] != '\0');
+ Buf_AppendRange(buf, cp, str);
}
}