Mercurial > hg > dmlib
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; }