Fix multi-leg promotions
[xboard.git] / usystem.c
index 23ba305..743c701 100644 (file)
--- a/usystem.c
+++ b/usystem.c
@@ -516,6 +516,32 @@ DestroyChildProcess (ProcRef pr, int signalType)
     close(cp->fdTo);
 }
 
+char *
+BufferCommandOutput (char *command, int size)
+{
+    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);
+       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
+}
+
 void
 InterruptChildProcess (ProcRef pr)
 {