aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware-utils/src
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-05-15 18:41:48 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-05-15 18:41:48 +0000
commite82efeea82ea95f68065605da54787d858bbc992 (patch)
treeade8709b6ed3924ac5887f3f0c07be5677b18135 /tools/firmware-utils/src
parent8d2dd06e4c6915970ba7d18fe8a87f533324ac70 (diff)
downloadupstream-e82efeea82ea95f68065605da54787d858bbc992.tar.gz
upstream-e82efeea82ea95f68065605da54787d858bbc992.tar.bz2
upstream-e82efeea82ea95f68065605da54787d858bbc992.zip
Fix broadcom squashfs images:
We switched over to appending the jffs2 eof mark to the squashfs images, but since the squashfs is not always aligned to eraseblocksize, the eof mark landed in the wrong place. This commit adds an extra flag to the trx utility that can append extra data to a partition with alignment. This is used to place the jffs2 eof mark at the right offset. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7253 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'tools/firmware-utils/src')
-rw-r--r--tools/firmware-utils/src/trx.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/firmware-utils/src/trx.c b/tools/firmware-utils/src/trx.c
index 787ffa8946..1131238a4e 100644
--- a/tools/firmware-utils/src/trx.c
+++ b/tools/firmware-utils/src/trx.c
@@ -88,7 +88,7 @@ int main(int argc, char **argv)
char *ofn = NULL;
char *buf;
char *e;
- int c, i;
+ int c, i, append;
size_t n;
uint32_t cur_len;
unsigned long maxlen = TRX_MAX_LEN;
@@ -110,11 +110,15 @@ int main(int argc, char **argv)
in = NULL;
i = 0;
- while ((c = getopt(argc, argv, "-:o:m:a:b:f:")) != -1) {
+ while ((c = getopt(argc, argv, "-:o:m:a:b:f:A:")) != -1) {
switch (c) {
+ case 'A':
+ append = 1;
+ /* fall through */
case 'f':
case 1:
- p->offsets[i++] = STORE32_LE(cur_len);
+ if (!append)
+ p->offsets[i++] = STORE32_LE(cur_len);
if (!(in = fopen(optarg, "r"))) {
fprintf(stderr, "can not open \"%s\" for reading\n", optarg);
@@ -134,6 +138,7 @@ int main(int argc, char **argv)
n += ROUND - (n & (ROUND-1));
}
cur_len += n;
+ append = 0;
break;
case 'o':