util: refactor qemu_open_old to split off variadic args handling
authorDaniel P. Berrangé <berrange@redhat.com>
Wed, 1 Jul 2020 15:30:35 +0000 (16:30 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Wed, 16 Sep 2020 09:33:48 +0000 (10:33 +0100)
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>
util/osdep.c

index 7504c156e8b21e3ce823920fe8f9061b09ed202a..11531e8f595f21de2bc50b693dd872f0d34c0a27 100644 (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,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)) {