changeset 735:45a3f4f181b3

Fix pack file writing.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 21 Apr 2013 20:10:26 +0300
parents 56c1d288f0e2
children ea42faa02a9a
files dmpackutil.c
diffstat 1 files changed, 13 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/dmpackutil.c	Sun Apr 21 20:07:27 2013 +0300
+++ b/dmpackutil.c	Sun Apr 21 20:10:26 2013 +0300
@@ -59,25 +59,28 @@
 
     // Write PACK header
     if (fseek(pack->file, 0L, SEEK_SET) != 0)
-        return -4;
+        return DMERR_FSEEK;
 
-    dm_fwrite_str(pack->file, (Uint8 *) & hdr.ident, sizeof(hdr.ident));
-    dm_fwrite_le16(pack->file, hdr.version);
-    dm_fwrite_le32(pack->file, hdr.dirEntries);
-    dm_fwrite_le32(pack->file, hdr.dirOffset);
+    if (!dm_fwrite_str(pack->file, (Uint8 *) & hdr.ident, sizeof(hdr.ident)) ||
+        !dm_fwrite_le16(pack->file, hdr.version) ||
+        !dm_fwrite_le32(pack->file, hdr.dirEntries) ||
+        !dm_fwrite_le32(pack->file, hdr.dirOffset))
+        return DMERR_FWRITE;
 
     // Write the directory
     if (fseek(pack->file, hdr.dirOffset, SEEK_SET) != 0)
-        return -5;
+        return DMERR_FSEEK;
 
     node = pack->entries;
     while (node != NULL)
     {
         // Write one entry
-        dm_fwrite_str(pack->file, node->filename, sizeof(node->filename));
-        dm_fwrite_le32(pack->file, node->size);
-        dm_fwrite_le32(pack->file, node->offset);
-        dm_fwrite_le32(pack->file, node->length);
+        if (!dm_fwrite_str(pack->file, node->filename, sizeof(node->filename)) ||
+            !dm_fwrite_le32(pack->file, node->size) ||
+            !dm_fwrite_le32(pack->file, node->offset) ||
+            !dm_fwrite_le32(pack->file, node->length) ||
+            !dm_fwrite_le32(pack->file, node->flags))
+            return DMERR_FWRITE;
 
         node = node->next;
     }