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 );
close(cp->fdTo);
}
+char *
+BufferCommandOutput (char *command, int size)
+{
+ ChildProc *pr;
+ char *res = (char *) calloc(1, size);
+ if(res) {
+ int count;
+ StartChildProcess(command, ".", (ProcRef) &pr); // run command in daughter process
+ count = read(pr->fdFrom, res, size-1); // read its output
+ res[count > 0 ? count : 0] = NULLCHAR;
+ DestroyChildProcess((ProcRef) pr, 9);
+ free(pr);
+ }
+ return res; // return buffer with output
+}
+
void
InterruptChildProcess (ProcRef pr)
{