mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04: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)
|
||||
return impl->state_dir_fd;
|
||||
|
||||
home_dir = getenv("HOME");
|
||||
if (home_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;
|
||||
home_dir = getenv("XDG_CONFIG_HOME");
|
||||
if (home_dir != NULL)
|
||||
snprintf(impl->state_dir, sizeof(impl->state_dir)-1,
|
||||
"%s/pipewire-media-session/", home_dir);
|
||||
else {
|
||||
home_dir = getenv("HOME");
|
||||
if (home_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 (errno == ENOENT) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue