void Sys_RedirectStdout(void) { char *cur; char *old; char dir[MAX_OSPATH]; char path_stdout[MAX_OSPATH]; char path_stderr[MAX_OSPATH]; const char *tmp; if (is_portable) { tmp = Sys_GetBinaryDir(); Q_strlcpy(dir, tmp, sizeof(dir)); } else { tmp = Sys_GetHomeDir(); Q_strlcpy(dir, tmp, sizeof(dir)); } if (dir == NULL) { return; } cur = old = dir; while (cur != NULL) { if ((cur - old) > 1) { *cur = '\0'; Sys_Mkdir(dir); *cur = '/'; } old = cur; cur = strchr(old + 1, '/'); } snprintf(path_stdout, sizeof(path_stdout), "%s/%s", dir, "stdout.txt"); snprintf(path_stderr, sizeof(path_stderr), "%s/%s", dir, "stderr.txt"); freopen(path_stdout, "w", stdout); freopen(path_stderr, "w", stderr); }
void FS_AddBinaryDirAsGameDirectory(const char* dir) { char gdir[MAX_OSPATH]; const char *datadir = Sys_GetBinaryDir(); if(datadir[0] == '\0') { return; } int len = snprintf(gdir, sizeof(gdir), "%s%s/", datadir, dir); printf("Using binary dir %s to fetch paks\n", gdir); if ((len > 0) && (len < sizeof(gdir)) && (gdir[len - 1] == '/')) { gdir[len - 1] = 0; } FS_AddGameDirectory(gdir); }