X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhlsbr.c;h=7abbf43ecfb934b477968afbfd37fb307a7b9449;hb=726d5ae2bd65f6936b9291c8dad6c37cb202f482;hp=ae1fb5d1e28846714911e60cf06897c84e11679e;hpb=dd16d13e6e96a0ed6e7d7a23d6e45fd628420ae4;p=mmh diff --git a/uip/mhlsbr.c b/uip/mhlsbr.c index ae1fb5d..7abbf43 100644 --- a/uip/mhlsbr.c +++ b/uip/mhlsbr.c @@ -156,11 +156,13 @@ static struct mcomp *fmthd = NULL; static struct mcomp *fmttl = NULL; static struct mcomp global = { - NULL, NULL, NULL, NULL, NULL, NULL, 0, -1, 80, -1, 40, BELL, NULL + NULL, NULL, NULL, NULL, NULL, NULL, 0, -1, 80, -1, 40, BELL, NULL, NULL, + 0, NULL }; static struct mcomp holder = { - NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, NOCOMPONENT, NULL + NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, NOCOMPONENT, NULL, NULL, + 0, NULL }; struct pair { @@ -318,7 +320,8 @@ int mhl (int argc, char **argv) { int length = 0, nomore = 0; - int i, width = 0, vecp = 0; + unsigned int i, vecp = 0;; + int width = 0; char *cp, *folder = NULL, *form = NULL; char buf[BUFSIZ], *files[MAXARGS]; char **argp, **arguments; @@ -1905,7 +1908,7 @@ compileargs (struct mcomp *c1, char *nfs) { struct format *fmt; struct arglist *args; - int i; + unsigned int i; i = fmt_compile(nfs, &fmt); @@ -2017,7 +2020,7 @@ static void freecomps(void) { struct comp *c1, *c2; - int i; + unsigned int i; for (i = 0; i < sizeof(mhlcomp)/sizeof(mhlcomp[0]); i++) { if ((c1 = mhlcomp[i])) @@ -2038,7 +2041,7 @@ static void freecomptext(void) { struct comp *c1; - int i; + unsigned int i; for (i = 0; i < sizeof(mhlcomp)/sizeof(mhlcomp[0]); i++) { if ((c1 = mhlcomp[i])) @@ -2119,7 +2122,11 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state, FILE *fp) */ close(fdinput[1]); - exit(0); + /* + * Make sure we call _exit(), otherwise we may flush out the stdio + * buffers that we have duplicated from the parent. + */ + _exit(0); break; case -1: adios(NULL, "Unable to fork for filter writer process");