提交 72613b18 编写于 作者: P Peter Krempa

qemu: monitor: json: Refactor error code class checker

Split out the function that checks the actual error class string into a
separate helper as it will be useful later and refactor
qemuMonitorJSONHasError to return bool type and remove few useless
checks.

Basically virJSONValueObjectHasKey are useless here since the next call
to virJSONValueObjectGet is checking the return value again (which can't
fail at that point). By removing the first check we save a function
call.
上级 64985217
...@@ -400,31 +400,27 @@ qemuMonitorJSONCheckError(virJSONValuePtr cmd, ...@@ -400,31 +400,27 @@ qemuMonitorJSONCheckError(virJSONValuePtr cmd,
} }
static int static bool
qemuMonitorJSONErrorIsClass(virJSONValuePtr error,
const char *klass)
{
return STREQ_NULLABLE(virJSONValueObjectGetString(error, "class"), klass);
}
static bool
qemuMonitorJSONHasError(virJSONValuePtr reply, qemuMonitorJSONHasError(virJSONValuePtr reply,
const char *klass) const char *klass)
{ {
virJSONValuePtr error; virJSONValuePtr error;
const char *thisklass;
if (!virJSONValueObjectHasKey(reply, "error"))
return 0;
error = virJSONValueObjectGet(reply, "error"); if (!(error = virJSONValueObjectGet(reply, "error")))
if (!error) return false;
return 0;
if (!virJSONValueObjectHasKey(error, "class"))
return 0;
thisklass = virJSONValueObjectGetString(error, "class");
if (!thisklass) return qemuMonitorJSONErrorIsClass(error, klass);
return 0;
return STREQ(klass, thisklass);
} }
/* Top-level commands and nested transaction list elements share a /* Top-level commands and nested transaction list elements share a
* common structure for everything except the dictionary names. */ * common structure for everything except the dictionary names. */
static virJSONValuePtr ATTRIBUTE_SENTINEL static virJSONValuePtr ATTRIBUTE_SENTINEL
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册