Improve resize/co-dragging GTK
[xboard.git] / usystem.c
index 77efb60..743c701 100644 (file)
--- a/usystem.c
+++ b/usystem.c
@@ -347,7 +347,7 @@ ExpandPathName (char *path)
 
     if (*s == '~') {
        if(s[1] == '~') { // use ~~ for XBoard's private data directory
-         snprintf(d, 4*MSG_SIZ, DATADIR "%s", s+2);
+         snprintf(d, 4*MSG_SIZ, "%s%s", dataDir, s+2);
        } else
        if (*(s+1) == '/') {
          safeStrCpy(d, getpwuid(getuid())->pw_dir, 4*MSG_SIZ );
@@ -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)
 {