firmware-utils/mktplinkfw: add support for the TL-MR3220 v1
[openwrt.git] / package / mtd / src / trx.c
index 5457a36..7094ef6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * trx.c
  *
- * Copyright (C) 2005 Mike Baker 
+ * Copyright (C) 2005 Mike Baker
  * Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
  *
  * This program is free software; you can redistribute it and/or
@@ -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)
 {
@@ -107,7 +75,6 @@ trx_fixup(int fd, const char *name)
                goto err;
        }
 
-       init_crc32();
        scan = ptr + offsetof(struct trx_header, flag_version);
        trx->crc32 = crc32buf(scan, trx->len - (scan - ptr));
        msync(ptr, sizeof(struct trx_header), MS_SYNC|MS_INVALIDATE);
This page took 0.025253 seconds and 4 git commands to generate.