Also look for entries in $XDG_DATA_HOME (or $HOME)
This commit is contained in:
parent
43e1ff6b0d
commit
3710ad4b6d
|
@ -158,6 +158,7 @@ static int _settings_browse_folder(Settings * settings, Config * config,
|
|||
static int _settings_browse_folder_access(char const * filename, int mode);
|
||||
static int _settings_browse_folder_access_path(char const * path,
|
||||
char const * filename, int mode);
|
||||
static int _settings_browse_home(Settings * settings, Config * config);
|
||||
static void _settings_rtrim(String * string, char c);
|
||||
|
||||
static int _settings_browse(Settings * settings)
|
||||
|
@ -205,6 +206,7 @@ static int _settings_browse(Settings * settings)
|
|||
free(p);
|
||||
if(datadir == 0)
|
||||
ret = _settings_browse_folder(settings, config, DATADIR);
|
||||
ret |= _settings_browse_home(settings, config);
|
||||
config_delete(config);
|
||||
return ret;
|
||||
}
|
||||
|
@ -358,6 +360,27 @@ static int _settings_browse_folder_access_path(char const * path,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int _settings_browse_home(Settings * settings, Config * config)
|
||||
{
|
||||
int ret;
|
||||
char const fallback[] = ".local/share";
|
||||
char const * path;
|
||||
char const * homedir;
|
||||
String * p;
|
||||
|
||||
/* use $XDG_DATA_HOME if set and not empty */
|
||||
if((path = getenv("XDG_DATA_HOME")) != NULL && strlen(path) > 0)
|
||||
return _settings_browse_folder(settings, config, path);
|
||||
/* fallback to "$HOME/.local/share" */
|
||||
if((homedir = getenv("HOME")) == NULL)
|
||||
homedir = g_get_home_dir();
|
||||
if((p = string_new_append(homedir, "/", fallback, NULL)) == NULL)
|
||||
return -_settings_error(error_get(), 1);
|
||||
ret = _settings_browse_folder(settings, config, p);
|
||||
free(p);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void _settings_rtrim(String * string, char c)
|
||||
{
|
||||
size_t len;
|
||||
|
|
Loading…
Reference in New Issue
Block a user