#define DUMP_FUNCTION (1 << 1)
#define DUMP_HEADER (1 << 2)
#define DUMP_LABEL (1 << 3)
+#define DUMP_STRTAB (1 << 4)
int dump(const char *, uint32_t);
int iself(const char *, size_t);
case 'l':
flags |= DUMP_LABEL;
break;
+ case 's':
+ flags |= DUMP_STRTAB;
+ break;
default:
usage();
}
}
}
+ if (flags & DUMP_STRTAB) {
+ unsigned int offset = 0;
+ const char *str;
+
+ while (offset < cth->cth_strlen) {
+ str = data + cth->cth_stroff + offset;
+
+ printf("[%u] ", offset);
+ if (*str != '\0')
+ offset += printf("%s\n", str);
+ else {
+ printf("\\0\n");
+ offset++;
+ }
+ }
+ }
+
if (cth->cth_flags & CTF_F_COMPRESS)
free(data);