about summary refs log tree commit diff
path: root/src/engine/datafile.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-03 18:47:29 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-03 18:47:29 +0000
commit00f5817db0bc1ea08f623e701c195f526f1263fd (patch)
tree5aabfaa96f6569ce0e99cb85daeb288d2d37ba5f /src/engine/datafile.c
parenta4d69fa35aef8e17660f6e351ab42c635d5a3d92 (diff)
downloadzcatch-00f5817db0bc1ea08f623e701c195f526f1263fd.tar.gz
zcatch-00f5817db0bc1ea08f623e701c195f526f1263fd.zip
fixed map crc checking
Diffstat (limited to 'src/engine/datafile.c')
-rw-r--r--src/engine/datafile.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/engine/datafile.c b/src/engine/datafile.c
index fbb1c430..7069044c 100644
--- a/src/engine/datafile.c
+++ b/src/engine/datafile.c
@@ -602,3 +602,29 @@ int datafile_finish(DATAFILE_OUT *df)
 		dbg_msg("datafile", "done");
 	return 0;
 }
+
+#define BUFFER_SIZE 64*1024
+
+int datafile_crc(const char *filename)
+{
+	unsigned char buffer[BUFFER_SIZE];
+	IOHANDLE file;
+	int crc = 0;
+	unsigned bytes = 0;
+	
+	file = io_open(filename, IOFLAG_READ);
+	if(!file)
+		return 0;
+		
+	while(1)
+	{
+		bytes = io_read(file, buffer, BUFFER_SIZE);
+		if(bytes <= 0)
+			break;
+		crc = crc32(crc, buffer, bytes);
+	}
+	
+	io_close(file);
+
+	return crc;	
+}