X-Git-Url: https://git.distorted.org.uk/~mdw/fwd/blobdiff_plain/28d2517c9cd3a1c6b21d0db91b93e01e9a84ed39..372a98e2893234a482e59ca32313db1bb86146d7:/exec.c diff --git a/exec.c b/exec.c index d81aeae..e73500d 100644 --- a/exec.c +++ b/exec.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: exec.c,v 1.2 1999/10/22 22:46:17 mdw Exp $ + * $Id: exec.c,v 1.4 2001/02/03 20:30:03 mdw Exp $ * * Source and target for executable programs * @@ -29,6 +29,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: exec.c,v $ + * 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. + * * Revision 1.2 1999/10/22 22:46:17 mdw * When a non-file endpoint is attached to a file, keep the file endpoint * open until the nonfile is done. This stops socket sources from @@ -152,7 +158,7 @@ typedef struct xept { struct xept *next, *prev; pid_t kid; endpt *f; - const char *desc; + char *desc; int st; xargs *xa; xopts *xo; @@ -694,6 +700,7 @@ static void xept_destroy(xept *xe) else xept_list = xe->next; + free(xe->desc); if (xe->f) xe->f->ops->close(xe->f); x_tidy(xe->xa, xe->xo); @@ -748,8 +755,8 @@ static void xept_error(char *p, void *v) if (p) fw_log(-1, "[%s] pid %i: %s", xe->desc, xe->kid, p); else { - selbuf_disable(&xe->err); close(xe->err.reader.fd); + selbuf_destroy(&xe->err); xe->e.f |= XEF_CLOSE; if (xe->e.f & XEF_EXIT) xept_destroy(xe); @@ -1026,7 +1033,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); } @@ -1104,6 +1111,7 @@ tidy: static void xsource_destroy(source *s) { xsource *xs = (xsource *)s; + free(xs->s.desc); exec_destroy(&xs->x); DESTROY(xs); } @@ -1157,6 +1165,7 @@ static endpt *xtarget_create(target *t, const char *desc) static void xtarget_destroy(target *t) { xtarget *xt = (xtarget *)t; + free(xt->t.desc); exec_destroy(&xt->x); DESTROY(xt); }