Make airlink.c more endianness robus (sn9)
[openwrt.git] / tools / firmware-utils / src / airlink.c
index a98aba7..c24a9e3 100644 (file)
@@ -102,7 +102,7 @@ u32 header[] = {
        0x00000000, 0x00000005, 0x00000000, 0x00000000
 };
 
-static int JFFS2 = 0x20;
+static int JFFS2 = 0;
 
 int generate_image(char *kname, char *fsname, char *fname, int EHDR)
 {
@@ -136,6 +136,7 @@ int generate_image(char *kname, char *fsname, char *fname, int EHDR)
        else
                write(ffd, header + 2, 0x20);
        write(ffd, bk, lenk);
+       if (!JFFS2) JFFS2 = 0x20;
        printf("Padding header+kernel - 0x%x +  0x%x = 0x%x\n",
               lenk, ((lenk - 1 + JFFS2) / JFFS2) * JFFS2 - lenk,
               ((lenk - 1 + JFFS2) / JFFS2) * JFFS2);
@@ -244,7 +245,7 @@ int main(int argc, char **argv)
        u32 sum, l0;
        u32 MagicS = 0x474d544b;
        u32 MagicE = 0x4152524e;
-       if (htonl(*((u32 *) buf)) == MagicS) {
+       if (ntohl(*((u32 *) buf)) == MagicS) {
                fprintf(stderr,
                        "Image without extra 8 bytes - Standard header\n");
                buf[0x10] = len & 0xff;
@@ -254,8 +255,8 @@ int main(int argc, char **argv)
                lseek(fd, 0x10, SEEK_SET);
                write(fd, buf + 0x10, 0x4);
                EHDR = 0;
-       } else if ((htonl(*((u32 *) (buf + 0x8))) == MagicS)
-                  && ((htonl(*((u32 *) (buf + 0x4))) == MagicE))) {
+       } else if ((ntohl(*((u32 *) (buf + 0x8))) == MagicS)
+                  && ((ntohl(*((u32 *) (buf + 0x4))) == MagicE))) {
                fprintf(stderr,
                        "Image with extra 8 bytes - Extended header\n");
                *((u32 *) (buf + 0x18)) = len - 8;
@@ -288,7 +289,7 @@ int main(int argc, char **argv)
        *((u32 *) & buf[0x4]) = 0x0L;
        memcpy(b, buf, 0x100);
        memcpy(b + 0x100, buf + ((l0 >> 1) - ((l0 & 0x6) >> 1)), 0x100);
-       memcpy(b + 0x200, buf + (I0 - 0x200), 0x200);
+       memcpy(b + 0x200, buf + (l0 - 0x200), 0x200);
        *((u32 *) & b[0x18]) = 0x0L;
 
        sum = crc32(b, 0x400);
This page took 0.022633 seconds and 4 git commands to generate.