[pulseaudio-discuss] [PATCH 7/9] core-util: Add pa_get_config_home_dir()
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Sun Jun 8 06:32:59 PDT 2014
---
src/pulsecore/core-util.c | 44 ++++++++++++++++++++++++++------------------
src/pulsecore/core-util.h | 1 +
2 files changed, 27 insertions(+), 18 deletions(-)
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index cef9f88..1852b1c 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -1549,16 +1549,6 @@ int pa_unlock_lockfile(const char *fn, int fd) {
return r;
}
-static char *get_config_home(char *home) {
- char *t;
-
- t = getenv("XDG_CONFIG_HOME");
- if (t)
- return pa_xstrdup(t);
-
- return pa_sprintf_malloc("%s" PA_PATH_SEP ".config", home);
-}
-
static int check_ours(const char *p) {
struct stat st;
@@ -1576,7 +1566,7 @@ static int check_ours(const char *p) {
}
static char *get_pulse_home(void) {
- char *h, *ret, *config_home;
+ char *h, *ret;
int t;
h = pa_get_home_dir_malloc();
@@ -1594,17 +1584,14 @@ static char *get_pulse_home(void) {
/* If the old directory exists, use it. */
ret = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h);
- if (access(ret, F_OK) >= 0) {
- free(h);
+ pa_xfree(h);
+ if (access(ret, F_OK) >= 0)
return ret;
- }
free(ret);
/* Otherwise go for the XDG compliant directory. */
- config_home = get_config_home(h);
- free(h);
- ret = pa_sprintf_malloc("%s" PA_PATH_SEP "pulse", config_home);
- free(config_home);
+ if (pa_get_config_home_dir(&ret) < 0)
+ return NULL;
return ret;
}
@@ -1670,6 +1657,27 @@ int pa_append_to_home_dir(const char *path, char **_r) {
return 0;
}
+int pa_get_config_home_dir(char **_r) {
+ const char *e;
+ char *home_dir;
+
+ pa_assert(_r);
+
+ e = getenv("XDG_CONFIG_HOME");
+ if (e && *e) {
+ *_r = pa_sprintf_malloc("%s" PA_PATH_SEP "pulse", e);
+ return 0;
+ }
+
+ home_dir = pa_get_home_dir_malloc();
+ if (!home_dir)
+ return -PA_ERR_NOENTITY;
+
+ *_r = pa_sprintf_malloc("%s" PA_PATH_SEP ".config" PA_PATH_SEP "pulse", home_dir);
+ pa_xfree(home_dir);
+ return 0;
+}
+
char *pa_get_binary_name_malloc(void) {
char *t;
size_t allocated = 128;
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 9495e6d..d2ab771 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -139,6 +139,7 @@ char *pa_get_runtime_dir(void);
char *pa_get_state_dir(void);
char *pa_get_home_dir_malloc(void);
int pa_append_to_home_dir(const char *path, char **_r);
+int pa_get_config_home_dir(char **_r);
char *pa_get_binary_name_malloc(void);
char *pa_runtime_path(const char *fn);
char *pa_state_path(const char *fn, bool prepend_machine_id);
--
1.9.3
More information about the pulseaudio-discuss
mailing list