aboutsummaryrefslogtreecommitdiff
path: root/tools/create_kyradat
diff options
context:
space:
mode:
authorMax Horn2007-09-22 07:32:28 +0000
committerMax Horn2007-09-22 07:32:28 +0000
commit79e323d6dd7a6270331068a9871b18902321ba0b (patch)
tree3be5d36051dac9911bdf291851b48994061d3fc9 /tools/create_kyradat
parent47b8dbbf525ecc90ca869dca7219e3c22e6f79b5 (diff)
downloadscummvm-rg350-79e323d6dd7a6270331068a9871b18902321ba0b.tar.gz
scummvm-rg350-79e323d6dd7a6270331068a9871b18902321ba0b.tar.bz2
scummvm-rg350-79e323d6dd7a6270331068a9871b18902321ba0b.zip
Added create_kyradat to our regular build system, too; fixed some warnings (and added a FIXME about ambiguious code)
svn-id: r29012
Diffstat (limited to 'tools/create_kyradat')
-rw-r--r--tools/create_kyradat/create_kyradat.cpp16
-rw-r--r--tools/create_kyradat/module.mk16
2 files changed, 27 insertions, 5 deletions
diff --git a/tools/create_kyradat/create_kyradat.cpp b/tools/create_kyradat/create_kyradat.cpp
index 665db7d454..a6df6ae321 100644
--- a/tools/create_kyradat/create_kyradat.cpp
+++ b/tools/create_kyradat/create_kyradat.cpp
@@ -58,7 +58,7 @@ const ExtractType extractTypeTable[] = {
{ kTypeRoomList, extractRooms, createFilename },
{ kTypeShapeList, extractShapes, createFilename },
{ kTypeRawData, extractRaw, createFilename },
- { -1, 0 }
+ { -1, 0, 0}
};
const ExtractFilename extractFilenames[] = {
@@ -336,10 +336,16 @@ bool extractStrings(PAKFile &out, const Game *g, const byte *data, const uint32
// We simply skip every other string
if (i == size)
continue;
- uint32 size = strlen((const char*) data + i);
- i += size; targetsize = --targetsize - size;
+ uint32 len = strlen((const char*) data + i);
+ i += len;
+#if 1
+ // FIXME: Not sure whether this correct; the original code was ambiguious, see below
+ targetsize = targetsize - 1 - len;
+#else
+ targetsize = --targetsize - len; // FIXME: This operation is undefined
+#endif
while (!data[++i]) {
- if (i == size)
+ if (i == len)
break;
targetsize--;
}
@@ -404,7 +410,7 @@ bool extractStrings(PAKFile &out, const Game *g, const byte *data, const uint32
} else if (g->special == kAmigaVersion) {
// we need to strip some aligment zeros out here
int dstPos = 0;
- for (int i = 0; i < size; ++i) {
+ for (uint32 i = 0; i < size; ++i) {
if (!data[i] && ((i+1) & 0x1))
continue;
*output++ = data[i];
diff --git a/tools/create_kyradat/module.mk b/tools/create_kyradat/module.mk
new file mode 100644
index 0000000000..c8df680c40
--- /dev/null
+++ b/tools/create_kyradat/module.mk
@@ -0,0 +1,16 @@
+MODULE := tools/create_kyradat
+
+MODULE_DIRS += \
+ tools/create_kyradat/
+
+TOOLS += \
+ $(MODULE)/create_kyradat$(EXEEXT)
+
+MODULE_OBJS := \
+ $(MODULE)/create_kyradat.o \
+ $(MODULE)/pak.o \
+ $(MODULE)/md5.o \
+ $(MODULE)/util.o
+
+$(MODULE)/create_kyradat$(EXEEXT): $(MODULE_OBJS)
+ $(CXX) $(LDFLAGS) $+ -o $@