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>
master
Daniel P. Berrangé 2020-07-01 16:30:35 +01:00
parent 448058aa99
commit bf93d2ade9
1 changed files with 20 additions and 10 deletions

View File

@ -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,16 +324,26 @@ int qemu_open_old(const char *name, int flags, ...)
}
#endif
if (flags & O_CREAT) {
va_list ap;
va_start(ap, flags);
mode = va_arg(ap, int);
va_end(ap);
}
ret = qemu_open_cloexec(name, flags, mode);
return ret;
}
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);
ret = qemu_open_internal(name, flags, mode);
#ifdef O_DIRECT
if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {
error_report("file system may not support O_DIRECT");