From 2666b2905f9464fdadb5dae6497e873affbf840f Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 8 Jul 2016 11:45:37 +0100 Subject: [PATCH] virtlockd: convert to typesafe virConf accessors Signed-off-by: Daniel P. Berrange --- 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 09e817721f..6689fd8b7c 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 106e82059e..9362b2b740 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 1c79a4e591..6ab84c6a0a 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__ */