mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
examples: media-session: Conform to XDG base directory spec
Currently pipewire-media-session uses ~/.pipewire-media-session for storing configuration. Use home directory as specified by XDG base directory specification viz. XDG_CONFIG_HOME and fall back to using a default of $HOME/.config as per the spec if XDG_CONFIG_HOME is not set or empty. Also in addition, all cases are now handled the same and always end up using "%s/.config/pipewire-media-session". If neither XDG_CONFIG_HOME or HOME are set, fall back to the earlier approach. Fixes: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/271 Signed-off-by: Sanchayan Maity <sanchayan@asymptotic.io> Fixes !298
This commit is contained in:
parent
d456893f31
commit
f4a949dc3a
1 changed files with 20 additions and 14 deletions
|
|
@ -1748,21 +1748,27 @@ static int state_dir(struct sm_media_session *sess)
|
||||||
if (impl->state_dir_fd != -1)
|
if (impl->state_dir_fd != -1)
|
||||||
return impl->state_dir_fd;
|
return impl->state_dir_fd;
|
||||||
|
|
||||||
home_dir = getenv("HOME");
|
home_dir = getenv("XDG_CONFIG_HOME");
|
||||||
if (home_dir == NULL)
|
if (home_dir != NULL)
|
||||||
home_dir = getenv("USERPROFILE");
|
snprintf(impl->state_dir, sizeof(impl->state_dir)-1,
|
||||||
if (home_dir == NULL) {
|
"%s/pipewire-media-session/", home_dir);
|
||||||
struct passwd pwd, *result = NULL;
|
else {
|
||||||
char buffer[4096];
|
home_dir = getenv("HOME");
|
||||||
if (getpwuid_r(getuid(), &pwd, buffer, sizeof(buffer), &result) == 0)
|
if (home_dir == NULL)
|
||||||
home_dir = result ? result->pw_dir : NULL;
|
home_dir = getenv("USERPROFILE");
|
||||||
|
if (home_dir == NULL) {
|
||||||
|
struct passwd pwd, *result = NULL;
|
||||||
|
char buffer[4096];
|
||||||
|
if (getpwuid_r(getuid(), &pwd, buffer, sizeof(buffer), &result) == 0)
|
||||||
|
home_dir = result ? result->pw_dir : NULL;
|
||||||
|
}
|
||||||
|
if (home_dir == NULL) {
|
||||||
|
pw_log_error("Can't determine home directory");
|
||||||
|
return -ENOTSUP;
|
||||||
|
}
|
||||||
|
snprintf(impl->state_dir, sizeof(impl->state_dir)-1,
|
||||||
|
"%s/.config/pipewire-media-session/", home_dir);
|
||||||
}
|
}
|
||||||
if (home_dir == NULL) {
|
|
||||||
pw_log_error("Can't determine home directory");
|
|
||||||
return -ENOTSUP;
|
|
||||||
}
|
|
||||||
snprintf(impl->state_dir, sizeof(impl->state_dir)-1,
|
|
||||||
"%s/.pipewire-media-session/", home_dir);
|
|
||||||
|
|
||||||
if ((res = open(impl->state_dir, O_CLOEXEC | O_DIRECTORY | O_PATH)) < 0) {
|
if ((res = open(impl->state_dir, O_CLOEXEC | O_DIRECTORY | O_PATH)) < 0) {
|
||||||
if (errno == ENOENT) {
|
if (errno == ENOENT) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue