[PATCH 2/5] tools: otrx: allow own magic

Hauke Mehrtens hauke at hauke-m.de
Tue Mar 9 23:52:11 GMT 2021


This allows to specify an own magic instead of using the default magic
value TRX_MAGIC. If no own magic is specified the default one will be
used.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 tools/firmware-utils/src/otrx.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/tools/firmware-utils/src/otrx.c b/tools/firmware-utils/src/otrx.c
index 223e032f2b5e..3bbbac39e3b3 100644
--- a/tools/firmware-utils/src/otrx.c
+++ b/tools/firmware-utils/src/otrx.c
@@ -287,7 +287,6 @@ static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) {
 	uint8_t buf[1024];
 	uint32_t crc32;
 
-	hdr->magic = cpu_to_le32(TRX_MAGIC);
 	hdr->version = 1;
 
 	fseek(trx, 0, SEEK_SET);
@@ -324,9 +323,13 @@ static int otrx_create(int argc, char **argv) {
 	ssize_t sbytes;
 	size_t curr_idx = 0;
 	size_t curr_offset = sizeof(hdr);
+	char *e;
+	uint32_t magic;
 	int c;
 	int err = 0;
 
+	hdr.magic = cpu_to_le32(TRX_MAGIC);
+
 	if (argc < 3) {
 		fprintf(stderr, "No TRX file passed\n");
 		err = -EINVAL;
@@ -343,7 +346,7 @@ static int otrx_create(int argc, char **argv) {
 	fseek(trx, curr_offset, SEEK_SET);
 
 	optind = 3;
-	while ((c = getopt(argc, argv, "f:A:a:b:")) != -1) {
+	while ((c = getopt(argc, argv, "f:A:a:b:M:")) != -1) {
 		switch (c) {
 		case 'f':
 			if (curr_idx >= TRX_MAX_PARTS) {
@@ -400,6 +403,14 @@ static int otrx_create(int argc, char **argv) {
 					curr_offset += sbytes;
 			}
 			break;
+		case 'M':
+			errno = 0;
+			magic = strtoul(optarg, &e, 0);
+			if (errno || (e == optarg) || *e)
+				fprintf(stderr, "illegal magic string %s\n", optarg);
+			else
+				hdr.magic = cpu_to_le32(magic);
+			break;
 		}
 		if (err)
 			break;
-- 
2.30.1




More information about the openwrt-devel mailing list