mirror of https://github.com/xemu-project/xemu.git
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:
parent
6aae5be6a7
commit
761d1ddf25
|
@ -278,6 +278,9 @@ int qemu_madvise(void *addr, size_t len, int advice);
|
||||||
|
|
||||||
int qemu_open(const char *name, int flags, ...);
|
int qemu_open(const char *name, int flags, ...);
|
||||||
int qemu_close(int fd);
|
int qemu_close(int fd);
|
||||||
|
#ifndef _WIN32
|
||||||
|
int qemu_dup(int fd);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__HAIKU__) && defined(__i386__)
|
#if defined(__HAIKU__) && defined(__i386__)
|
||||||
#define FMT_pid "%ld"
|
#define FMT_pid "%ld"
|
||||||
|
|
23
util/osdep.c
23
util/osdep.c
|
@ -83,14 +83,7 @@ static int qemu_dup_flags(int fd, int flags)
|
||||||
int serrno;
|
int serrno;
|
||||||
int dup_flags;
|
int dup_flags;
|
||||||
|
|
||||||
#ifdef F_DUPFD_CLOEXEC
|
ret = qemu_dup(fd);
|
||||||
ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
|
|
||||||
#else
|
|
||||||
ret = dup(fd);
|
|
||||||
if (ret != -1) {
|
|
||||||
qemu_set_cloexec(ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -129,6 +122,20 @@ fail:
|
||||||
return -1;
|
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)
|
static int qemu_parse_fdset(const char *param)
|
||||||
{
|
{
|
||||||
return qemu_parse_fd(param);
|
return qemu_parse_fd(param);
|
||||||
|
|
Loading…
Reference in New Issue