mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-15 15:32:51 +00:00
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"
|
#include "libqmp.h"
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "qemu/cutils.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qapi/qmp/json-parser.h"
|
#include "qapi/qmp/json-parser.h"
|
||||||
#include "qapi/qmp/qjson.h"
|
#include "qapi/qmp/qjson.h"
|
||||||
|
@ -87,6 +92,7 @@ QDict *qmp_fd_receive(int fd)
|
||||||
return qmp.response;
|
return qmp.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
/* Sends a message and file descriptors to the socket.
|
/* Sends a message and file descriptors to the socket.
|
||||||
* It's needed for qmp-commands like getfd/add-fd */
|
* It's needed for qmp-commands like getfd/add-fd */
|
||||||
static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
|
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);
|
} while (ret < 0 && errno == EINTR);
|
||||||
g_assert_cmpint(ret, >, 0);
|
g_assert_cmpint(ret, >, 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow users to send a message without waiting for the reply,
|
* Allow users to send a message without waiting for the reply,
|
||||||
* in the case that they choose to discard all replies up until
|
* in the case that they choose to discard all replies up until
|
||||||
* a particular EVENT is received.
|
* a particular EVENT is received.
|
||||||
*/
|
*/
|
||||||
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
static void
|
||||||
const char *fmt, va_list ap)
|
_qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||||
|
const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
QObject *qobj;
|
QObject *qobj;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
assert(fds_num == 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Going through qobject ensures we escape strings properly */
|
/* Going through qobject ensures we escape strings properly */
|
||||||
qobj = qobject_from_vjsonf_nofail(fmt, ap);
|
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) {
|
if (log) {
|
||||||
fprintf(stderr, "%s", str->str);
|
fprintf(stderr, "%s", str->str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
/* Send QMP request */
|
/* Send QMP request */
|
||||||
if (fds && fds_num > 0) {
|
if (fds && fds_num > 0) {
|
||||||
socket_send_fds(fd, fds, fds_num, str->str, str->len);
|
socket_send_fds(fd, fds, fds_num, str->str, str->len);
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
socket_send(fd, str->str, str->len);
|
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)
|
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)
|
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);
|
return qmp_fd_receive(fd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,8 +21,10 @@
|
||||||
#include "qapi/qmp/qdict.h"
|
#include "qapi/qmp/qdict.h"
|
||||||
|
|
||||||
QDict *qmp_fd_receive(int fd);
|
QDict *qmp_fd_receive(int fd);
|
||||||
|
#ifndef _WIN32
|
||||||
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
|
||||||
const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
|
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_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(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);
|
void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
|
||||||
|
|
Loading…
Reference in a new issue