osdep: Introduce qemu_dup

And use it in qemu_dup_flags.

Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Fam Zheng 2016-06-22 20:53:19 +08:00 committed by Kevin Wolf
parent 6aae5be6a7
commit 761d1ddf25
2 changed files with 18 additions and 8 deletions

View File

@ -278,6 +278,9 @@ int qemu_madvise(void *addr, size_t len, int advice);
int qemu_open(const char *name, int flags, ...);
int qemu_close(int fd);
#ifndef _WIN32
int qemu_dup(int fd);
#endif
#if defined(__HAIKU__) && defined(__i386__)
#define FMT_pid "%ld"

View File

@ -83,14 +83,7 @@ static int qemu_dup_flags(int fd, int flags)
int serrno;
int dup_flags;
#ifdef F_DUPFD_CLOEXEC
ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
#else
ret = dup(fd);
if (ret != -1) {
qemu_set_cloexec(ret);
}
#endif
ret = qemu_dup(fd);
if (ret == -1) {
goto fail;
}
@ -129,6 +122,20 @@ fail:
return -1;
}
int qemu_dup(int fd)
{
int ret;
#ifdef F_DUPFD_CLOEXEC
ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
#else
ret = dup(fd);
if (ret != -1) {
qemu_set_cloexec(ret);
}
#endif
return ret;
}
static int qemu_parse_fdset(const char *param)
{
return qemu_parse_fd(param);