Fix reading of long man files
authorH.G.Muller <hgm@hgm-xboard.(none)>
Tue, 15 Mar 2016 11:36:49 +0000 (12:36 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Tue, 29 Mar 2016 14:51:33 +0000 (16:51 +0200)
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

index 23b798b..572b910 100644 (file)
--- 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);