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
*/
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");
@ -861,6 +861,23 @@ static void ntfs_dump_attr_data(ATTR_RECORD *attr)
} else {
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 {
printf("\tIs resident? \t\t Yes\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);
break;
case AT_DATA:
ntfs_dump_attr_data(ctx->attr);
ntfs_dump_attr_data(ctx->attr, inode->vol);
break;
case AT_INDEX_ROOT:
ntfs_dump_attr_index_root(ctx->attr);