X-Git-Url: https://git.distorted.org.uk/~mdw/fwd/blobdiff_plain/e68b88bf4ad78f86ac74c52adba87d27c59ed121..6f427571cdd33114313fa886333bfc74265d1b19:/exec.c diff --git a/exec.c b/exec.c index 284bba4..1f0102b 100644 --- a/exec.c +++ b/exec.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: exec.c,v 1.3 2000/07/01 11:28:52 mdw Exp $ + * $Id: exec.c,v 1.6 2002/02/22 23:43:32 mdw Exp $ * * Source and target for executable programs * @@ -29,6 +29,15 @@ /*----- Revision history --------------------------------------------------* * * $Log: exec.c,v $ + * Revision 1.6 2002/02/22 23:43:32 mdw + * Call @xfree@ rather than @free@. + * + * Revision 1.5 2002/01/13 14:49:03 mdw + * Track @lbuf@ changes in mLib. + * + * Revision 1.4 2001/02/03 20:30:03 mdw + * Support re-reading config files on SIGHUP. + * * Revision 1.3 2000/07/01 11:28:52 mdw * Use new mLib selbuf features. * @@ -155,7 +164,7 @@ typedef struct xept { struct xept *next, *prev; pid_t kid; endpt *f; - const char *desc; + char *desc; int st; xargs *xa; xopts *xo; @@ -468,9 +477,9 @@ static void xenv_destroy(xenv *xe) while (xe) { xenv *xxe = xe; xe = xe->next; - free(xxe->name); + xfree(xxe->name); if (xxe->value) - free(xxe->value); + xfree(xxe->value); DESTROY(xxe); } } @@ -491,7 +500,7 @@ static void x_tidy(xargs *xa, xopts *xo) { xa->ref--; if (!xa->ref) - free(xa); + xfree(xa); xo->ref--; if (!xo->ref) { @@ -504,7 +513,7 @@ static void x_tidy(xargs *xa, xopts *xo) /* --- @attach@ --- */ -static void xept_error(char */*p*/, void */*v*/); +static void xept_error(char */*p*/, size_t /*len*/, void */*v*/); static void xept_attach(endpt *e, reffd *in, reffd *out) { @@ -697,6 +706,7 @@ static void xept_destroy(xept *xe) else xept_list = xe->next; + xfree(xe->desc); if (xe->f) xe->f->ops->close(xe->f); x_tidy(xe->xa, xe->xo); @@ -738,6 +748,7 @@ static void xept_chld(int n, void *p) /* --- @xept_error@ --- * * * Arguments: @char *p@ = pointer to string read from stderr + * @size_t len@ = length of the string * @void *v@ = pointer to by endpoint * * Returns: --- @@ -745,7 +756,7 @@ static void xept_chld(int n, void *p) * Use: Handles error reports from a child process. */ -static void xept_error(char *p, void *v) +static void xept_error(char *p, size_t len, void *v) { xept *xe = v; if (p) @@ -1029,7 +1040,7 @@ static endpt *exec_endpt(xdata *x, const char *desc) xe->xo = x->xo; xe->xo->ref++; xe->kid = -1; xe->f = 0; - xe->desc = desc; + xe->desc = xstrdup(desc); return (&xe->e); } @@ -1107,6 +1118,7 @@ tidy: static void xsource_destroy(source *s) { xsource *xs = (xsource *)s; + xfree(xs->s.desc); exec_destroy(&xs->x); DESTROY(xs); } @@ -1160,6 +1172,7 @@ static endpt *xtarget_create(target *t, const char *desc) static void xtarget_destroy(target *t) { xtarget *xt = (xtarget *)t; + xfree(xt->t.desc); exec_destroy(&xt->x); DESTROY(xt); }