projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eb58d80
)
added detecting Mirror Magic style level files from magic bytes
author
Holger Schemel
<info@artsoft.org>
Sat, 25 Feb 2017 19:05:58 +0000
(20:05 +0100)
committer
Holger Schemel
<info@artsoft.org>
Fri, 23 Mar 2018 22:21:09 +0000
(23:21 +0100)
src/files.c
patch
|
blob
|
history
diff --git
a/src/files.c
b/src/files.c
index 0f478eb10164b241c93a980ce86c35f44e007a8a..bf0237f2a26890530984dfa506f5384010d0fdc2 100644
(file)
--- a/
src/files.c
+++ b/
src/files.c
@@
-1918,6
+1918,26
@@
static int getFileTypeFromBasename(char *basename)
return LEVEL_FILE_TYPE_UNKNOWN;
}
return LEVEL_FILE_TYPE_UNKNOWN;
}
+static int getFileTypeFromMagicBytes(char *filename, int type)
+{
+ File *file;
+
+ if ((file = openFile(filename, MODE_READ)))
+ {
+ char chunk_name[CHUNK_ID_LEN + 1];
+
+ getFileChunkBE(file, chunk_name, NULL);
+
+ if (strEqual(chunk_name, "MMII") ||
+ strEqual(chunk_name, "MIRR"))
+ type = LEVEL_FILE_TYPE_MM;
+
+ closeFile(file);
+ }
+
+ return type;
+}
+
static boolean checkForPackageFromBasename(char *basename)
{
/* !!! WON'T WORK ANYMORE IF getFileTypeFromBasename() ALSO DETECTS !!!
static boolean checkForPackageFromBasename(char *basename)
{
/* !!! WON'T WORK ANYMORE IF getFileTypeFromBasename() ALSO DETECTS !!!
@@
-2184,6
+2204,9
@@
static void determineLevelFileInfo_Filetype(struct LevelFileInfo *lfi)
{
if (lfi->type == LEVEL_FILE_TYPE_UNKNOWN)
lfi->type = getFileTypeFromBasename(lfi->basename);
{
if (lfi->type == LEVEL_FILE_TYPE_UNKNOWN)
lfi->type = getFileTypeFromBasename(lfi->basename);
+
+ if (lfi->type == LEVEL_FILE_TYPE_RND)
+ lfi->type = getFileTypeFromMagicBytes(lfi->filename, lfi->type);
}
static void setLevelFileInfo(struct LevelFileInfo *level_file_info, int nr)
}
static void setLevelFileInfo(struct LevelFileInfo *level_file_info, int nr)