/* * Use ~/.quake2/dir as fs_gamedir. */ void FS_AddHomeAsGameDirectory(char *dir) { char *home; char gdir[MAX_OSPATH]; size_t len; home = Sys_GetHomeDir(); if (home == NULL) { return; } len = snprintf(gdir, sizeof(gdir), "%s%s/", home, dir); FS_CreatePath(gdir); if ((len > 0) && (len < sizeof(gdir)) && (gdir[len - 1] == '/')) { gdir[len - 1] = 0; } Q_strlcpy(fs_gamedir, gdir, sizeof(fs_gamedir)); FS_AddGameDirectory(gdir); }
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); }