# HG changeset patch # User Mychaela Falconia # Date 1451795009 0 # Node ID 09b8b2327838efe7ac12630589eee555701ba63d # Parent c22afeecbf3435882c7f5b0fef03718e9c137d9f tiffs in vitro reader: implemented support for old 16-bit location field (-O) diff -r c22afeecbf34 -r 09b8b2327838 ffstools/tiffs-rd/globals.c --- a/ffstools/tiffs-rd/globals.c Sat Jan 02 04:05:51 2016 +0000 +++ b/ffstools/tiffs-rd/globals.c Sun Jan 03 04:23:29 2016 +0000 @@ -14,6 +14,7 @@ int index_blk_num = -1, root_inode; int inode_limit; int verbose, verbose2; +int old_16bit_location; u8 *image, *inode_block; struct inode_info **inode_info; diff -r c22afeecbf34 -r 09b8b2327838 ffstools/tiffs-rd/globals.h --- a/ffstools/tiffs-rd/globals.h Sat Jan 02 04:05:51 2016 +0000 +++ b/ffstools/tiffs-rd/globals.h Sun Jan 03 04:23:29 2016 +0000 @@ -10,6 +10,7 @@ extern int index_blk_num, root_inode; extern int inode_limit; extern int verbose, verbose2; +extern int old_16bit_location; extern u8 *image, *inode_block; extern struct inode_info **inode_info; diff -r c22afeecbf34 -r 09b8b2327838 ffstools/tiffs-rd/inode.c --- a/ffstools/tiffs-rd/inode.c Sat Jan 02 04:05:51 2016 +0000 +++ b/ffstools/tiffs-rd/inode.c Sun Jan 03 04:23:29 2016 +0000 @@ -106,6 +106,8 @@ } if (inf->len) { inf->rawloc = le32toh(fl->dataptr); + if (old_16bit_location) + inf->rawloc >>= 16; if (inf->rawloc > 0x0FFFFFFF) { invdptr: fprintf(stderr, "warning: inode #%x: invalid data pointer, skipping\n", diff -r c22afeecbf34 -r 09b8b2327838 ffstools/tiffs-rd/main.c --- a/ffstools/tiffs-rd/main.c Sat Jan 02 04:05:51 2016 +0000 +++ b/ffstools/tiffs-rd/main.c Sun Jan 03 04:23:29 2016 +0000 @@ -85,7 +85,7 @@ char *cmd; struct cmdtab *tp; - while ((c = getopt(argc, argv, "+a:o:r:v")) != EOF) + while ((c = getopt(argc, argv, "+a:o:Or:v")) != EOF) switch (c) { case 'a': index_blk_num = atoi(optarg); @@ -93,6 +93,9 @@ case 'o': imgfile_offset = strtoul(optarg, 0, 0); continue; + case 'O': + old_16bit_location = 1; + continue; case 'r': root_inode = strtoul(optarg, 0, 16); continue;