Reduce the number of explicit parameters passed to VarParse()

by passing them through struct VarParser.

Patch:		7.127

Submitted by:	Max Okumoto <okumoto@ucsd.edu>
This commit is contained in:
Hartmut Brandt 2005-03-21 07:40:33 +00:00
parent 586cfbb265
commit 73c5a04dfa

View File

@ -105,10 +105,11 @@ __FBSDID("$FreeBSD$");
*/
typedef struct VarParser {
const char *const input; /* pointer to input string */
const char *ptr; /* current parser pos in input str */
GNode *ctxt;
Boolean err;
} VarParser;
static char *VarParse(const char [], VarParser *, size_t *, Boolean *);
static char *VarParse(VarParser *, size_t *, Boolean *);
/*
* This is a harmless return value for Var_Parse that can be used by Var_Subst
@ -1919,26 +1920,31 @@ VarParseShort(const char input[], VarParser *vp,
}
static char *
VarParse(const char input[], VarParser *vp, size_t *consumed, Boolean *freeResult)
VarParse(VarParser *vp, size_t *consumed, Boolean *freeResult)
{
/* assert(input[0] == '$'); */
char *value;
*consumed += 1; /* consume '$' */
input += 1;
/* assert(vp->ptr[0] == '$'); */
if (input[0] == '\0') {
vp->ptr += 1; /* consume '$' */
if (vp->ptr[0] == '\0') {
*consumed += 1; /* consume '$' */
/* Error, there is only a dollar sign in the input string. */
*freeResult = FALSE;
return (vp->err ? var_Error : varNoError);
value = vp->err ? var_Error : varNoError;
} else if (input[0] == OPEN_PAREN || input[0] == OPEN_BRACE) {
} else if (vp->ptr[0] == OPEN_PAREN || vp->ptr[0] == OPEN_BRACE) {
*consumed += 1; /* consume '$' */
/* multi letter variable name */
return (VarParseLong(input, vp, consumed, freeResult));
value = VarParseLong(vp->ptr, vp, consumed, freeResult);
} else {
*consumed += 1; /* consume '$' */
/* single letter variable name */
return (VarParseShort(input, vp, consumed, freeResult));
value = VarParseShort(vp->ptr, vp, consumed, freeResult);
}
return (value);
}
/*-
@ -1970,12 +1976,13 @@ Var_Parse(const char input[], GNode *ctxt, Boolean err,
size_t *consumed, Boolean *freeResult)
{
VarParser vp = {
input,
input,
ctxt,
err
};
return VarParse(input, &vp, consumed, freeResult);
return VarParse(&vp, consumed, freeResult);
}
/*-