summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanu.kaskinen@linux.intel.com>2014-06-08 16:32:59 +0300
committerTanu Kaskinen <tanu.kaskinen@linux.intel.com>2014-06-24 13:17:53 +0300
commit6c5c65a718c8100fbf97132c3c1c4778e9440d18 (patch)
tree17cabf4c6cea23a1eaf983839c598f8a25012aec
parent14845b2c8e867a20222b6b6a4fd0e52f1b9dc79f (diff)
core-util: Add pa_get_config_home_dir()
-rw-r--r--src/pulsecore/core-util.c44
-rw-r--r--src/pulsecore/core-util.h1
2 files changed, 27 insertions, 18 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index cef9f88bd..1852b1c87 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 9495e6dda..d2ab77106 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);