From 9636ac058f931c949e5e76af9386882499c67c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= Date: Tue, 11 Mar 2014 10:47:48 +0100 Subject: [PATCH] Improved the warning for analyzing an extent in ntfscluster When analyzing an extent in ntfscluster, mention its base record --- ntfsprogs/utils.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/ntfsprogs/utils.c b/ntfsprogs/utils.c index 869e0675..7ac31163 100644 --- a/ntfsprogs/utils.c +++ b/ntfsprogs/utils.c @@ -5,6 +5,7 @@ * Copyright (c) 2003-2006 Anton Altaparmakov * Copyright (c) 2003 Lode Leroy * Copyright (c) 2005-2007 Yura Pakhuchiy + * Copyright (c) 2014 Jean-Pierre Andre * * A set of shared functions for ntfs utilities * @@ -1025,8 +1026,26 @@ int mft_next_record(struct mft_search_ctx *ctx) ctx->inode = ntfs_inode_open(ctx->vol, (MFT_REF) ctx->mft_num); if (ctx->inode == NULL) { - ntfs_log_error("Error reading inode %llu.\n", (unsigned - long long) ctx->mft_num); + MFT_RECORD *mrec; + int r; + MFT_REF base_inode; + + mrec = (MFT_RECORD*)NULL; + r = ntfs_file_record_read(ctx->vol, + (MFT_REF) ctx->mft_num, &mrec, NULL); + if (r || !mrec || !mrec->base_mft_record) + ntfs_log_error( + "Error reading inode %lld.\n", + (long long)ctx->mft_num); + else { + base_inode = le64_to_cpu( + mrec->base_mft_record); + ntfs_log_error("Inode %lld is an " + "extent of inode %lld.\n", + (long long)ctx->mft_num, + (long long)MREF(base_inode)); + } + free (mrec); continue; }