From: H.G.Muller Date: Mon, 4 Apr 2016 10:00:57 +0000 (+0200) Subject: Ignore stderr when reading from man command X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=908759b935cebda76084535213586637901126f2 Ignore stderr when reading from man command BufferCommandOutput was using StartChildProcess also used for engines, which combines the output from stdout and stderr on the pipe. On FreeBSD "man -w" produces spurious error messages, however, which would append to the path of the man file. To work around this we now use popen() to collect the output of the man command during help clicks. --- diff --git a/usystem.c b/usystem.c index 572b910..743c701 100644 --- a/usystem.c +++ b/usystem.c @@ -519,18 +519,25 @@ DestroyChildProcess (ProcRef pr, int signalType) char * BufferCommandOutput (char *command, int size) { - ChildProc *pr; char *res = (char *) calloc(1, size); if(res) { int count; FILE *f; +#if 0 + ChildProc *pr; StartChildProcess(command, ".", (ProcRef) &pr); // run command in daughter process f = fdopen(pr->fdFrom, "r"); count = fread(res, 1, size-1, f); // read its output fclose(f); - res[count > 0 ? count : 0] = NULLCHAR; DestroyChildProcess((ProcRef) pr, 9); free(pr); +#else + f = popen(command, "r"); + if(!f) return res; + count = fread(res, 1, size-1, f); // read its output + pclose(f); +#endif + res[count > 0 ? count : 0] = NULLCHAR; } return res; // return buffer with output }