Browse Source

package/mtd: reuse existing crc32 stuff in the trx code

 * patch by Bernhard Loos
 * note: fixed compiler error on brcm47xx

SVN-Revision: 20523
Gabor Juhos 16 years ago
parent
commit
6758494897
2 changed files with 9 additions and 34 deletions
  1. 8 1
      package/mtd/src/crc32.h
  2. 1 33
      package/mtd/src/trx.c

+ 8 - 1
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

+ 1 - 33
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)
 {