diff options
| -rw-r--r-- | package/mtd/src/crc32.h | 9 | ||||
| -rw-r--r-- | package/mtd/src/trx.c | 34 | 
2 files changed, 9 insertions, 34 deletions
| diff --git a/package/mtd/src/crc32.h b/package/mtd/src/crc32.h index ee3145bc1..68f8ee4fe 100644 --- a/package/mtd/src/crc32.h +++ b/package/mtd/src/crc32.h @@ -7,7 +7,7 @@ extern const uint32_t crc32_table[256];  /* Return a 32-bit CRC of the contents of the buffer. */ -	static inline uint32_t +static inline uint32_t  crc32(uint32_t val, const void *ss, int len)  {  	const unsigned char *s = ss; @@ -16,4 +16,11 @@ crc32(uint32_t val, const void *ss, int len)  	return val;  } +static inline unsigned int crc32buf(char *buf, size_t len) +{ +	return crc32(0xFFFFFFFF, buf, len); +} + + +  #endif diff --git a/package/mtd/src/trx.c b/package/mtd/src/trx.c index 5457a365b..f48317589 100644 --- a/package/mtd/src/trx.c +++ b/package/mtd/src/trx.c @@ -31,6 +31,7 @@  #include <sys/ioctl.h>  #include "mtd-api.h"  #include "mtd.h" +#include "crc32.h"  #define TRX_MAGIC       0x30524448      /* "HDR0" */  struct trx_header { @@ -41,39 +42,6 @@ struct trx_header {  	unsigned offsets[3];	/* Offsets of partitions from start of header */  }; -static unsigned long *crc32 = NULL; - -static void init_crc32() -{ -	unsigned long crc; -	unsigned long poly = 0xEDB88320L; -	int n, bit; - -	if (crc32) -		return; - -	crc32 = (unsigned long *) malloc(256 * sizeof(unsigned long)); -	if (!crc32) { -		perror("malloc"); -		exit(1); -	} - -	for (n = 0; n < 256; n++) { -		crc = (unsigned long) n; -		for (bit = 0; bit < 8; bit++) -			crc = (crc & 1) ? (poly ^ (crc >> 1)) : (crc >> 1); -		crc32[n] = crc; -	} -} - -static unsigned int crc32buf(char *buf, size_t len) -{ -	unsigned int crc = 0xFFFFFFFF; -	for (; len; len--, buf++) -		crc = crc32[(crc ^ *buf) & 0xff] ^ (crc >> 8); -	return crc; -} -  int  trx_fixup(int fd, const char *name)  { | 
