The error behaviour of hivex_node_get_child is subtle, so the 'cd'
command wouldn't always report errors correctly. This fixes it.
---
hivex/hivexsh.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/hivex/hivexsh.c b/hivex/hivexsh.c
index ceb1153..39ca634 100644
--- a/hivex/hivexsh.c
+++ b/hivex/hivexsh.c
@@ -559,10 +559,14 @@ cmd_cd (char *path)
continue;
}
+ errno = 0;
new_cwd = hivex_node_get_child (h, new_cwd, elem);
if (new_cwd == 0) {
- fprintf (stderr, _("hivexsh: cd: subkey '%s' not found\n"),
- elem);
+ if (errno)
+ perror ("hivexsh: cd");
+ else
+ fprintf (stderr, _("hivexsh: cd: subkey '%s' not found\n"),
+ elem);
return -1;
}
}
--
1.6.5.2