aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2017-11-13 23:07:47 +0100
committerRafał Miłecki <rafal@milecki.pl>2017-11-14 22:33:19 +0100
commit3f96e57aed69fcd88a8d4f06bbf97688f67ca343 (patch)
treed33365f8d7a2417490bc6738d381009832ae7033
parent6d283b8029c87590bd056617340dbdb110239415 (diff)
downloadupstream-3f96e57aed69fcd88a8d4f06bbf97688f67ca343.tar.gz
upstream-3f96e57aed69fcd88a8d4f06bbf97688f67ca343.tar.bz2
upstream-3f96e57aed69fcd88a8d4f06bbf97688f67ca343.zip
otrx: add support for -A (append) and -a (align) options
They are inspired and compatible with the original and mjn3's trx tool. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-rw-r--r--package/utils/otrx/src/otrx.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/package/utils/otrx/src/otrx.c b/package/utils/otrx/src/otrx.c
index d08507f685..7e117c6e0d 100644
--- a/package/utils/otrx/src/otrx.c
+++ b/package/utils/otrx/src/otrx.c
@@ -346,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:b:")) != -1) {
+ while ((c = getopt(argc, argv, "f:A:a:b:")) != -1) {
switch (c) {
case 'f':
if (curr_idx >= TRX_MAX_PARTS) {
@@ -370,6 +370,27 @@ static int otrx_create(int argc, char **argv) {
curr_offset += sbytes;
break;
+ case 'A':
+ sbytes = otrx_create_append_file(trx, optarg);
+ if (sbytes < 0) {
+ fprintf(stderr, "Failed to append file %s\n", optarg);
+ } else {
+ curr_offset += sbytes;
+ }
+
+ sbytes = otrx_create_align(trx, curr_offset, 4);
+ if (sbytes < 0)
+ fprintf(stderr, "Failed to append zeros\n");
+ else
+ curr_offset += sbytes;
+ break;
+ case 'a':
+ sbytes = otrx_create_align(trx, curr_offset, strtol(optarg, NULL, 0));
+ if (sbytes < 0)
+ fprintf(stderr, "Failed to append zeros\n");
+ else
+ curr_offset += sbytes;
+ break;
case 'b':
sbytes = strtol(optarg, NULL, 0) - curr_offset;
if (sbytes < 0) {
@@ -541,6 +562,8 @@ static void usage() {
printf("Creating new TRX file:\n");
printf("\totrx create <file> [options] [partitions]\n");
printf("\t-f file\t\t\t\t[partition] start new partition with content copied from file\n");
+ printf("\t-A file\t\t\t\t[partition] append current partition with content copied from file\n");
+ printf("\t-a alignment\t\t\t[partition] align current partition\n");
printf("\t-b offset\t\t\t[partition] append zeros to partition till reaching absolute offset\n");
printf("\n");
printf("Extracting from TRX file:\n");