package/mtd: reuse existing crc32 stuff in the trx code
authorGabor Juhos <juhosg@openwrt.org>
Sat, 27 Mar 2010 17:38:30 +0000 (17:38 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sat, 27 Mar 2010 17:38:30 +0000 (17:38 +0000)
 * patch by Bernhard Loos
 * note: fixed compiler error on brcm47xx

SVN-Revision: 20523

package/mtd/src/crc32.h
package/mtd/src/trx.c

index ee3145bc1597a05344c694d9bc3ba6639086a36f..68f8ee4febd7cfdb8faa9ad7195a5789ca8e4ee0 100644 (file)
@@ -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
index 5457a365bbd0c4fd3333c882a76618c7456a8c76..f48317589c220ebbc723cde4791564e3d56b9672 100644 (file)
@@ -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)
 {