On Thu, Jan 28, 2010 at 03:21:50PM +0100, Jim Meyering wrote:
Richard W.M. Jones wrote:
> Subject: [PATCH 06/13] hivex: Add value_any callback to the visitor.
>
> The visitor currently contains lots of value_* callbacks, such as
> value_string which is called back when the value has type string.
>
> This is fine but it makes it complicated to deal with the case where
> you just want to see 'a value', and don't care about its type.
>
> The value_any callback allows visitors to see values generically.
> ---
> hivex/hivex.c | 178 +++++++++++++++++++++++++++++--------------------------
> hivex/hivex.h | 1 +
> hivex/hivex.pod | 5 ++
> 3 files changed, 101 insertions(+), 83 deletions(-)
>
> diff --git a/hivex/hivex.c b/hivex/hivex.c
> index cb6fc62..81d217b 100644
> --- a/hivex/hivex.c
> +++ b/hivex/hivex.c
> @@ -1421,114 +1421,126 @@ hivex__visit_node (hive_h *h, hive_node_h node,
> goto error;
> }
>
> - switch (t) {
> - case hive_t_none:
> + if (vtor->value_any) {
> str = hivex_value_value (h, values[i], &t, &len);
> if (str == NULL) {
> ret = skip_bad ? 0 : -1;
> goto error;
> }
> - if (t != hive_t_none) {
> - ret = skip_bad ? 0 : -1;
> - goto error;
> - }
> - if (vtor->value_none &&
> - vtor->value_none (h, opaque, node, values[i], t, len, key, str) ==
-1)
> + if (vtor->value_any (h, opaque, node, values[i], t, len, key, str) == -1)
> goto error;
> free (str); str = NULL;
> - break;
> -
> - case hive_t_string:
> - case hive_t_expand_string:
> - case hive_t_link:
> - str = hivex_value_string (h, values[i]);
> - if (str == NULL) {
> - if (errno != EILSEQ && errno != EINVAL) {
> + }
> + else {
> + switch (t) {
This looks fine.
I found it best to review with "git log -B -w -p -1 SHA1"
since the vast majority is just an indentation change: moving
the current "switch" stmt into the new else block.
I was playing with git show --patience and other flags like that. The
patience algorithm (sometimes) improves the output by keeping related
code together. Is there a recommended way to get better patches for
review from 'git format-patch'?
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v