tools: otrx: allow own magic

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: INAGAKI Hiroshi <musashino.open@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2020-12-30 18:24:51 +01:00
parent cb740fbe25
commit 4d9f69322c

View File

@ -287,7 +287,6 @@ static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) {
uint8_t buf[1024]; uint8_t buf[1024];
uint32_t crc32; uint32_t crc32;
hdr->magic = cpu_to_le32(TRX_MAGIC);
hdr->version = 1; hdr->version = 1;
fseek(trx, 0, SEEK_SET); fseek(trx, 0, SEEK_SET);
@ -324,9 +323,13 @@ static int otrx_create(int argc, char **argv) {
ssize_t sbytes; ssize_t sbytes;
size_t curr_idx = 0; size_t curr_idx = 0;
size_t curr_offset = sizeof(hdr); size_t curr_offset = sizeof(hdr);
char *e;
uint32_t magic;
int c; int c;
int err = 0; int err = 0;
hdr.magic = cpu_to_le32(TRX_MAGIC);
if (argc < 3) { if (argc < 3) {
fprintf(stderr, "No TRX file passed\n"); fprintf(stderr, "No TRX file passed\n");
err = -EINVAL; err = -EINVAL;
@ -343,7 +346,7 @@ static int otrx_create(int argc, char **argv) {
fseek(trx, curr_offset, SEEK_SET); fseek(trx, curr_offset, SEEK_SET);
optind = 3; 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) { switch (c) {
case 'f': case 'f':
if (curr_idx >= TRX_MAX_PARTS) { if (curr_idx >= TRX_MAX_PARTS) {
@ -400,6 +403,14 @@ static int otrx_create(int argc, char **argv) {
curr_offset += sbytes; curr_offset += sbytes;
} }
break; 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) if (err)
break; break;