[Libguestfs] [PATCH v2 1/6] filesystem_walk: fixed root inode listing
Pino Toscano
ptoscano at redhat.com
Fri Aug 26 11:15:13 UTC 2016
On Thursday, 25 August 2016 23:53:51 CEST Matteo Cafasso wrote:
> With the current implementation, the root inode of the given partition
> is ignored.
>
> The root inode is now reported. Its name will be a single dot '.'
> reproducing the TSK API.
>
> Signed-off-by: Matteo Cafasso <noxdafox at gmail.com>
> ---
> daemon/tsk.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/daemon/tsk.c b/daemon/tsk.c
> index dd368d7..6e6df6d 100644
> --- a/daemon/tsk.c
> +++ b/daemon/tsk.c
> @@ -48,6 +48,7 @@ static char file_type (TSK_FS_FILE *);
> static int file_flags (TSK_FS_FILE *fsfile);
> static void file_metadata (TSK_FS_META *, guestfs_int_tsk_dirent *);
> static int send_dirent_info (guestfs_int_tsk_dirent *);
> +static int entry_is_dot(TSK_FS_FILE *);
> static void reply_with_tsk_error (const char *);
Since in patch #2 this forward declaration is moved, put it at the
right place already in this patch.
> int
> @@ -113,9 +114,7 @@ fswalk_callback (TSK_FS_FILE *fsfile, const char *path, void *data)
> CLEANUP_FREE char *fname = NULL;
> struct guestfs_int_tsk_dirent dirent;
>
> - /* Ignore ./ and ../ */
> - ret = TSK_FS_ISDOT (fsfile->name->name);
> - if (ret != 0)
> + if (entry_is_dot(fsfile))
> return TSK_WALK_CONT;
Nitpick: add a space between the function name and the opening round
bracket.
> /* Build the full relative path of the entry */
> @@ -271,6 +270,18 @@ reply_with_tsk_error (const char *funcname)
> reply_with_error ("%s: unknown error", funcname);
> }
>
> +/* Check whether the entry is dot and is not Root. */
> +static int
> +entry_is_dot(TSK_FS_FILE *fsfile)
Ditto.
> +{
> + if (TSK_FS_ISDOT (fsfile->name->name))
> + if (fsfile->fs_info->root_inum != fsfile->name->meta_addr ||
> + strcmp (fsfile->name->name, "."))
Simply merge the two if's into a single if (A && B) condition?
Also, the strcmp is already done by TSK_FS_ISDOT, isn't it?
So this should be like:
if (TSK_FS_ISDOT (fsfile->name->name)
&& (fsfile->fs_info->root_inum != fsfile->name->meta_addr))
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20160826/73142baa/attachment.sig>
More information about the Libguestfs
mailing list