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>
This commit is contained in:
parent
448058aa99
commit
bf93d2ade9
30
util/osdep.c
30
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
|
* 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 ret;
|
||||||
int mode = 0;
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
const char *fdset_id_str;
|
const char *fdset_id_str;
|
||||||
@ -324,16 +324,26 @@ int qemu_open_old(const char *name, int flags, ...)
|
|||||||
}
|
}
|
||||||
#endif
|
#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);
|
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
|
#ifdef O_DIRECT
|
||||||
if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {
|
if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {
|
||||||
error_report("file system may not support O_DIRECT");
|
error_report("file system may not support O_DIRECT");
|
||||||
|
Loading…
Reference in New Issue
Block a user