Output runlist for DATA attribute in verbose mode

(Logical change 1.435)
edge.strict_endians
(none)!yura 2004-06-22 17:55:38 +00:00
parent d0c18bfb7d
commit ff0334f3c5
1 changed files with 19 additions and 2 deletions

View File

@ -818,7 +818,7 @@ static void ntfs_dump_attr_volume_information(ATTR_RECORD *attr)
* *
* dump some info about the data attribute * dump some info about the data attribute
*/ */
static void ntfs_dump_attr_data(ATTR_RECORD *attr) static void ntfs_dump_attr_data(ATTR_RECORD *attr, ntfs_volume *vol)
{ {
printf("Dumping attribute $DATA (0x80) related info\n"); printf("Dumping attribute $DATA (0x80) related info\n");
@ -861,6 +861,23 @@ static void ntfs_dump_attr_data(ATTR_RECORD *attr)
} else { } else {
printf("\tNot Compressed\n"); printf("\tNot Compressed\n");
} }
if (opts.verbose) {
runlist *rl = ntfs_mapping_pairs_decompress(vol, attr, 0);
if (rl) {
printf ("\tRunlist:\tVCN\t\tLCN\t\tLength\n");
runlist *rlc = rl;
while (rlc->length) {
printf ("\t\t\t%lld\t\t%lld\t\t%lld\n",
rlc->vcn, rlc->lcn, rlc->length);
rlc++;
}
free (rl);
} else {
Eprintf("ntfsinfo error: could not decompress runlist\n");
return;
}
}
} else { } else {
printf("\tIs resident? \t\t Yes\n"); printf("\tIs resident? \t\t Yes\n");
printf("\tData size:\t\t %u\n", printf("\tData size:\t\t %u\n",
@ -1276,7 +1293,7 @@ static void ntfs_dump_file_attributes(ntfs_inode *inode)
ntfs_dump_attr_volume_information(ctx->attr); ntfs_dump_attr_volume_information(ctx->attr);
break; break;
case AT_DATA: case AT_DATA:
ntfs_dump_attr_data(ctx->attr); ntfs_dump_attr_data(ctx->attr, inode->vol);
break; break;
case AT_INDEX_ROOT: case AT_INDEX_ROOT:
ntfs_dump_attr_index_root(ctx->attr); ntfs_dump_attr_index_root(ctx->attr);