mirror of
https://github.com/ascii-boxes/boxes.git
synced 2025-06-04 09:05:58 +02:00
Unify config file search order Linux/Unix and Windows #69
This means we have some XDG support on Windows, too, although some global locations like /etc/xdg are unlikely to exist.
This commit is contained in:
parent
68098e4480
commit
d952bd6eea
58
src/boxes.c
58
src/boxes.c
@ -264,47 +264,9 @@ static char *exe_to_cfg()
|
|||||||
return exepath;
|
return exepath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static char *determine_config_file()
|
|
||||||
{
|
|
||||||
int error_printed = 0;
|
|
||||||
char *result = locate_config_common(&error_printed);
|
|
||||||
|
|
||||||
if (result == NULL && !error_printed) {
|
|
||||||
const char *dirs[] = {
|
|
||||||
".",
|
|
||||||
from_env_var("HOME", "")
|
|
||||||
};
|
|
||||||
for (size_t i = 0; i < (sizeof(dirs) / sizeof(const char *)); i++) {
|
|
||||||
const char *dir = dirs[i];
|
|
||||||
if (can_read_dir(dir)) {
|
|
||||||
result = locate_config_in_dir(dir);
|
|
||||||
if (result != NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == NULL) { // TODO same determine_config_file(), but globalconf_marker triggers different things
|
|
||||||
char *exepath = exe_to_cfg();
|
|
||||||
if (can_read_file(exepath)) {
|
|
||||||
result = exepath;
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "%s: Couldn\'t find config file at \'%s\'\n", PROJECT, exepath);
|
|
||||||
error_printed = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == NULL && !error_printed) {
|
|
||||||
fprintf(stderr, "%s: Can't find config file.\n", PROJECT);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static char *determine_config_file()
|
static char *determine_config_file()
|
||||||
{
|
{
|
||||||
int error_printed = 0;
|
int error_printed = 0;
|
||||||
@ -323,8 +285,20 @@ static char *determine_config_file()
|
|||||||
};
|
};
|
||||||
for (size_t i = 0; i < (sizeof(dirs) / sizeof(const char *)); i++) {
|
for (size_t i = 0; i < (sizeof(dirs) / sizeof(const char *)); i++) {
|
||||||
const char *dir = dirs[i];
|
const char *dir = dirs[i];
|
||||||
if (dir == globalconf_marker && can_read_file(GLOBALCONF)) {
|
if (dir == globalconf_marker) {
|
||||||
result = strdup(GLOBALCONF);
|
#ifdef __MINGW32__
|
||||||
|
char *exepath = exe_to_cfg();
|
||||||
|
if (can_read_file(exepath)) {
|
||||||
|
result = exepath;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "%s: Couldn\'t find config file at \'%s\'\n", PROJECT, exepath);
|
||||||
|
error_printed = 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (can_read_file(GLOBALCONF)) {
|
||||||
|
result = strdup(GLOBALCONF);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if (can_read_dir(dir)) {
|
else if (can_read_dir(dir)) {
|
||||||
result = locate_config_in_dir(dir);
|
result = locate_config_in_dir(dir);
|
||||||
@ -341,8 +315,6 @@ static char *determine_config_file()
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int open_yy_config_file(const char *config_file_name)
|
static int open_yy_config_file(const char *config_file_name)
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
Tests that the config file is found by looking in $HOME/.config/boxes.
|
Tests that the config file is found by looking in $HOME/.config/boxes.
|
||||||
Also tests a shape length problem, where the least common multiple must be found (here: 3 x 5 = 15).
|
Also tests a shape length problem, where the least common multiple must be found (here: 3 x 5 = 15).
|
||||||
|
|
||||||
:SKIP-IF
|
|
||||||
Msys
|
|
||||||
:ENV
|
:ENV
|
||||||
export HOME="`pwd`/123_data"
|
export HOME="`pwd`/123_data"
|
||||||
:ARGS
|
:ARGS
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
Tests that the config file is found by looking in $XDG_CONFIG_HOME/boxes with higher precedence
|
Tests that the config file is found by looking in $XDG_CONFIG_HOME/boxes with higher precedence
|
||||||
than $HOME/.config/boxes. Also tests a particular shape length problem.
|
than $HOME/.config/boxes. Also tests a particular shape length problem.
|
||||||
|
|
||||||
:SKIP-IF
|
|
||||||
Msys
|
|
||||||
:ENV
|
:ENV
|
||||||
export HOME="`pwd`/124_data/home"
|
export HOME="`pwd`/124_data/home"
|
||||||
export XDG_CONFIG_HOME="`pwd`/124_data/xdg"
|
export XDG_CONFIG_HOME="`pwd`/124_data/xdg"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user