From ff0334f3c55cef58b817d4461c69a42799ce8a2b Mon Sep 17 00:00:00 2001 From: "(none)!yura" <(none)!yura> Date: Tue, 22 Jun 2004 17:55:38 +0000 Subject: [PATCH] Output runlist for DATA attribute in verbose mode (Logical change 1.435) --- ntfsprogs/ntfsinfo.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ntfsprogs/ntfsinfo.c b/ntfsprogs/ntfsinfo.c index 09e0e87a..b99d5e6b 100644 --- a/ntfsprogs/ntfsinfo.c +++ b/ntfsprogs/ntfsinfo.c @@ -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);