diff --git a/src/common/wadres.c b/src/common/wadres.c
index 43251c8d9d00507d5a251e24e422400bbd2c034a..6ff943ab03d876ba682ab436f22bc6af66b29567 100644 (file)
--- a/src/common/wadres.c
+++ b/src/common/wadres.c
#include <stdlib.h>
#include <assert.h>
-#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;
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);
}
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;
}
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);
}
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;
}
}
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)) {
}
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);
}
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);