X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=tools%2Ffirmware-utils%2Fsrc%2Ftrx.c;h=9697ad79dcc6e6b0866b3a6be80907cc8f2dcab8;hb=3c05ba24723fa368dd070c212376b7dbaa4269a6;hp=7a64cfd1a9cc58a5282fa28aac78221df7c12e41;hpb=dbf130182cf039b11903162e88b063ce4267e8bd;p=openwrt.git diff --git a/tools/firmware-utils/src/trx.c b/tools/firmware-utils/src/trx.c index 7a64cfd1a9..9697ad79dc 100644 --- a/tools/firmware-utils/src/trx.c +++ b/tools/firmware-utils/src/trx.c @@ -98,7 +98,7 @@ int main(int argc, char **argv) int c, i, append = 0; size_t n; ssize_t n2; - uint32_t cur_len; + uint32_t cur_len, fsmark=0; unsigned long maxlen = TRX_MAX_LEN; struct trx_header *p; char trx_version = 1; @@ -131,6 +131,8 @@ int main(int argc, char **argv) cur_len += 4; } break; + case 'F': + fsmark = cur_len; case 'A': append = 1; /* fall through */ @@ -269,10 +271,10 @@ int main(int argc, char **argv) } p->crc32 = crc32buf((char *) &p->flag_version, - cur_len - offsetof(struct trx_header, flag_version)); + (fsmark)?fsmark:cur_len - offsetof(struct trx_header, flag_version)); p->crc32 = STORE32_LE(p->crc32); - p->len = STORE32_LE(cur_len); + p->len = (fsmark)?fsmark:cur_len - offsetof(struct trx_header, flag_version); /* restore TRXv2 bin-header */ if (trx_version == 2) {