[libvirt] [PATCH 07/16] virtlockd: convert to typesafe virConf accessors

Daniel P. Berrange berrange at redhat.com
Mon Jul 11 09:45:26 UTC 2016


Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
---
 po/POTFILES.in                   |  1 -
 src/locking/lock_daemon_config.c | 90 ++++------------------------------------
 src/locking/lock_daemon_config.h |  9 ++--
 3 files changed, 12 insertions(+), 88 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 09e8177..6689fd8 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -82,7 +82,6 @@ src/libxl/libxl_domain.c
 src/libxl/libxl_driver.c
 src/libxl/libxl_migration.c
 src/locking/lock_daemon.c
-src/locking/lock_daemon_config.c
 src/locking/lock_daemon_dispatch.c
 src/locking/lock_driver_lockd.c
 src/locking/lock_driver_sanlock.c
diff --git a/src/locking/lock_daemon_config.c b/src/locking/lock_daemon_config.c
index 106e820..9362b2b 100644
--- a/src/locking/lock_daemon_config.c
+++ b/src/locking/lock_daemon_config.c
@@ -37,62 +37,6 @@
 
 VIR_LOG_INIT("locking.lock_daemon_config");
 
-
-/* A helper function used by each of the following macros.  */
-static int
-checkType(virConfValuePtr p, const char *filename,
-          const char *key, virConfType required_type)
-{
-    if (p->type != required_type) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("remoteReadConfigFile: %s: %s: invalid type:"
-                         " got %s; expected %s"), filename, key,
-                       virConfTypeToString(p->type),
-                       virConfTypeToString(required_type));
-        return -1;
-    }
-    return 0;
-}
-
-/* If there is no config data for the key, #var_name, then do nothing.
-   If there is valid data of type VIR_CONF_STRING, and VIR_STRDUP succeeds,
-   store the result in var_name.  Otherwise, (i.e. invalid type, or VIR_STRDUP
-   failure), give a diagnostic and "goto" the cleanup-and-fail label.  */
-#define GET_CONF_STR(conf, filename, var_name)                          \
-    do {                                                                \
-        virConfValuePtr p = virConfGetValue(conf, #var_name);           \
-        if (p) {                                                        \
-            if (checkType(p, filename, #var_name, VIR_CONF_STRING) < 0) \
-                goto error;                                             \
-            VIR_FREE(data->var_name);                                   \
-            if (VIR_STRDUP(data->var_name, p->str) < 0)                 \
-                goto error;                                             \
-        }                                                               \
-    } while (0)
-
-/* Like GET_CONF_STR, but for signed integer values.  */
-#define GET_CONF_INT(conf, filename, var_name)                          \
-    do {                                                                \
-        virConfValuePtr p = virConfGetValue(conf, #var_name);           \
-        if (p) {                                                        \
-            if (p->type != VIR_CONF_ULONG &&                            \
-                checkType(p, filename, #var_name, VIR_CONF_LONG) < 0)   \
-                goto error;                                             \
-            data->var_name = p->l;                                      \
-        }                                                               \
-    } while (0)
-
-/* Like GET_CONF_STR, but for unsigned integer values.  */
-#define GET_CONF_UINT(conf, filename, var_name)                         \
-    do {                                                                \
-        virConfValuePtr p = virConfGetValue(conf, #var_name);           \
-        if (p) {                                                        \
-            if (checkType(p, filename, #var_name, VIR_CONF_ULONG) < 0)  \
-                goto error;                                             \
-            data->var_name = p->l;                                      \
-        }                                                               \
-    } while (0)
-
 int
 virLockDaemonConfigFilePath(bool privileged, char **configfile)
 {
@@ -146,18 +90,18 @@ virLockDaemonConfigFree(virLockDaemonConfigPtr data)
 
 static int
 virLockDaemonConfigLoadOptions(virLockDaemonConfigPtr data,
-                               const char *filename,
                                virConfPtr conf)
 {
-    GET_CONF_UINT(conf, filename, log_level);
-    GET_CONF_STR(conf, filename, log_filters);
-    GET_CONF_STR(conf, filename, log_outputs);
-    GET_CONF_UINT(conf, filename, max_clients);
+    if (virConfGetValueUInt(conf, "log_level", &data->log_level) < 0)
+        return -1;
+    if (virConfGetValueString(conf, "log_filters", &data->log_filters) < 0)
+        return -1;
+    if (virConfGetValueString(conf, "log_outputs", &data->log_filters) < 0)
+        return -1;
+    if (virConfGetValueUInt(conf, "max_clients", &data->max_clients) < 0)
+        return -1;
 
     return 0;
-
- error:
-    return -1;
 }
 
 
@@ -181,23 +125,7 @@ virLockDaemonConfigLoadFile(virLockDaemonConfigPtr data,
     if (!conf)
         return -1;
 
-    ret = virLockDaemonConfigLoadOptions(data, filename, conf);
-    virConfFree(conf);
-    return ret;
-}
-
-int virLockDaemonConfigLoadData(virLockDaemonConfigPtr data,
-                                const char *filename,
-                                const char *filedata)
-{
-    virConfPtr conf;
-    int ret;
-
-    conf = virConfReadMem(filedata, strlen(filedata), 0);
-    if (!conf)
-        return -1;
-
-    ret = virLockDaemonConfigLoadOptions(data, filename, conf);
+    ret = virLockDaemonConfigLoadOptions(data, conf);
     virConfFree(conf);
     return ret;
 }
diff --git a/src/locking/lock_daemon_config.h b/src/locking/lock_daemon_config.h
index 1c79a4e..6ab84c6 100644
--- a/src/locking/lock_daemon_config.h
+++ b/src/locking/lock_daemon_config.h
@@ -30,10 +30,10 @@ typedef struct _virLockDaemonConfig virLockDaemonConfig;
 typedef virLockDaemonConfig *virLockDaemonConfigPtr;
 
 struct _virLockDaemonConfig {
-    int log_level;
+    unsigned int log_level;
     char *log_filters;
     char *log_outputs;
-    int max_clients;
+    unsigned int max_clients;
 };
 
 
@@ -42,9 +42,6 @@ virLockDaemonConfigPtr virLockDaemonConfigNew(bool privileged);
 void virLockDaemonConfigFree(virLockDaemonConfigPtr data);
 int virLockDaemonConfigLoadFile(virLockDaemonConfigPtr data,
                                 const char *filename,
-                         bool allow_missing);
-int virLockDaemonConfigLoadData(virLockDaemonConfigPtr data,
-                                const char *filename,
-                                const char *filedata);
+                                bool allow_missing);
 
 #endif /* __LIBVIRTD_CONFIG_H__ */
-- 
2.7.4




More information about the libvir-list mailing list