diff options
author | harti <harti@FreeBSD.org> | 2005-02-18 15:32:06 +0000 |
---|---|---|
committer | harti <harti@FreeBSD.org> | 2005-02-18 15:32:06 +0000 |
commit | 16ce0eb32df576165185382552b92a827b589570 (patch) | |
tree | 3613978ec3962c8394b1178e37c222c6c5263135 /usr.bin | |
parent | 92bbf17de2e4782a44b3a0f527ed3882526029ff (diff) | |
download | FreeBSD-src-16ce0eb32df576165185382552b92a827b589570.zip FreeBSD-src-16ce0eb32df576165185382552b92a827b589570.tar.gz |
Push the assignments of some variables down into the sub-blocks where
it is actually needed. This makes clear in which subblocks the variables
are not needed and which can easier be split out.
Submitted by: Max Okumoto <okumoto@ucsd.edu>
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/make/var.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/usr.bin/make/var.c b/usr.bin/make/var.c index 59a8a70..4919f72 100644 --- a/usr.bin/make/var.c +++ b/usr.bin/make/var.c @@ -880,14 +880,11 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, * is done to support dynamic sources. The * result is just the invocation, unaltered */ - *freePtr = FALSE; - dynamic = FALSE; - start = str; - if (str[1] == '\0') { /* * Error - there is only a dollar sign! */ + *freePtr = FALSE; *lengthPtr = 1; return (err ? var_Error : varNoError); } @@ -938,12 +935,14 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, * right now, setting the length to be the distance to * the end of the string, since that's what make does. */ + *freePtr = FALSE; *lengthPtr = tstr - str; return (var_Error); } haveModifier = (*tstr == ':'); *tstr = '\0'; /* modify input string */ + start = str; Buf_AddByte(buf, (Byte)'\0'); str = Buf_GetAll(buf, (size_t *)NULL); /* REPLACE str */ @@ -1028,6 +1027,7 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, dynamic = TRUE; break; default: + dynamic = FALSE; break; } } else if ((vlen > 2) && (str[0] == '.') && @@ -1043,7 +1043,11 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, (strncmp(str, ".MEMBER", len) == 0)) { dynamic = TRUE; + } else { + dynamic = FALSE; } + } else { + dynamic = FALSE; } if (haveModifier) { @@ -1067,11 +1071,15 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, Buf_Destroy(buf, TRUE); return (str); } else { + *freePtr = FALSE; Buf_Destroy(buf, TRUE); return (err ? var_Error : varNoError); } } + } else { + dynamic = FALSE; } + *freePtr = FALSE; Buf_Destroy(buf, TRUE); } else { @@ -1116,8 +1124,12 @@ Var_Parse(char *str, GNode *ctxt, Boolean err, size_t *lengthPtr, /* * Error */ + *freePtr = FALSE; return (err ? var_Error : varNoError); } + dynamic = FALSE; + start = str; + *freePtr = FALSE; haveModifier = FALSE; startc = 0; endc = str[1]; |