From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UpPBa-0008Aa-SU for qemu-devel@nongnu.org; Wed, 19 Jun 2013 16:40:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UpPBZ-0004fi-V0 for qemu-devel@nongnu.org; Wed, 19 Jun 2013 16:40:58 -0400 Received: from e7.ny.us.ibm.com ([32.97.182.137]:48234) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UpPBZ-0004fb-SD for qemu-devel@nongnu.org; Wed, 19 Jun 2013 16:40:57 -0400 Received: from /spool/local by e7.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 19 Jun 2013 16:40:57 -0400 From: Anthony Liguori Date: Wed, 19 Jun 2013 15:40:26 -0500 Message-Id: <1371674435-14973-4-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1371674435-14973-1-git-send-email-aliguori@us.ibm.com> References: <1371674435-14973-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH 03/12] qtest: return string from QMP commands List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , Alexey Kardashevskiy , Alex Graf , qemu-ppc@nongnu.org, Paul Mackerras , Andreas Faerber Signed-off-by: Anthony Liguori --- tests/libqtest.c | 16 +++++++++++++--- tests/libqtest.h | 14 +++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index 81107cf..235ec62 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -287,10 +287,13 @@ redo: return words; } -void qtest_qmpv(QTestState *s, const char *fmt, va_list ap) +char *qtest_qmpv(QTestState *s, const char *fmt, va_list ap) { bool has_reply = false; int nesting = 0; + GString *ret; + + ret = g_string_new(""); /* Send QMP request */ socket_sendf(s->qmp_fd, fmt, ap); @@ -319,16 +322,23 @@ void qtest_qmpv(QTestState *s, const char *fmt, va_list ap) nesting--; break; } + + g_string_append_c(ret, c); } + + return g_string_free(ret, FALSE); } -void qtest_qmp(QTestState *s, const char *fmt, ...) +char *qtest_qmp(QTestState *s, const char *fmt, ...) { va_list ap; + char *ret; va_start(ap, fmt); - qtest_qmpv(s, fmt, ap); + ret = qtest_qmpv(s, fmt, ap); va_end(ap); + + return ret; } const char *qtest_get_arch(void) diff --git a/tests/libqtest.h b/tests/libqtest.h index 592f035..5cdcae7 100644 --- a/tests/libqtest.h +++ b/tests/libqtest.h @@ -21,6 +21,7 @@ #include #include #include +#include typedef struct QTestState QTestState; @@ -48,8 +49,10 @@ void qtest_quit(QTestState *s); * @fmt...: QMP message to send to qemu * * Sends a QMP message to QEMU + * + * Returns: the result of the QMP command */ -void qtest_qmp(QTestState *s, const char *fmt, ...); +char *qtest_qmp(QTestState *s, const char *fmt, ...); /** * qtest_qmpv: @@ -58,8 +61,10 @@ void qtest_qmp(QTestState *s, const char *fmt, ...); * @ap: QMP message arguments * * Sends a QMP message to QEMU. + * + * Returns: the result of the QMP command */ -void qtest_qmpv(QTestState *s, const char *fmt, va_list ap); +char *qtest_qmpv(QTestState *s, const char *fmt, va_list ap); /** * qtest_get_irq: @@ -340,10 +345,13 @@ static inline QTestState *qtest_start(const char *args) static inline void qmp(const char *fmt, ...) { va_list ap; + char *ret; va_start(ap, fmt); - qtest_qmpv(global_qtest, fmt, ap); + ret = qtest_qmpv(global_qtest, fmt, ap); va_end(ap); + + g_free(ret); } /** -- 1.8.0