X-Git-Url: https://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fcommon%2Fwadres.c;h=6ff943ab03d876ba682ab436f22bc6af66b29567;hp=43251c8d9d00507d5a251e24e422400bbd2c034a;hb=HEAD;hpb=5c603e0069a09b80bf58b5269cf2bbc6be152222 diff --git a/src/common/wadres.c b/src/common/wadres.c index 43251c8..6ff943a 100644 --- a/src/common/wadres.c +++ b/src/common/wadres.c @@ -3,9 +3,9 @@ #include #include -#include "wadres.h" -#include "streams.h" -#include "cp866.h" +#include "common/wadres.h" +#include "common/streams.h" +#include "common/cp866.h" typedef struct Entry { long offset, size; @@ -28,8 +28,8 @@ static Block *blocks[MAX_RESOURCES]; static int s_start, s_end; static int check_header (Stream *r) { - assert(r != NULL); char ident[4]; + assert(r != NULL); stream_setpos(r, 0); // !!! stream_read(ident, 4, 1, r); return (memcmp(ident, "IWAD", 4) == 0) || (memcmp(ident, "PWAD", 4) == 0); @@ -47,8 +47,9 @@ int WADRES_addwad (Stream *r) { } static int WADRES_addresource (const Entry *e) { + int i; assert(e != NULL); - for (int i = 0; i < n_resources; ++i) { + for (i = 0; i < n_resources; ++i) { if (cp866_strncasecmp(resources[i].name, e->name, 8) == 0) { memcpy(&resources[i], e, sizeof(Entry)); return i; @@ -63,13 +64,14 @@ static int WADRES_addresource (const Entry *e) { } static int WADRES_read (int f) { + int ok = 1; + int32_t n, dir, i; Stream *r = wads[f]; stream_setpos(r, 4); // skip magic - int32_t n = stream_read32(r); - int32_t dir = stream_read32(r); + n = stream_read32(r); + dir = stream_read32(r); stream_setpos(r, dir); - int ok = 1; - for (int32_t i = 0; ok && i < n; ++i) { + for (i = 0; ok && i < n; ++i) { Entry e; e.offset = stream_read32(r); e.size = stream_read32(r); @@ -81,8 +83,9 @@ static int WADRES_read (int f) { } int WADRES_rehash (void) { + int i; int ok = 1; - for (int i = 0; i < n_wads; ++i) { + for (i = 0; i < n_wads; ++i) { if (!WADRES_read(i)) { ok = 0; } @@ -105,9 +108,10 @@ int WADRES_maxids (void) { } int WADRES_findsprite (const char n[4], int s, int d, char *dir) { + int i; s += 'A'; d += '0'; - for (int i = s_start + 1; i < s_end; i++) { + for (i = s_start + 1; i < s_end; i++) { char a, b; char *wn = resources[i].name; if (cp866_strncasecmp(wn, n, 4) == 0 && (wn[4] == s || wn[6] == s)) { @@ -145,9 +149,11 @@ void WADRES_getname (int id, char *name) { } void WADRES_getdata (int id, void *data) { + long pos; + Stream *r; assert(id >= 0 && id < n_resources); - Stream *r = wads[resources[id].f]; - long pos = stream_getpos(r); + r = wads[resources[id].f]; + pos = stream_getpos(r); stream_setpos(r, resources[id].offset); stream_read(data, resources[id].size, 1, r); stream_setpos(r, pos); @@ -175,9 +181,11 @@ void *WADRES_lock (int id) { } void WADRES_unlock (void *data) { + int id; + Block *x; if (data) { - Block *x = data - sizeof(Block); - int id = x->id; + x = (Block*)((uintptr_t)data - sizeof(Block)); + id = x->id; assert(id >= 0 && id < MAX_RESOURCES); x->ref -= 1; assert(x->ref >= 0);