summaryrefslogtreecommitdiffstats
path: root/tools/firmware-utils/src
diff options
context:
space:
mode:
Diffstat (limited to 'tools/firmware-utils/src')
-rw-r--r--tools/firmware-utils/src/trx.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/firmware-utils/src/trx.c b/tools/firmware-utils/src/trx.c
index 7a64cfd1a..9697ad79d 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) {