diff --git a/tools/padjffs2/src/padjffs2.c b/tools/padjffs2/src/padjffs2.c index 58d99140d9..aa932efa6f 100644 --- a/tools/padjffs2/src/padjffs2.c +++ b/tools/padjffs2/src/padjffs2.c @@ -19,6 +19,7 @@ #include static char *progname; +static unsigned int xtra_offset; static unsigned char eof_mark[4] = {0xde, 0xad, 0xc0, 0xde}; #define ERR(fmt, ...) do { \ @@ -63,6 +64,8 @@ static int pad_image(char *name, uint32_t pad_mask) memset(buf, '\xff', BUF_SIZE); + in_len += xtra_offset; + out_len = in_len; while (pad_mask) { uint32_t mask; @@ -83,7 +86,7 @@ static int pad_image(char *name, uint32_t pad_mask) pad_mask &= ~mask; } - printf("padding image to %08x\n", (unsigned int) in_len); + printf("padding image to %08x\n", (unsigned int) in_len - xtra_offset); while (out_len < in_len) { ssize_t len; @@ -131,14 +134,22 @@ int main(int argc, char* argv[]) if (argc < 2) { fprintf(stderr, - "Usage: %s file [pad0] [pad1] [padN]\n", + "Usage: %s file [-x ] [pad0] [pad1] [padN]\n", progname); goto out; } pad_mask = 0; - for (i = 2; i < argc; i++) + for (i = 2; i < argc; i++) { + if (i == 2 && strcmp(argv[i], "-x") == 0) { + i++; + xtra_offset = strtoul(argv[i], NULL, 0); + fprintf(stderr, "assuming %u bytes offset\n", + xtra_offset); + continue; + } pad_mask |= strtoul(argv[i], NULL, 0) * 1024; + } if (pad_mask == 0) pad_mask = (4 * 1024) | (8 * 1024) | (64 * 1024) |