29.04.2014 02:46, Hani Benhabiles wrote:
> Signed-off-by: Hani Benhabiles <[email protected]>
> Suggested-by: Andreas Färber <[email protected]>
> ---
> qmp.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/qmp.c b/qmp.c
> index 74107be..0d49abf 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -199,7 +199,10 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path,
> Error **errp)
> ObjectProperty *prop;
>
> obj = object_resolve_path(path, &ambiguous);
> - if (obj == NULL) {
> + if (ambiguous) {
> + error_setg(errp, "Path '%s' is ambiguous", path);
> + return NULL;
> + } else if (obj == NULL) {
> error_set(errp, QERR_DEVICE_NOT_FOUND, path);
> return NULL;
> }
How about this:
--- a/qmp.c
+++ b/qmp.c
@@ -200,7 +200,9 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path,
Error **errp)
obj = object_resolve_path(path, &ambiguous);
if (obj == NULL) {
- error_set(errp, QERR_DEVICE_NOT_FOUND, path);
+ error_set(errp,
+ ambiguous ? "Path '%s' is ambiguous" : QERR_DEVICE_NOT_FOUND,
+ path);
return NULL;
}
The difference here is that we test "ambiguous" variable only if obj is NULL,
ie, only on error path. Please note that object_resolve_path() does not
initialize *ambiguous in all code paths.
Thanks,
/mjt