[libvirt] [PATCH 1/9] libvirt: Export libvirt config getters by moving them to util
Michal Privoznik
mprivozn at redhat.com
Wed Oct 14 11:25:17 UTC 2015
On 13.10.2015 15:38, Erik Skultety wrote:
> virConnectGetConfig and virConnectGetConfigPath were static libvirt
> methods, merely because there hasn't been any need for having them
> internally exported yet. Since libvirt-admin also needs to reference
> libvirt config file, 'xGetConfig' should be exported.
> Besides moving, this patch also renames the methods accordingly,
> as they are libvirt config specific.
> ---
> src/libvirt.c | 55 +-----------------------------------------------
> src/libvirt_private.syms | 2 +-
> src/util/virconf.c | 52 +++++++++++++++++++++++++++++++++++++++++++++
> src/util/virconf.h | 2 +-
> 4 files changed, 55 insertions(+), 56 deletions(-)
>
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 2602dde..5ee41ef 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -908,59 +908,6 @@ virGetVersion(unsigned long *libVer, const char *type ATTRIBUTE_UNUSED,
> return -1;
> }
>
> -
> -static char *
> -virConnectGetConfigFilePath(void)
> -{
> - char *path;
> - if (geteuid() == 0) {
> - if (virAsprintf(&path, "%s/libvirt/libvirt.conf",
> - SYSCONFDIR) < 0)
> - return NULL;
> - } else {
> - char *userdir = virGetUserConfigDirectory();
> - if (!userdir)
> - return NULL;
> -
> - if (virAsprintf(&path, "%s/libvirt.conf",
> - userdir) < 0) {
> - VIR_FREE(userdir);
> - return NULL;
> - }
> - VIR_FREE(userdir);
> - }
> -
> - return path;
> -}
> -
> -
> -static int
> -virConnectGetConfigFile(virConfPtr *conf)
> -{
> - char *filename = NULL;
> - int ret = -1;
> -
> - *conf = NULL;
> -
> - if (!(filename = virConnectGetConfigFilePath()))
> - goto cleanup;
> -
> - if (!virFileExists(filename)) {
> - ret = 0;
> - goto cleanup;
> - }
> -
> - VIR_DEBUG("Loading config file '%s'", filename);
> - if (!(*conf = virConfReadFile(filename, 0)))
> - goto cleanup;
> -
> - ret = 0;
> -
> - cleanup:
> - VIR_FREE(filename);
> - return ret;
> -}
> -
> #define URI_ALIAS_CHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"
>
>
> @@ -1078,7 +1025,7 @@ do_open(const char *name,
> if (ret == NULL)
> return NULL;
>
> - if (virConnectGetConfigFile(&conf) < 0)
> + if (virGetLibvirtConfigFile(&conf) < 0)
> goto failed;
>
> if (name && name[0] == '\0')
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index be6ee19..c044287 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1332,7 +1332,7 @@ virConfTypeToString;
> virConfWalk;
> virConfWriteFile;
> virConfWriteMem;
> -
> +virGetLibvirtConfigFile;
>
No, we like the double empty lines here.
> # util/vircrypto.h
> virCryptoHashString;
> diff --git a/src/util/virconf.c b/src/util/virconf.c
> index 9f2d116..0b3d7da 100644
> --- a/src/util/virconf.c
> +++ b/src/util/virconf.c
> @@ -38,6 +38,7 @@
> #include "viralloc.h"
> #include "virfile.h"
> #include "virstring.h"
> +#include "configmake.h"
>
> #define VIR_FROM_THIS VIR_FROM_CONF
>
> @@ -1053,3 +1054,54 @@ virConfWriteMem(char *memory, int *len, virConfPtr conf)
> *len = use;
> return use;
> }
> +
> +static char *
> +virGetLibvirtConfigFilePath(void)
> +{
> + char *path;
> + if (geteuid() == 0) {
> + if (virAsprintf(&path, "%s/libvirt/libvirt.conf",
> + SYSCONFDIR) < 0)
> + return NULL;
> + } else {
> + char *userdir = virGetUserConfigDirectory();
> + if (!userdir)
> + return NULL;
> +
> + if (virAsprintf(&path, "%s/libvirt.conf",
> + userdir) < 0) {
> + VIR_FREE(userdir);
> + return NULL;
> + }
> + VIR_FREE(userdir);
> + }
> +
> + return path;
> +}
> +
> +int
> +virGetLibvirtConfigFile(virConfPtr *conf)
> +{
> + char *filename = NULL;
> + int ret = -1;
> +
> + *conf = NULL;
> +
> + if (!(filename = virGetLibvirtConfigFilePath()))
> + goto cleanup;
> +
> + if (!virFileExists(filename)) {
> + ret = 0;
> + goto cleanup;
> + }
> +
> + VIR_DEBUG("Loading config file '%s'", filename);
> + if (!(*conf = virConfReadFile(filename, 0)))
> + goto cleanup;
> +
> + ret = 0;
> +
> + cleanup:
> + VIR_FREE(filename);
> + return ret;
> +}
> diff --git a/src/util/virconf.h b/src/util/virconf.h
> index 8037956..dad7dba 100644
> --- a/src/util/virconf.h
> +++ b/src/util/virconf.h
> @@ -96,5 +96,5 @@ int virConfWriteFile(const char *filename,
> int virConfWriteMem(char *memory,
> int *len,
> virConfPtr conf);
> -
> +int virGetLibvirtConfigFile(virConfPtr *conf);
> #endif /* __VIR_CONF_H__ */
>
Otherwise looking good. ACK.
Michal
More information about the libvir-list
mailing list