diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-03 18:47:29 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-12-03 18:47:29 +0000 |
| commit | 00f5817db0bc1ea08f623e701c195f526f1263fd (patch) | |
| tree | 5aabfaa96f6569ce0e99cb85daeb288d2d37ba5f /src/engine/datafile.c | |
| parent | a4d69fa35aef8e17660f6e351ab42c635d5a3d92 (diff) | |
| download | zcatch-00f5817db0bc1ea08f623e701c195f526f1263fd.tar.gz zcatch-00f5817db0bc1ea08f623e701c195f526f1263fd.zip | |
fixed map crc checking
Diffstat (limited to 'src/engine/datafile.c')
| -rw-r--r-- | src/engine/datafile.c | 26 |
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; +} |