X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffiles.c;h=2b089217ae9daba79e3c6d345ec153f5f8d9787e;hb=34efaa3925a28cb95ecb05bf2c693c16f6edfe2f;hp=d28c1f48279502d5dcfa181d4f271e802c212ef0;hpb=c020bbb83dd5b52a353fa867d7746a43eb5e6ffc;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index d28c1f48..2b089217 100644 --- a/src/files.c +++ b/src/files.c @@ -60,6 +60,7 @@ #define LEVELFILE_EXTENSION "lvl" #define TAPEFILE_EXTENSION "rec" #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; @@ -89,8 +90,7 @@ static char *getUserDataDir() char *home_dir = getHomeDir(); char *data_dir = USERDATA_DIRECTORY; - userdata_dir = checked_malloc(strlen(home_dir) + strlen(data_dir) + 2); - sprintf(userdata_dir, "%s/%s", home_dir, data_dir); + userdata_dir = getPath2(home_dir, data_dir); } return userdata_dir; @@ -110,10 +110,10 @@ static char *getUserLevelDir(char *level_subdir) if (userlevel_dir) free(userlevel_dir); - userlevel_dir = checked_malloc(strlen(data_dir) + strlen(userlevel_subdir) + - strlen(level_subdir) + 3); - sprintf(userlevel_dir, "%s/%s%s%s", data_dir, userlevel_subdir, - (strlen(level_subdir) > 0 ? "/" : ""), level_subdir); + if (strlen(level_subdir) > 0) + userlevel_dir = getPath3(data_dir, userlevel_subdir, level_subdir); + else + userlevel_dir = getPath2(data_dir, userlevel_subdir); return userlevel_dir; } @@ -127,10 +127,10 @@ static char *getTapeDir(char *level_subdir) if (tape_dir) free(tape_dir); - tape_dir = checked_malloc(strlen(data_dir) + strlen(tape_subdir) + - strlen(level_subdir) + 3); - sprintf(tape_dir, "%s/%s%s%s", data_dir, tape_subdir, - (strlen(level_subdir) > 0 ? "/" : ""), level_subdir); + if (strlen(level_subdir) > 0) + tape_dir = getPath3(data_dir, tape_subdir, level_subdir); + else + tape_dir = getPath2(data_dir, tape_subdir); return tape_dir; } @@ -144,10 +144,10 @@ static char *getScoreDir(char *level_subdir) if (score_dir) free(score_dir); - score_dir = checked_malloc(strlen(data_dir) + strlen(score_subdir) + - strlen(level_subdir) + 3); - sprintf(score_dir, "%s/%s%s%s", data_dir, score_subdir, - (strlen(level_subdir) > 0 ? "/" : ""), level_subdir); + if (strlen(level_subdir) > 0) + score_dir = getPath3(data_dir, score_subdir, level_subdir); + else + score_dir = getPath2(data_dir, score_subdir); return score_dir; } @@ -699,7 +699,7 @@ void LoadScore(int level_nr) /* always start with reliable default values */ for(i=0; i