X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/e19206c2bfbd24ae9eceb5fbba9324fdcb3a544f..3bc429127d05ea3c84e3c151d53ad3546bea5e9b:/env.c diff --git a/env.c b/env.c index 4a4fbe5..57d029a 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.5 2004/04/08 01:36:11 mdw Exp $ * * Fiddling with environment variables * @@ -27,14 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: env.c,v $ - * Revision 1.1 1999/07/26 23:15:57 mdw - * Fiddling with environment variables. - * - */ - /*----- Header files ------------------------------------------------------*/ #include @@ -97,7 +89,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 +102,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@ --- * @@ -171,7 +163,7 @@ char **env_export(sym_table *t) for (sym_mkiter(&i, t); (v = sym_next(&i)) != 0; ) { n++; - sz += strlen(SYM_NAME(v)) + strlen(v->v) + 2; + sz += SYM_LEN(v) + strlen(v->v) + 2; } /* --- Allocate the big chunk of memory --- */ @@ -209,7 +201,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); }