diff -urN tworld-1.3.0/defs.h tworld-1.3.0.new/defs.h --- tworld-1.3.0/defs.h 2006-04-15 19:58:36.000000000 -0500 +++ tworld-1.3.0.new/defs.h 2007-11-21 04:19:28.000000000 -0600 @@ -8,6 +8,7 @@ #define _defs_h_ #include +#include #include "gen.h" /* @@ -34,8 +35,8 @@ /* Pseudorandom number generators. */ typedef struct prng { - unsigned long initial; /* initial seed value */ - unsigned long value; /* latest random value */ + uint32_t initial; /* initial seed value */ + uint32_t value; /* latest random value */ char shared; /* FALSE if independent sequence */ } prng; @@ -65,8 +66,8 @@ */ typedef struct solutioninfo { actlist moves; /* the actual moves of the solution */ - unsigned long rndseed; /* the PRNG's initial seed */ - unsigned long flags; /* other flags (currently unused) */ + uint32_t rndseed; /* the PRNG's initial seed */ + uint32_t flags; /* other flags (currently unused) */ unsigned char rndslidedir; /* random slide's initial direction */ signed char stepping; /* the timer offset */ } solutioninfo; @@ -196,7 +197,7 @@ int solutionsize; /* size of the saved solution data */ unsigned char *leveldata; /* the data defining the level */ unsigned char *solutiondata; /* the player's best solution so far */ - unsigned long levelhash; /* the level data's hash value */ + uint32_t levelhash; /* the level data's hash value */ char const *unsolvable; /* why level is unsolvable, or NULL */ char name[256]; /* name of the level */ char passwd[256]; /* the level's password */ diff -urN tworld-1.3.0/fileio.c tworld-1.3.0.new/fileio.c --- tworld-1.3.0/fileio.c 2006-02-23 21:34:54.000000000 -0600 +++ tworld-1.3.0.new/fileio.c 2007-11-21 04:21:36.000000000 -0600 @@ -242,7 +242,7 @@ /* Read one byte as an unsigned integer value. */ -int filereadint8(fileinfo *file, unsigned char *val8, char const *msg) +int filereadint8(fileinfo *file, uint8_t *val8, char const *msg) { int byte; @@ -255,7 +255,7 @@ /* Write one byte as an unsigned integer value. */ -int filewriteint8(fileinfo *file, unsigned char val8, char const *msg) +int filewriteint8(fileinfo *file, uint8_t val8, char const *msg) { errno = 0; if (fputc(val8, file->fp) != EOF) @@ -265,7 +265,7 @@ /* Read two bytes as an unsigned integer value stored in little-endian. */ -int filereadint16(fileinfo *file, unsigned short *val16, char const *msg) +int filereadint16(fileinfo *file, uint16_t *val16, char const *msg) { int byte; @@ -282,7 +282,7 @@ /* Write two bytes as an unsigned integer value in little-endian. */ -int filewriteint16(fileinfo *file, unsigned short val16, char const *msg) +int filewriteint16(fileinfo *file, uint16_t val16, char const *msg) { errno = 0; if (fputc(val16 & 0xFF, file->fp) != EOF @@ -293,7 +293,7 @@ /* Read four bytes as an unsigned integer value stored in little-endian. */ -int filereadint32(fileinfo *file, unsigned long *val32, char const *msg) +int filereadint32(fileinfo *file, uint32_t *val32, char const *msg) { int byte; @@ -316,7 +316,7 @@ /* Write four bytes as an unsigned integer value in little-endian. */ -int filewriteint32(fileinfo *file, unsigned long val32, char const *msg) +int filewriteint32(fileinfo *file, uint32_t val32, char const *msg) { errno = 0; if (fputc(val32 & 0xFF, file->fp) != EOF diff -urN tworld-1.3.0/fileio.h tworld-1.3.0.new/fileio.h --- tworld-1.3.0/fileio.h 2006-02-23 20:51:59.000000000 -0600 +++ tworld-1.3.0.new/fileio.h 2007-11-21 04:18:25.000000000 -0600 @@ -8,6 +8,7 @@ #define _fileio_h_ #include "defs.h" +#include /* Reset a fileinfo structure to indicate no file. */ @@ -49,17 +50,17 @@ * from the current position in the given file. For the multi-byte * values, the value is assumed to be stored in little-endian. */ -extern int filereadint8(fileinfo *file, unsigned char *val8, +extern int filereadint8(fileinfo *file, uint8_t *val8, char const *msg); -extern int filewriteint8(fileinfo *file, unsigned char val8, +extern int filewriteint8(fileinfo *file, uint8_t val8, char const *msg); -extern int filereadint16(fileinfo *file, unsigned short *val16, +extern int filereadint16(fileinfo *file, uint16_t *val16, char const *msg); -extern int filewriteint16(fileinfo *file, unsigned short val16, +extern int filewriteint16(fileinfo *file, uint16_t val16, char const *msg); -extern int filereadint32(fileinfo *file, unsigned long *val32, +extern int filereadint32(fileinfo *file, uint32_t *val32, char const *msg); -extern int filewriteint32(fileinfo *file, unsigned long val32, +extern int filewriteint32(fileinfo *file, uint32_t val32, char const *msg); /* Read size bytes from the given file and return the bytes in a diff -urN tworld-1.3.0/oshw.h tworld-1.3.0.new/oshw.h --- tworld-1.3.0/oshw.h 2006-04-11 03:53:27.000000000 -0500 +++ tworld-1.3.0.new/oshw.h 2007-11-21 04:25:55.000000000 -0600 @@ -131,7 +131,7 @@ /* The font provides special monospaced digit characters at 144-153. */ -enum { CHAR_MZERO = 144 }; +#define CHAR_MZERO ((char)144) /* * Video output functions. diff -urN tworld-1.3.0/random.c tworld-1.3.0.new/random.c --- tworld-1.3.0/random.c 2006-04-10 00:53:38.000000000 -0500 +++ tworld-1.3.0.new/random.c 2007-11-21 04:26:06.000000000 -0600 @@ -24,12 +24,12 @@ /* The most recently generated random number is stashed here, so that * it can provide the initial seed of the next PRNG. */ -static unsigned long lastvalue = 0x80000000UL; +static uint32_t lastvalue = 0x80000000UL; /* The standard linear congruential random-number generator needs no * introduction. */ -static unsigned long nextvalue(unsigned long value) +static uint32_t nextvalue(uint32_t value) { return ((value * 1103515245UL) + 12345UL) & 0x7FFFFFFFUL; } @@ -67,7 +67,7 @@ /* Reset a PRNG to an independent sequence. */ -void restartprng(prng *gen, unsigned long seed) +void restartprng(prng *gen, uint32_t seed) { gen->value = gen->initial = seed & 0x7FFFFFFFUL; gen->shared = FALSE; diff -urN tworld-1.3.0/random.h tworld-1.3.0.new/random.h --- tworld-1.3.0/random.h 2006-01-14 05:12:55.000000000 -0600 +++ tworld-1.3.0.new/random.h 2007-11-21 04:27:25.000000000 -0600 @@ -19,7 +19,7 @@ /* Restart an existing PRNG upon a predetermined sequence. */ -extern void restartprng(prng *gen, unsigned long initial); +extern void restartprng(prng *gen, uint32_t initial); /* Retrieve the original seed value of the current sequence. */ diff -urN tworld-1.3.0/series.c tworld-1.3.0.new/series.c --- tworld-1.3.0/series.c 2006-04-16 18:18:01.000000000 -0500 +++ tworld-1.3.0.new/series.c 2007-11-21 04:15:37.000000000 -0600 @@ -46,9 +46,9 @@ /* Calculate a hash value for the given block of data. */ -static unsigned long hashvalue(unsigned char const *data, unsigned int size) +static uint32_t hashvalue(unsigned char const *data, unsigned int size) { - static unsigned long remainders[256] = { + static uint32_t remainders[256] = { 0x00000000, 0x04C11DB7, 0x09823B6E, 0x0D4326D9, 0x130476DC, 0x17C56B6B, 0x1A864DB2, 0x1E475005, 0x2608EDB8, 0x22C9F00F, 0x2F8AD6D6, 0x2B4BCB61, 0x350C9B64, 0x31CD86D3, 0x3C8EA00A, 0x384FBDBD, 0x4C11DB70, 0x48D0C6C7, @@ -94,7 +94,7 @@ 0xBCB4666D, 0xB8757BDA, 0xB5365D03, 0xB1F740B4 }; - unsigned long accum; + uint32_t accum; unsigned int i, j; for (j = 0, accum = 0xFFFFFFFFUL ; j < size ; ++j) { @@ -113,7 +113,7 @@ */ static int readseriesheader(gameseries *series) { - unsigned short val16; + uint16_t val16; int ruleset; if (!filereadint16(&series->mapfile, &val16, "not a valid data file")) @@ -149,7 +149,7 @@ { unsigned char *data; unsigned char const *dataend; - unsigned short size; + uint16_t size; int n; if (!filereadint16(file, &size, NULL)) @@ -450,7 +450,7 @@ fileinfo file; seriesdata *sdata = (seriesdata*)data; gameseries *series; - unsigned long magic; + uint32_t magic; char *datfilename; int config, f; diff -urN tworld-1.3.0/solution.c tworld-1.3.0.new/solution.c --- tworld-1.3.0/solution.c 2006-04-15 18:49:27.000000000 -0500 +++ tworld-1.3.0.new/solution.c 2007-11-21 04:17:46.000000000 -0600 @@ -8,6 +8,7 @@ #include #include #include +#include #include "defs.h" #include "err.h" #include "fileio.h" @@ -215,9 +216,9 @@ static int readsolutionheader(fileinfo *file, int ruleset, int *flags, int *extrasize, unsigned char *extra) { - unsigned long sig; - unsigned short f; - unsigned char n; + uint32_t sig; + uint16_t f; + uint8_t n; if (!filereadint32(file, &sig, "not a valid solution file")) return FALSE; @@ -475,7 +476,7 @@ */ static int readsolution(fileinfo *file, gamesetup *game) { - unsigned long size; + uint32_t size; game->number = 0; game->sgflags = 0; @@ -706,8 +707,8 @@ int loadsolutionsetname(char const *filename, char *buffer) { fileinfo file; - unsigned long dwrd; - unsigned short word; + uint32_t dwrd; + uint16_t word; int size; clearfileinfo(&file); diff -urN tworld-1.3.0/unslist.c tworld-1.3.0.new/unslist.c --- tworld-1.3.0/unslist.c 2006-04-12 23:47:50.000000000 -0500 +++ tworld-1.3.0.new/unslist.c 2007-11-21 04:27:16.000000000 -0600 @@ -22,7 +22,7 @@ int setid; /* the ID of the level set's name */ int levelnum; /* the level's number */ int size; /* the levels data's compressed size */ - unsigned long hashval; /* the levels data's hash value */ + uint32_t hashval; /* the levels data's hash value */ int note; /* the entry's annotation ID, if any */ } unslistentry; @@ -112,7 +112,7 @@ /* Add a new entry with the given data to the list. */ static int addtounslist(int setid, int levelnum, - int size, unsigned long hashval, int note) + int size, uint32_t hashval, int note) { if (listcount == listallocated) { listallocated = listallocated ? listallocated * 2 : 16; @@ -152,8 +152,10 @@ { char buf[256], token[256]; char const *p; - unsigned long hashval; - int setid, size; + uint32_t hashval; + unsigned long hashval_long; + int setid; + unsigned int size; int lineno, levelnum, n; setid = 0; @@ -169,7 +171,8 @@ continue; } n = sscanf(p, "%d: %04X%08lX: %[^\n\r]", - &levelnum, &size, &hashval, token); + &levelnum, &size, &hashval_long, token); + hashval = (uint32_t)hashval_long; if (n > 0 && levelnum > 0 && levelnum < 65536 && setid) { if (n == 1) { n = sscanf(p, "%*d: %s", token);