X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=7ff37822dd2d3a7ed3a2c4fe3a100d33c9319652;hb=c91aa2b237bef6003ead8dfc98cdcab89f97c654;hp=ff33da821a2a941ee786dd5217f6949796d363a9;hpb=8848a001bf529a3e06710b80b928094e48f25aa8;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index ff33da82..7ff37822 100644 --- a/src/files.c +++ b/src/files.c @@ -2584,13 +2584,21 @@ static int LoadLevel_CNT2(FILE *file, int chunk_size, struct LevelInfo *level) { int i, x, y; int element; - int num_contents, content_xsize, content_ysize; + int num_contents; +#if 0 + int content_xsize, content_ysize; +#endif int content_array[MAX_ELEMENT_CONTENTS][3][3]; element = getMappedElement(getFile16BitBE(file)); num_contents = getFile8Bit(file); +#if 1 + getFile8Bit(file); /* content x size (unused) */ + getFile8Bit(file); /* content y size (unused) */ +#else content_xsize = getFile8Bit(file); content_ysize = getFile8Bit(file); +#endif ReadUnusedBytesFromFile(file, LEVEL_CHUNK_CNT2_UNUSED); @@ -3356,7 +3364,8 @@ static void LoadLevelFromFileInfo_RND(struct LevelInfo *level, else /* check for pre-2.0 file format with cookie string */ { strcpy(cookie, chunk_name); - fgets(&cookie[4], MAX_LINE_LEN - 4, file); + if (fgets(&cookie[4], MAX_LINE_LEN - 4, file) == NULL) + cookie[4] = '\0'; if (strlen(cookie) > 0 && cookie[strlen(cookie) - 1] == '\n') cookie[strlen(cookie) - 1] = '\0'; @@ -6408,7 +6417,8 @@ static void LoadLevelFromFileInfo_DC(struct LevelInfo *level, if (level_file_info->packed) { /* read "magic bytes" from start of file */ - fgets(magic_bytes, num_magic_bytes + 1, file); + if (fgets(magic_bytes, num_magic_bytes + 1, file) == NULL) + magic_bytes[0] = '\0'; /* check "magic bytes" for correct file format */ if (!strPrefix(magic_bytes, "DC2")) @@ -7139,8 +7149,12 @@ static void LoadLevelFromFileInfo(struct LevelInfo *level, /* if level file is invalid, restore level structure to default values */ if (level->no_valid_file) + { setLevelInfoToDefaults(level, level_info_only); + level->no_valid_file = TRUE; /* but keep "no valid file" flag */ + } + if (level->game_engine_type == GAME_ENGINE_TYPE_UNKNOWN) level->game_engine_type = GAME_ENGINE_TYPE_RND; @@ -7576,10 +7590,14 @@ void LoadLevel(int nr) void LoadLevelInfoOnly(int nr) { +#if 0 char *filename; +#endif setLevelFileInfo(&level.file_info, nr); +#if 0 filename = level.file_info.filename; +#endif LoadLevelFromFileInfo(&level, &level.file_info, TRUE); } @@ -8783,7 +8801,8 @@ void LoadTapeFromFilename(char *filename) else /* check for pre-2.0 file format with cookie string */ { strcpy(cookie, chunk_name); - fgets(&cookie[4], MAX_LINE_LEN - 4, file); + if (fgets(&cookie[4], MAX_LINE_LEN - 4, file) == NULL) + cookie[4] = '\0'; if (strlen(cookie) > 0 && cookie[strlen(cookie) - 1] == '\n') cookie[strlen(cookie) - 1] = '\0'; @@ -9126,7 +9145,8 @@ void LoadScore(int nr) return; /* check file identifier */ - fgets(cookie, MAX_LINE_LEN, file); + if (fgets(cookie, MAX_LINE_LEN, file) == NULL) + cookie[0] = '\0'; if (strlen(cookie) > 0 && cookie[strlen(cookie) - 1] == '\n') cookie[strlen(cookie) - 1] = '\0'; @@ -9139,10 +9159,12 @@ void LoadScore(int nr) for (i = 0; i < MAX_SCORE_ENTRIES; i++) { - fscanf(file, "%d", &highscore[i].Score); - fgets(line, MAX_LINE_LEN, file); + if (fscanf(file, "%d", &highscore[i].Score) == EOF) + Error(ERR_WARN, "fscanf() failed; %s", strerror(errno)); + if (fgets(line, MAX_LINE_LEN, file) == NULL) + line[0] = '\0'; - if (line[strlen(line) - 1] == '\n') + if (strlen(line) > 0 && line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = '\0'; for (line_ptr = line; *line_ptr; line_ptr++)