From 5f43600abc12449a5af5d7d8a4f12cdd88a40c99 Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Tue, 15 Mar 2016 12:36:49 +0100 Subject: [PATCH] Fix reading of long man files The low-level read call to read from the spawned process did not always return as many characters as we asked for, so we now use fread. --- usystem.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/usystem.c b/usystem.c index 23b798b..572b910 100644 --- a/usystem.c +++ b/usystem.c @@ -523,8 +523,11 @@ BufferCommandOutput (char *command, int size) char *res = (char *) calloc(1, size); if(res) { int count; + FILE *f; StartChildProcess(command, ".", (ProcRef) &pr); // run command in daughter process - count = read(pr->fdFrom, res, size-1); // read its output + 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); -- 1.7.0.4