diff options
Diffstat (limited to 'devtools/create_neverhood/util.cpp')
| -rw-r--r-- | devtools/create_neverhood/util.cpp | 152 | 
1 files changed, 152 insertions, 0 deletions
diff --git a/devtools/create_neverhood/util.cpp b/devtools/create_neverhood/util.cpp new file mode 100644 index 0000000000..5ce8237b85 --- /dev/null +++ b/devtools/create_neverhood/util.cpp @@ -0,0 +1,152 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +#include "util.h" +#include <stdarg.h> + +#ifdef _MSC_VER +	#define	vsnprintf _vsnprintf +#endif + +void error(const char *s, ...) { +	char buf[1024]; +	va_list va; + +	va_start(va, s); +	vsnprintf(buf, 1024, s, va); +	va_end(va); + +	fprintf(stderr, "ERROR: %s!\n", buf); + +	exit(1); +} + +void warning(const char *s, ...) { +	char buf[1024]; +	va_list va; + +	va_start(va, s); +	vsnprintf(buf, 1024, s, va); +	va_end(va); + +	fprintf(stderr, "WARNING: %s!\n", buf); +} + +int scumm_stricmp(const char *s1, const char *s2) { +	byte l1, l2; +	do { +		// Don't use ++ inside tolower, in case the macro uses its +		// arguments more than once. +		l1 = (byte)*s1++; +		l1 = tolower(l1); +		l2 = (byte)*s2++; +		l2 = tolower(l2); +	} while (l1 == l2 && l1 != 0); +	return l1 - l2; +} + +void debug(int level, const char *s, ...) { +	char buf[1024]; +	va_list va; + +	va_start(va, s); +	vsnprintf(buf, 1024, s, va); +	va_end(va); + +	fprintf(stderr, "DEBUG: %s!\n", buf); +} + +uint8 readByte(FILE *fp) { +	return fgetc(fp); +} + +uint16 readUint16BE(FILE *fp) { +	uint16 ret = 0; +	ret |= fgetc(fp) << 8; +	ret |= fgetc(fp); +	return ret; +} + +uint16 readUint16LE(FILE *fp) { +	uint16 ret = 0; +	ret |= fgetc(fp); +	ret |= fgetc(fp) << 8; +	return ret; +} + +uint32 readUint32BE(FILE *fp) { +	uint32 ret = 0; +	ret |= fgetc(fp) << 24; +	ret |= fgetc(fp) << 16; +	ret |= fgetc(fp) << 8; +	ret |= fgetc(fp); +	return ret; +} + +uint32 readUint32LE(FILE *fp) { +	uint32 ret = 0; +	ret |= fgetc(fp); +	ret |= fgetc(fp) << 8; +	ret |= fgetc(fp) << 16; +	ret |= fgetc(fp) << 24; +	return ret; +} + +void writeByte(FILE *fp, uint8 b) { +	fwrite(&b, 1, 1, fp); +} + +void writeUint16BE(FILE *fp, uint16 value) { +	writeByte(fp, (uint8)(value >> 8)); +	writeByte(fp, (uint8)(value)); +} + +void writeUint16LE(FILE *fp, uint16 value) { +	writeByte(fp, (uint8)(value)); +	writeByte(fp, (uint8)(value >> 8)); +} + +void writeUint32BE(FILE *fp, uint32 value) { +	writeByte(fp, (uint8)(value >> 24)); +	writeByte(fp, (uint8)(value >> 16)); +	writeByte(fp, (uint8)(value >> 8)); +	writeByte(fp, (uint8)(value)); +} + +void writeUint32LE(FILE *fp, uint32 value) { +	writeByte(fp, (uint8)(value)); +	writeByte(fp, (uint8)(value >> 8)); +	writeByte(fp, (uint8)(value >> 16)); +	writeByte(fp, (uint8)(value >> 24)); +} + +uint32 fileSize(FILE *fp) { +	uint32 sz; +	uint32 pos = ftell(fp); +	fseek(fp, 0, SEEK_END); +	sz = ftell(fp); +	fseek(fp, pos, SEEK_SET); +	return sz; +}  | 
