diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-04-11 16:58:07 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-04-11 16:58:07 +0000 |
commit | cdb273de904a0a66fee2c0dc0c164455f8c035ac (patch) | |
tree | befe6d8bdd25b184cee779521a0bc7b98bc90aa0 | |
parent | dcf71734892ed6f8076a6ae37718fa02c750be7a (diff) |
add new pa_get_state_dir() function, move pa_strnull() here
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2257 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | src/pulsecore/core-util.c | 29 | ||||
-rw-r--r-- | src/pulsecore/core-util.h | 8 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 61d04c2d..28885b2c 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -1093,6 +1093,35 @@ int pa_unlock_lockfile(const char *fn, int fd) { return r; } +char *pa_get_state_dir(void) { + const char *e; + char *d; + + if ((e = getenv("PULSE_STATE_PATH"))) + d = pa_xstrdup(e); + else { + char h[PATH_MAX]; + + if (!pa_get_home_dir(h, sizeof(h))) { + pa_log_error("Failed to get home directory."); + return NULL; + } + + d = pa_sprintf_malloc("%s/.pulse", h); + } + + mkdir(d, 0755); + + if (access(d, W_OK) == 0) + return d; + + pa_log_error("Failed to set up state directory %s", d); + + pa_xfree(d); + + return NULL; +} + /* Try to open a configuration file. If "env" is specified, open the * value of the specified environment variable. Otherwise look for a * file "local" in the home directory or a file "global" in global diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h index c8760a1f..d5c0a3f6 100644 --- a/src/pulsecore/core-util.h +++ b/src/pulsecore/core-util.h @@ -30,7 +30,7 @@ #include <stdarg.h> #include <stdio.h> -#include <pulsecore/gccmacro.h> +#include <pulse/gccmacro.h> #include <pulsecore/macro.h> struct timeval; @@ -67,6 +67,10 @@ static inline const char *pa_yes_no(pa_bool_t b) { return b ? "yes" : "no"; } +static inline const char *pa_strnull(const char *x) { + return x ? x : "(null)"; +} + char *pa_split(const char *c, const char*delimiters, const char **state); char *pa_split_spaces(const char *c, const char **state); @@ -129,4 +133,6 @@ void pa_close_pipe(int fds[2]); char *pa_readlink(const char *p); +char *pa_get_state_dir(void); + #endif |