diff --git a/qemu-sockets.c b/qemu-sockets.c index bd49d29a48..732d3e09cf 100644 --- a/qemu-sockets.c +++ b/qemu-sockets.c @@ -29,6 +29,19 @@ static int sockets_debug = 0; static const int on=1, off=0; +/* used temporarely until all users are converted to QemuOpts */ +QemuOptsList dummy_opts = { + .name = "dummy", + .head = TAILQ_HEAD_INITIALIZER(dummy_opts.head), + .desc = { + { + .name = "path", + .type = QEMU_OPT_STRING, + }, + { /* end if list */ } + }, +}; + static int inet_getport(struct addrinfo *e) { struct sockaddr_in *i4; @@ -376,11 +389,17 @@ err: return -1; } -int unix_connect(const char *path) +int unix_connect_opts(QemuOpts *opts) { struct sockaddr_un un; + const char *path = qemu_opt_get(opts, "path"); int sock; + if (NULL == path) { + fprintf(stderr, "unix connect: no path specified\n"); + return -1; + } + sock = socket(PF_UNIX, SOCK_STREAM, 0); if (sock < 0) { perror("socket(unix)"); @@ -400,6 +419,19 @@ int unix_connect(const char *path) return sock; } +/* compatibility wrapper */ +int unix_connect(const char *path) +{ + QemuOpts *opts; + int sock; + + opts = qemu_opts_create(&dummy_opts, NULL, 0); + qemu_opt_set(opts, "path", path); + sock = unix_connect_opts(opts); + qemu_opts_del(opts); + return sock; +} + #else int unix_listen(const char *path, char *ostr, int olen) diff --git a/qemu_socket.h b/qemu_socket.h index fc5b5889b7..7ca4af7e0f 100644 --- a/qemu_socket.h +++ b/qemu_socket.h @@ -29,6 +29,8 @@ int inet_aton(const char *cp, struct in_addr *ia); #endif /* !_WIN32 */ +#include "qemu-option.h" + /* misc helpers */ void socket_set_nonblock(int fd); int send_all(int fd, const void *buf, int len1); @@ -39,6 +41,7 @@ int inet_listen(const char *str, char *ostr, int olen, int inet_connect(const char *str, int socktype); int unix_listen(const char *path, char *ostr, int olen); +int unix_connect_opts(QemuOpts *opts); int unix_connect(const char *path); /* Old, ipv4 only bits. Don't use for new code. */