otrx: add support for -A (append) and -a (align) options
authorRafał Miłecki <rafal@milecki.pl>
Mon, 13 Nov 2017 22:07:47 +0000 (23:07 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Tue, 14 Nov 2017 21:33:19 +0000 (22:33 +0100)
They are inspired and compatible with the original and mjn3's trx tool.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
package/utils/otrx/src/otrx.c

index d08507f685cbbd4c8ab943826f1737c0a61dba9e..7e117c6e0db7ab97933cd9cc220a09765c6b6349 100644 (file)
@@ -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");