--- src/usr.bin/make/var.c 2005/02/09 11:52:18 1.71 +++ src/usr.bin/make/var.c 2005/02/09 20:26:53 1.72 @@ -140,12 +140,49 @@ GNode *VAR_CMD; /* variabl #define OPEN_BRACKET '{' #define CLOSE_BRACKET '}' -static Var *VarCreate(const char [], const char [], int); -static void VarDestroy(Var *, Boolean); static char *VarGetPattern(GNode *, int, char **, int, int *, size_t *, VarPattern *); static int VarPrintVar(void *, void *); +/* + * Create a Var object. + * + * @param name Name of variable. + * @param value Value of variable. + * @param flags Flags set on variable. + */ +static Var * +VarCreate(const char name[], const char value[], int flags) +{ + Var *v; + + v = emalloc(sizeof(Var)); + v->name = estrdup(name); + v->val = Buf_Init(0); + v->flags = flags; + + if (value != NULL) { + Buf_Append(v->val, value); + } + return (v); +} + +/* + * Destroy a Var object. + * + * @param v Object to destroy. + * @param f true if internal buffer in Buffer object is to be + * removed. + */ +static void +VarDestroy(Var *v, Boolean f) +{ + + Buf_Destroy(v->val, f); + free(v->name); + free(v); +} + /*- *----------------------------------------------------------------------- * VarCmp -- @@ -329,49 +366,12 @@ VarFind(const char *name, GNode *ctxt, i static void VarAdd(const char *name, const char *val, GNode *ctxt) { + Lst_AtFront(&ctxt->context, VarCreate(name, val, 0)); DEBUGF(VAR, ("%s:%s = %s\n", ctxt->name, name, val)); } -/* - * Create a Var object. - * - * @param name Name of variable. - * @param value Value of variable. - * @param flags Flags set on variable. - */ -static Var * -VarCreate(const char name[], const char value[], int flags) -{ - Var *v; - - v = emalloc(sizeof(Var)); - v->name = estrdup(name); - v->val = Buf_Init(0); - v->flags = flags; - - if (value != NULL) { - Buf_Append(v->val, value); - } - return (v); -} - -/* - * Destroy a Var object. - * - * @param v Object to destroy. - * @param f true if internal buffer in Buffer object is to be - * removed. - */ -static void -VarDestroy(Var *v, Boolean f) -{ - Buf_Destroy(v->val, f); - free(v->name); - free(v); -} - /*- *----------------------------------------------------------------------- * Var_Delete --