X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/e2a18bd0eda077f0920274fd114240bc786f03b1..20eb516fdebd2fb901e6a09ffa7e741cfb8e3a83:/env.c?ds=inline diff --git a/env.c b/env.c index 4a4fbe5..d648b79 100644 --- a/env.c +++ b/env.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: env.c,v 1.1 1999/07/26 23:15:57 mdw Exp $ + * $Id: env.c,v 1.2 2000/06/17 10:39:00 mdw Exp $ * * Fiddling with environment variables * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: env.c,v $ + * Revision 1.2 2000/06/17 10:39:00 mdw + * Add support for arena management. + * * Revision 1.1 1999/07/26 23:15:57 mdw * Fiddling with environment variables. * @@ -97,7 +100,7 @@ void env_put(sym_table *t, const char *name, const char *value) { size_t eq = strcspn(name, "="); if (name[eq] == '=') { - q = xmalloc(eq + 1); + q = x_alloc(t->t.a, eq + 1); memcpy(q, name, eq); q[eq] = 0; value = name + eq + 1; @@ -110,21 +113,21 @@ void env_put(sym_table *t, const char *name, const char *value) if (!value) { var *v; if ((v = sym_find(t, name, -1, 0, 0)) != 0) { - free(v->v); + x_free(t->t.a, v->v); sym_remove(t, v); } } else { unsigned found; var *v = sym_find(t, name, -1, sizeof(*v), &found); if (found) - free(v->v); - v->v = xstrdup(value); + x_free(t->t.a, v->v); + v->v = x_strdup(t->t.a, value); } /* --- Tidying --- */ if (q) - free(q); + xfree(q); } /* --- @env_import@ --- * @@ -209,7 +212,7 @@ void env_destroy(sym_table *t) var *v; for (sym_mkiter(&i, t); (v = sym_next(&i)) != 0; ) - free(v->v); + x_free(t->t.a, v->v); sym_destroy(t); }