From c26c1c4b3d5d4b7bd9f986ab67608419e7abefe1 Mon Sep 17 00:00:00 2001 From: ths Date: Fri, 22 Dec 2006 19:25:31 +0000 Subject: [PATCH] Support for unidirectional pipes, by Ed Swierk. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2267 c046a42c-6fe2-441c-8c8c-71466251a162 --- vl.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/vl.c b/vl.c index 7e161c69c4..b3e07acc52 100644 --- a/vl.c +++ b/vl.c @@ -1297,12 +1297,23 @@ CharDriverState *qemu_chr_open_file_out(const char *file_out) CharDriverState *qemu_chr_open_pipe(const char *filename) { - int fd; + int fd_in, fd_out; + char filename_in[256], filename_out[256]; - fd = open(filename, O_RDWR | O_BINARY); - if (fd < 0) - return NULL; - return qemu_chr_open_fd(fd, fd); + snprintf(filename_in, 256, "%s.in", filename); + snprintf(filename_out, 256, "%s.out", filename); + fd_in = open(filename_in, O_RDWR | O_BINARY); + fd_out = open(filename_out, O_RDWR | O_BINARY); + if (fd_in < 0 || fd_out < 0) { + if (fd_in >= 0) + close(fd_in); + if (fd_out >= 0) + close(fd_out); + fd_in = fd_out = open(filename, O_RDWR | O_BINARY); + if (fd_in < 0) + return NULL; + } + return qemu_chr_open_fd(fd_in, fd_out); }