Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support modern locations for configuration files for Unix (XDG_CONFIG_HOME and ~/.config/) #41

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Ma11ock
Copy link

@Ma11ock Ma11ock commented Apr 22, 2022

Modern Linux/BSD systems have moved their configuration files out of the home directory and into ~/.config, or the directory pointed to by the environment variable XDG_CONFIG_HOME. This patch adds support for these directories. Tested on Linux and Windows.

@bones-was-here
Copy link
Contributor

I think XDG support should include putting the dlcache in ~/.cache because otherwise it will end up in ~/.config which means that forevermore DP will have to look for it there (even after support for ~/.cache is added).

Please add a --signoff to your commit(s) (to clarify you are releasing the code as GPLv2+).

@Cloudwalk9 is there anything else that needs to be changed at the same time?

@bones-was-here bones-was-here marked this pull request as draft January 18, 2023 05:37
@bones-was-here
Copy link
Contributor

Marking as Draft as it can't be merged in the current state.
All the issues mentioned by div https://gitlab.com/xonotic/darkplaces/-/merge_requests/10 and I https://gitlab.com/xonotic/darkplaces/-/issues/16 will need to be addressed.

@@ -1903,6 +1903,18 @@ static int FS_ChooseUserDir(userdirmode_t userdirmode, char *userdir, size_t use
if(homedir)
{
dpsnprintf(userdir, userdirsize, "%s/.%s/", homedir, gameuserdirname);
#if defined(__unix__) || defined(__unix)
// Check for darkplaces config paths in this order: ~/.darkplaces, XDG_CONFIG_HOME/darkplaces, ~/.config/darkplaces.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This encodes a preference order. It prefers ~/.darkplaces if it exists, but creates ~/.config/darkplaces if nothing exists. Please explain this in the comment.

if(access(userdir, F_OK) != 0)
{
// Check if XDG_CONFIG_HOME exists, test if absolute path.
const char *xdgconfdir = getenv("XDG_CONFIG_HOME");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that XDG_CONFIG_HOME may be put on version control, and thus is not appropriate for in particular the dlcache subdirectory.

Any chance that can be fixed first?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failing that, I guess ~/.local/share/darkplaces won't be wrong, but also not substantially better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants