|
@@ -105,25 +105,22 @@ int xs_node_vscanf(struct qemu_xs_handle *h, xs_transaction_t tid,
|
|
|
const char *node, const char *key, Error **errp,
|
|
|
const char *fmt, va_list ap)
|
|
|
{
|
|
|
- char *path, *value;
|
|
|
+ char *value;
|
|
|
int rc;
|
|
|
|
|
|
- path = (strlen(node) != 0) ? g_strdup_printf("%s/%s", node, key) :
|
|
|
- g_strdup(key);
|
|
|
- value = qemu_xen_xs_read(h, tid, path, NULL);
|
|
|
-
|
|
|
- trace_xs_node_vscanf(path, value);
|
|
|
+ if (node && strlen(node) != 0) {
|
|
|
+ value = xs_node_read(h, tid, NULL, errp, "%s/%s", node, key);
|
|
|
+ } else {
|
|
|
+ value = xs_node_read(h, tid, NULL, errp, "%s", key);
|
|
|
+ }
|
|
|
|
|
|
if (value) {
|
|
|
rc = vsscanf(value, fmt, ap);
|
|
|
} else {
|
|
|
- error_setg_errno(errp, errno, "failed to read from '%s'",
|
|
|
- path);
|
|
|
rc = EOF;
|
|
|
}
|
|
|
|
|
|
free(value);
|
|
|
- g_free(path);
|
|
|
|
|
|
return rc;
|
|
|
}
|