From a11783f9d6c04b5a8f9d2c85507839d5dd728733 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@openwrt.org>
Date: Sat, 12 Feb 2011 13:17:47 +0000
Subject: brcm47xx: fix error when build firmware on x86_64 host (closes #7672)

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25472 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 tools/firmware-utils/src/trx2edips.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

(limited to 'tools/firmware-utils/src')

diff --git a/tools/firmware-utils/src/trx2edips.c b/tools/firmware-utils/src/trx2edips.c
index 9606bd8512..378be2789e 100644
--- a/tools/firmware-utils/src/trx2edips.c
+++ b/tools/firmware-utils/src/trx2edips.c
@@ -23,8 +23,8 @@ struct trx_header {
 
 
 
-#define EDIMAX_PS16	0x36315350
-#define EDIMAX_HDR_LEN 0xc
+#define EDIMAX_PS16	0x36315350	/* "PS16" */
+#define EDIMAX_HDR_LEN 	0xc
 
 
 /**********************************************************************/
@@ -94,9 +94,9 @@ int main(int argc, char *argv[])
 	FILE *fpIn = NULL;
 	FILE *fpOut = NULL;
 	long  nImgSize;
-	uint32_t sign = EDIMAX_PS16;	/* signature for header */
-	uint32_t start_addr = 0x80500000; /* start address but doesn't seems to be used... */
-	uint32_t length; /* length of data, not used too ...*/
+	uint32_t sign = EDIMAX_PS16;		/* signature for header */
+	uint32_t start_addr = 0x80500000; 	/* start address but doesn't seems to be used... */
+	uint32_t length; 			/* length of data, not used too ...*/
 	size_t res;
 
 	char *buf;
@@ -113,16 +113,18 @@ int main(int argc, char *argv[])
 		fprintf(stderr, "Unable to open %s\n", argv[1]);
 		return EXIT_FAILURE;
 	}
+	/* compute the length of the file */
 	fseek(fpIn, 0, SEEK_END);
 	length = ftell(fpIn);
-
+	/* alloc enough memory to store the file */
 	buf = (char *)malloc(length);
 	if (!buf) {
 		fprintf(stderr, "malloc of buffers failed\n");
 		return EXIT_FAILURE;
 	}
-
+	
 	rewind(fpIn);
+	/* read the whole file*/
 	res = fread(buf, 1, length, fpIn);
 
 	p = (struct trx_header *)buf;
@@ -140,11 +142,12 @@ int main(int argc, char *argv[])
 	}
 	/* make the 3 partition beeing 12 bytes closer from the header */
 	memcpy(buf + p->offsets[2] - EDIMAX_HDR_LEN, buf + p->offsets[2], length - p->offsets[2]);
+	/* recompute the crc32 check */
 	p->crc32 = crc32buf((char *) &p->flag_version, length - offsetof(struct trx_header, flag_version));
-
-	fwrite(&sign,  sizeof(long), 1, fpOut);
-	fwrite(&length, sizeof(long), 1, fpOut);
-	fwrite(&start_addr, sizeof(long), 1, fpOut);
+	/* write the modified file */
+	fwrite(&sign,  sizeof(uint32_t), 1, fpOut);
+	fwrite(&length, sizeof(uint32_t), 1, fpOut);
+	fwrite(&start_addr, sizeof(uint32_t), 1, fpOut);
 	fwrite(buf, sizeof(char), length, fpOut);
 	fclose(fpOut);
 }
-- 
cgit v1.2.3