X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=be7bd1a1aa84b01c27732517fb0798904c88d193;hb=c56ae03b51200429cfa20db7d61cfe907dc2e26e;hp=daaaaa72dcef77d08db0378f12d236d9b90e75a7;hpb=19e168a132d1c0543a13cbf9495f579c137dea94;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index daaaaa72..be7bd1a1 100644 --- a/src/files.c +++ b/src/files.c @@ -58,8 +58,9 @@ #define LEVELSETUP_FILENAME "lvlsetup.cnf" #define LEVELINFO_FILENAME "lvlinfo.cnf" #define LEVELFILE_EXTENSION "lvl" -#define TAPEFILE_EXTENSION "rec" +#define TAPEFILE_EXTENSION "tap" #define SCOREFILE_EXTENSION "sco" +#define ERROR_FILENAME "error.out" #endif /* file permissions for newly written files */ @@ -80,7 +81,7 @@ static char *getGlobalDataDir() return GAME_DIR; } -static char *getUserDataDir() +char *getUserDataDir() { static char *userdata_dir = NULL; @@ -1663,3 +1664,63 @@ void SaveLevelSetup() chmod(filename, SETUP_PERMS); } + +#ifdef MSDOS +static boolean initErrorFile() +{ + char *filename; + FILE *error_file; + + InitUserDataDirectory(); + + filename = getPath2(getUserDataDir(), ERROR_FILENAME); + error_file = fopen(filename, "w"); + free(filename); + + if (error_file == NULL) + return FALSE; + + fclose(error_file); + + return TRUE; +} + +FILE *openErrorFile() +{ + static boolean first_access = TRUE; + char *filename; + FILE *error_file; + + if (first_access) + { + if (!initErrorFile()) + return NULL; + + first_access = FALSE; + } + + filename = getPath2(getUserDataDir(), ERROR_FILENAME); + error_file = fopen(filename, "a"); + free(filename); + + return error_file; +} + +void dumpErrorFile() +{ + char *filename; + FILE *error_file; + + filename = getPath2(getUserDataDir(), ERROR_FILENAME); + error_file = fopen(filename, "r"); + free(filename); + + if (error_file != NULL) + { + while (!feof(error_file)) + fputc(fgetc(error_file), stderr); + + fclose(error_file); + } +} +#endif