aboutsummaryrefslogtreecommitdiff
path: root/util/osdep.c
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2020-07-01 16:30:35 +0100
committerDaniel P. Berrangé <berrange@redhat.com>2020-09-16 10:33:48 +0100
commitbf93d2ade9008235fe2fbfd683458509ce53d6f7 (patch)
tree6754b288a8abc5a0e3ebf878683a31dc816bce38 /util/osdep.c
parent448058aa99aaf30e7b8978508e575284a19fcfc9 (diff)
downloadqemu-bf93d2ade9008235fe2fbfd683458509ce53d6f7.zip
qemu-bf93d2ade9008235fe2fbfd683458509ce53d6f7.tar.gz
qemu-bf93d2ade9008235fe2fbfd683458509ce53d6f7.tar.bz2
util: refactor qemu_open_old to split off variadic args handling
This simple refactoring prepares for future patches. The variadic args handling is split from the main bulk of the open logic. Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'util/osdep.c')
-rw-r--r--util/osdep.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/util/osdep.c b/util/osdep.c
index 7504c15..11531e8 100644
--- a/util/osdep.c
+++ b/util/osdep.c
@@ -296,10 +296,10 @@ static int qemu_open_cloexec(const char *name, int flags, mode_t mode)
/*
* Opens a file with FD_CLOEXEC set
*/
-int qemu_open_old(const char *name, int flags, ...)
+static int
+qemu_open_internal(const char *name, int flags, mode_t mode)
{
int ret;
- int mode = 0;
#ifndef _WIN32
const char *fdset_id_str;
@@ -324,15 +324,25 @@ int qemu_open_old(const char *name, int flags, ...)
}
#endif
- if (flags & O_CREAT) {
- va_list ap;
+ ret = qemu_open_cloexec(name, flags, mode);
+
+ return ret;
+}
+
- va_start(ap, flags);
+int qemu_open_old(const char *name, int flags, ...)
+{
+ va_list ap;
+ mode_t mode = 0;
+ int ret;
+
+ va_start(ap, flags);
+ if (flags & O_CREAT) {
mode = va_arg(ap, int);
- va_end(ap);
}
+ va_end(ap);
- ret = qemu_open_cloexec(name, flags, mode);
+ ret = qemu_open_internal(name, flags, mode);
#ifdef O_DIRECT
if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {