projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed compiler warning
[rocksndiamonds.git]
/
src
/
files.c
diff --git
a/src/files.c
b/src/files.c
index 49fe48569f6ddad83e5d5d78144075a60f07093d..cdb890b92f52325e57ff16136f5696cadbbec4ae 100644
(file)
--- a/
src/files.c
+++ b/
src/files.c
@@
-60,7
+60,6
@@
#define TAPE_CHUNK_VERS_SIZE 8 // size of file version chunk
#define TAPE_CHUNK_HEAD_SIZE 20 // size of tape file header
#define TAPE_CHUNK_VERS_SIZE 8 // size of file version chunk
#define TAPE_CHUNK_HEAD_SIZE 20 // size of tape file header
-#define TAPE_CHUNK_HEAD_UNUSED 1 // unused tape header bytes
#define TAPE_CHUNK_SCRN_SIZE 2 // size of screen size chunk
#define SCORE_CHUNK_VERS_SIZE 8 // size of file version chunk
#define TAPE_CHUNK_SCRN_SIZE 2 // size of screen size chunk
#define SCORE_CHUNK_VERS_SIZE 8 // size of file version chunk
@@
-3591,6
+3590,14
@@
static void LoadLevelFromFileInfo_RND(struct LevelInfo *level,
int chunk_size_expected =
(chunk_info[i].loader)(file, chunk_size, level);
int chunk_size_expected =
(chunk_info[i].loader)(file, chunk_size, level);
+ if (chunk_size_expected < 0)
+ {
+ Warn("error reading chunk '%s' in level file '%s'",
+ chunk_name, filename);
+
+ break;
+ }
+
// the size of some chunks cannot be checked before reading other
// chunks first (like "HEAD" and "BODY") that contain some header
// information, so check them here
// the size of some chunks cannot be checked before reading other
// chunks first (like "HEAD" and "BODY") that contain some header
// information, so check them here
@@
-3598,6
+3605,8
@@
static void LoadLevelFromFileInfo_RND(struct LevelInfo *level,
{
Warn("wrong size (%d) of chunk '%s' in level file '%s'",
chunk_size, chunk_name, filename);
{
Warn("wrong size (%d) of chunk '%s' in level file '%s'",
chunk_size, chunk_name, filename);
+
+ break;
}
}
}
}
}
}
@@
-7877,6
+7886,7
@@
static void setTapeInfoToDefaults(void)
tape.level_nr = level_nr;
tape.counter = 0;
tape.changed = FALSE;
tape.level_nr = level_nr;
tape.counter = 0;
tape.changed = FALSE;
+ tape.solved = FALSE;
tape.recording = FALSE;
tape.playing = FALSE;
tape.recording = FALSE;
tape.playing = FALSE;
@@
-7963,8
+7973,7
@@
static int LoadTape_HEAD(File *file, int chunk_size, struct TapeInfo *tape)
setTapeActionFlags(tape, getFile8Bit(file));
tape->property_bits = getFile8Bit(file);
setTapeActionFlags(tape, getFile8Bit(file));
tape->property_bits = getFile8Bit(file);
-
- ReadUnusedBytesFromFile(file, TAPE_CHUNK_HEAD_UNUSED);
+ tape->solved = getFile8Bit(file);
engine_version = getFileVersion(file);
if (engine_version > 0)
engine_version = getFileVersion(file);
if (engine_version > 0)
@@
-8409,9
+8418,7
@@
static void SaveTape_HEAD(FILE *file, struct TapeInfo *tape)
putFile8Bit(file, getTapeActionValue(tape));
putFile8Bit(file, tape->property_bits);
putFile8Bit(file, getTapeActionValue(tape));
putFile8Bit(file, tape->property_bits);
-
- // unused bytes not at the end here for 4-byte alignment of engine_version
- WriteUnusedBytesToFile(file, TAPE_CHUNK_HEAD_UNUSED);
+ putFile8Bit(file, tape->solved);
putFileVersion(file, tape->engine_version);
}
putFileVersion(file, tape->engine_version);
}
@@
-8593,6
+8600,10
@@
void DumpTape(struct TapeInfo *tape)
tape->engine_version);
Print("Level series identifier: '%s'\n", tape->level_identifier);
tape->engine_version);
Print("Level series identifier: '%s'\n", tape->level_identifier);
+ Print("Solution tape: %s\n",
+ tape->solved ? "yes" :
+ tape->game_version < VERSION_IDENT(4,3,2,3) ? "unknown" : "no");
+
Print("Special tape properties: ");
if (tape->property_bits == TAPE_PROPERTY_NONE)
Print("[none]");
Print("Special tape properties: ");
if (tape->property_bits == TAPE_PROPERTY_NONE)
Print("[none]");
@@
-13548,7
+13559,9
@@
void CreateCollectElementImages(void)
Info("Converting image file from BMP to PNG ...");
Info("Converting image file from BMP to PNG ...");
- system(cmd_convert);
+ if (system(cmd_convert) != 0)
+ Fail("converting image file failed");
+
unlink(filename_bmp);
Info("Done.");
unlink(filename_bmp);
Info("Done.");