[libvirt] [PATCH 0/4] Rewrite virGetUser*Directory() functions using g_get_*_dir()

By rewriting virGetUser*Directory() functions using g_get_*_dir() functions allows us to drop all the different implementations we keep, as GLib already takes care of those for us. Fabiano Fidêncio (4): util: Rewrite virGetUserDirectory() using g_get_home_dir() util: Rewrite virGetUserConfigDirectory() using g_get_user_config_dir() util: Rewrite virGetUserCacheDirectory() using g_get_user_cache_dir() util: Rewrite virGetUserRuntimeDirectory() using g_get_user_runtime_dir() src/util/virutil.c | 146 +++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 106 deletions(-) -- 2.23.0

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- src/util/virutil.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/util/virutil.c b/src/util/virutil.c index ed1f696e37..70a05e3c9b 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -582,7 +582,13 @@ virGetHostnameQuiet(void) char * virGetUserDirectory(void) { - return virGetUserDirectoryByUID(geteuid()); + const char *homedir; + + homedir = g_get_home_dir(); + if (!homedir) + return NULL; + + return g_strdup_printf("%s/libvirt", homedir); } -- 2.23.0

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- src/util/virutil.c | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/src/util/virutil.c b/src/util/virutil.c index 70a05e3c9b..6fae3e8288 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -592,6 +592,17 @@ virGetUserDirectory(void) } +char *virGetUserConfigDirectory(void) +{ + const char *configdir = g_get_user_config_dir(); + + if (!configdir) + return NULL; + + return g_strdup_printf("%s/libvirt", configdir); +} + + #ifdef HAVE_GETPWUID_R /* Look up fields from the user database for the given user. On * error, set errno, report the error if not instructed otherwise via @quiet, @@ -760,11 +771,6 @@ static char *virGetXDGDirectory(const char *xdgenvname, const char *xdgdefdir) return ret; } -char *virGetUserConfigDirectory(void) -{ - return virGetXDGDirectory("XDG_CONFIG_HOME", ".config"); -} - char *virGetUserCacheDirectory(void) { return virGetXDGDirectory("XDG_CACHE_HOME", ".cache"); @@ -1193,21 +1199,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } -char * -virGetUserConfigDirectory(void) -{ - char *ret; - if (virGetWin32SpecialFolder(CSIDL_LOCAL_APPDATA, &ret) < 0) - return NULL; - - if (!ret) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Unable to determine config directory")); - return NULL; - } - return ret; -} - char * virGetUserCacheDirectory(void) { @@ -1248,15 +1239,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } -char * -virGetUserConfigDirectory(void) -{ - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("virGetUserConfigDirectory is not available")); - - return NULL; -} - char * virGetUserCacheDirectory(void) { -- 2.23.0

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- src/util/virutil.c | 58 +++++++++------------------------------------- 1 file changed, 11 insertions(+), 47 deletions(-) diff --git a/src/util/virutil.c b/src/util/virutil.c index 6fae3e8288..993a959555 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -603,6 +603,17 @@ char *virGetUserConfigDirectory(void) } +char *virGetUserCacheDirectory(void) +{ + const char *cachedir = g_get_user_cache_dir(); + + if (!cachedir) + return NULL; + + return g_strdup_printf("%s/libvirt", cachedir); +} + + #ifdef HAVE_GETPWUID_R /* Look up fields from the user database for the given user. On * error, set errno, report the error if not instructed otherwise via @quiet, @@ -753,29 +764,6 @@ char *virGetUserShell(uid_t uid) } -static char *virGetXDGDirectory(const char *xdgenvname, const char *xdgdefdir) -{ - const char *path = getenv(xdgenvname); - char *ret = NULL; - char *home = NULL; - - if (path && path[0]) { - ret = g_strdup_printf("%s/libvirt", path); - } else { - home = virGetUserDirectory(); - if (home) - ret = g_strdup_printf("%s/%s/libvirt", home, xdgdefdir); - } - - VIR_FREE(home); - return ret; -} - -char *virGetUserCacheDirectory(void) -{ - return virGetXDGDirectory("XDG_CACHE_HOME", ".cache"); -} - char *virGetUserRuntimeDirectory(void) { const char *path = getenv("XDG_RUNTIME_DIR"); @@ -1199,21 +1187,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } -char * -virGetUserCacheDirectory(void) -{ - char *ret; - if (virGetWin32SpecialFolder(CSIDL_INTERNET_CACHE, &ret) < 0) - return NULL; - - if (!ret) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Unable to determine config directory")); - return NULL; - } - return ret; -} - char * virGetUserRuntimeDirectory(void) { @@ -1239,15 +1212,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } -char * -virGetUserCacheDirectory(void) -{ - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("virGetUserCacheDirectory is not available")); - - return NULL; -} - char * virGetUserRuntimeDirectory(void) { -- 2.23.0

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> --- src/util/virutil.c | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/src/util/virutil.c b/src/util/virutil.c index 993a959555..62cb3390f8 100644 --- a/src/util/virutil.c +++ b/src/util/virutil.c @@ -614,6 +614,17 @@ char *virGetUserCacheDirectory(void) } +char *virGetUserRuntimeDirectory(void) +{ + const char *runtimedir = g_get_user_runtime_dir(); + + if (!runtimedir) + return NULL; + + return g_strdup_printf("%s/libvirt", runtimedir); +} + + #ifdef HAVE_GETPWUID_R /* Look up fields from the user database for the given user. On * error, set errno, report the error if not instructed otherwise via @quiet, @@ -764,20 +775,6 @@ char *virGetUserShell(uid_t uid) } -char *virGetUserRuntimeDirectory(void) -{ - const char *path = getenv("XDG_RUNTIME_DIR"); - - if (!path || !path[0]) { - return virGetUserCacheDirectory(); - } else { - char *ret; - - ret = g_strdup_printf("%s/libvirt", path); - return ret; - } -} - char *virGetUserName(uid_t uid) { char *ret; @@ -1187,12 +1184,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } -char * -virGetUserRuntimeDirectory(void) -{ - return virGetUserCacheDirectory(); -} - # else /* !HAVE_GETPWUID_R && !WIN32 */ char * virGetUserDirectoryByUID(uid_t uid G_GNUC_UNUSED) @@ -1211,15 +1202,6 @@ virGetUserShell(uid_t uid G_GNUC_UNUSED) return NULL; } - -char * -virGetUserRuntimeDirectory(void) -{ - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("virGetUserRuntimeDirectory is not available")); - - return NULL; -} # endif /* ! HAVE_GETPWUID_R && ! WIN32 */ char * -- 2.23.0
participants (1)
-
Fabiano Fidêncio