This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@625 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
9b3b220a13
commit
3e9e73ec59
177 changed files with 37677 additions and 0 deletions
34
Source/crc32.c
Normal file
34
Source/crc32.c
Normal file
|
@ -0,0 +1,34 @@
|
|||
#include "exehead/config.h"
|
||||
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
||||
|
||||
// this is based on the (slow,small) CRC32 implementation from zlib.
|
||||
|
||||
static unsigned long crc_table[256];
|
||||
|
||||
static void make_crc_table()
|
||||
{
|
||||
unsigned long c;
|
||||
int n, k;
|
||||
|
||||
for (n = 0; n < 256; n++)
|
||||
{
|
||||
c = (unsigned long)n;
|
||||
for (k = 0; k < 8; k++) c = (c >> 1) ^ (c & 1 ? 0xedb88320L : 0);
|
||||
crc_table[n] = c;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// actually CRC32, but we put it in here so we don't
|
||||
// have to modify the other code.
|
||||
unsigned long CRC32(unsigned long crc, const unsigned char *buf, unsigned int len)
|
||||
{
|
||||
if (!crc_table[1]) make_crc_table();
|
||||
crc = crc ^ 0xffffffffL;
|
||||
while (len-- > 0) {
|
||||
crc = crc_table[(crc ^ (*buf++)) & 0xff] ^ (crc >> 8);
|
||||
}
|
||||
return crc ^ 0xffffffffL;
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue