mirror of https://gitee.com/openkylin/qemu.git
tests: make libqmp buildable for win32
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20220525144140.591926-4-marcandre.lureau@redhat.com>
This commit is contained in:
parent
49e0128c48
commit
56b6dab274
|
@ -18,6 +18,11 @@
|
|||
|
||||
#include "libqmp.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#include "qemu/cutils.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/qmp/json-parser.h"
|
||||
#include "qapi/qmp/qjson.h"
|
||||
|
@ -87,6 +92,7 @@ QDict *qmp_fd_receive(int fd)
|
|||
return qmp.response;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
/* Sends a message and file descriptors to the socket.
|
||||
* It's needed for qmp-commands like getfd/add-fd */
|
||||
static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
|
||||
|
@ -120,17 +126,23 @@ static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
|
|||
} while (ret < 0 && errno == EINTR);
|
||||
g_assert_cmpint(ret, >, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Allow users to send a message without waiting for the reply,
|
||||
* in the case that they choose to discard all replies up until
|
||||
* a particular EVENT is received.
|
||||
*/
|
||||
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||
const char *fmt, va_list ap)
|
||||
static void
|
||||
_qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||
const char *fmt, va_list ap)
|
||||
{
|
||||
QObject *qobj;
|
||||
|
||||
#ifdef _WIN32
|
||||
assert(fds_num == 0);
|
||||
#endif
|
||||
|
||||
/* Going through qobject ensures we escape strings properly */
|
||||
qobj = qobject_from_vjsonf_nofail(fmt, ap);
|
||||
|
||||
|
@ -148,10 +160,14 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
|||
if (log) {
|
||||
fprintf(stderr, "%s", str->str);
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
/* Send QMP request */
|
||||
if (fds && fds_num > 0) {
|
||||
socket_send_fds(fd, fds, fds_num, str->str, str->len);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
socket_send(fd, str->str, str->len);
|
||||
}
|
||||
|
||||
|
@ -160,15 +176,23 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||
const char *fmt, va_list ap)
|
||||
{
|
||||
_qmp_fd_vsend_fds(fd, fds, fds_num, fmt, ap);
|
||||
}
|
||||
#endif
|
||||
|
||||
void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
|
||||
{
|
||||
qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
|
||||
_qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
|
||||
}
|
||||
|
||||
|
||||
QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
|
||||
{
|
||||
qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
|
||||
_qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
|
||||
|
||||
return qmp_fd_receive(fd);
|
||||
}
|
||||
|
|
|
@ -21,8 +21,10 @@
|
|||
#include "qapi/qmp/qdict.h"
|
||||
|
||||
QDict *qmp_fd_receive(int fd);
|
||||
#ifndef _WIN32
|
||||
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||
const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
|
||||
#endif
|
||||
void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
|
||||
void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
|
||||
void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
|
||||
|
|
Loading…
Reference in New Issue