Add default path to OSX and check in APPDATA for Win32.
This commit is contained in:
parent
4cdb6151e5
commit
ec2d10e069
|
@ -47,7 +47,7 @@ Should this not be defined, \fBssnes\fR will look in platform specific paths to
|
||||||
/etc/ssnes.cfg (when installed), or ssnes.cfg in the source tarball serves as a skeleton configuration file.
|
/etc/ssnes.cfg (when installed), or ssnes.cfg in the source tarball serves as a skeleton configuration file.
|
||||||
|
|
||||||
.IP
|
.IP
|
||||||
Unix-like systems will look in $XDG_CONFIG_HOME/ssnes/ssnes.cfg first. Then it will try $HOME/.ssnesrc. Last, it will try /etc/ssnes.cfg. If no configuration is found, default settings will be assumed. A configuration file does not need to define every possible option, only those that should be overridden.
|
Unix-like systems will look in $XDG_CONFIG_HOME/ssnes/ssnes.cfg first. Then it will try $HOME/.ssnes.cfg. Last, it will try /etc/ssnes.cfg. If no configuration is found, default settings will be assumed. A configuration file does not need to define every possible option, only those that should be overridden.
|
||||||
|
|
||||||
.IP
|
.IP
|
||||||
Windows will look in ssnes.cfg in same folder where ssnes.exe resides.
|
Windows will look in ssnes.cfg in same folder where ssnes.exe resides.
|
||||||
|
|
86
settings.c
86
settings.c
|
@ -165,6 +165,62 @@ void parse_config(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static config_file_t *open_default_config_file(void)
|
||||||
|
{
|
||||||
|
config_file_t *conf = NULL;
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Just do something for now.
|
||||||
|
conf = config_file_new("ssnes.cfg");
|
||||||
|
if (!conf)
|
||||||
|
{
|
||||||
|
const char *appdata = getenv("APPDATA");
|
||||||
|
if (appdata)
|
||||||
|
{
|
||||||
|
char conf_path[strlen(appdata) + strlen("/ssnes.cfg ")];
|
||||||
|
strcpy(conf_path, appdata);
|
||||||
|
strcat(conf_path, "/ssnes.cfg");
|
||||||
|
conf = config_file_new(conf_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
const char *home = getenv("HOME");
|
||||||
|
if (home)
|
||||||
|
{
|
||||||
|
char conf_path[strlen(home) + strlen("/.ssnes.cfg ")];
|
||||||
|
strcpy(conf_path, home);
|
||||||
|
strcat(conf_path, "/.ssnes.cfg");
|
||||||
|
conf = config_file_new(conf_path);
|
||||||
|
}
|
||||||
|
if (!conf)
|
||||||
|
conf = config_file_new("/etc/ssnes.cfg");
|
||||||
|
#else
|
||||||
|
const char *xdg = getenv("XDG_CONFIG_HOME");
|
||||||
|
if (!xdg)
|
||||||
|
SSNES_WARN("XDG_CONFIG_HOME is not defined. Will look for config in $HOME/.ssnesrc ...\n");
|
||||||
|
|
||||||
|
const char *home = getenv("HOME");
|
||||||
|
if (xdg)
|
||||||
|
{
|
||||||
|
char conf_path[strlen(xdg) + strlen("/ssnes/ssnes.cfg ")];
|
||||||
|
strcpy(conf_path, xdg);
|
||||||
|
strcat(conf_path, "/ssnes/ssnes.cfg");
|
||||||
|
conf = config_file_new(conf_path);
|
||||||
|
}
|
||||||
|
else if (home)
|
||||||
|
{
|
||||||
|
char conf_path[strlen(home) + strlen("/.ssnes.cfg ")];
|
||||||
|
strcpy(conf_path, home);
|
||||||
|
strcat(conf_path, "/.ssnes.cfg");
|
||||||
|
conf = config_file_new(conf_path);
|
||||||
|
}
|
||||||
|
// Try this as a last chance...
|
||||||
|
if (!conf)
|
||||||
|
conf = config_file_new("/etc/ssnes.cfg");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return conf;
|
||||||
|
}
|
||||||
|
|
||||||
// Macros to ease config getting.
|
// Macros to ease config getting.
|
||||||
#define CONFIG_GET_BOOL(var, key) if (config_get_bool(conf, key, &tmp_bool)) \
|
#define CONFIG_GET_BOOL(var, key) if (config_get_bool(conf, key, &tmp_bool)) \
|
||||||
g_settings.var = tmp_bool
|
g_settings.var = tmp_bool
|
||||||
|
@ -198,35 +254,7 @@ static void parse_config_file(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
conf = open_default_config_file();
|
||||||
#ifdef _WIN32
|
|
||||||
// Just do something for now.
|
|
||||||
conf = config_file_new("ssnes.cfg");
|
|
||||||
#else
|
|
||||||
const char *xdg = getenv("XDG_CONFIG_HOME");
|
|
||||||
if (!xdg)
|
|
||||||
SSNES_WARN("XDG_CONFIG_HOME is not defined. Will look for config in $HOME/.ssnesrc ...\n");
|
|
||||||
|
|
||||||
const char *home = getenv("HOME");
|
|
||||||
if (xdg)
|
|
||||||
{
|
|
||||||
char conf_path[strlen(xdg) + strlen("/ssnes/ssnes.cfg ")];
|
|
||||||
strcpy(conf_path, xdg);
|
|
||||||
strcat(conf_path, "/ssnes/ssnes.cfg");
|
|
||||||
conf = config_file_new(conf_path);
|
|
||||||
}
|
|
||||||
else if (home)
|
|
||||||
{
|
|
||||||
char conf_path[strlen(home) + strlen("/.ssnesrc ")];
|
|
||||||
strcpy(conf_path, home);
|
|
||||||
strcat(conf_path, "/.ssnesrc");
|
|
||||||
conf = config_file_new(conf_path);
|
|
||||||
}
|
|
||||||
// Try this as a last chance...
|
|
||||||
if (!conf)
|
|
||||||
conf = config_file_new("/etc/ssnes.cfg");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conf == NULL)
|
if (conf == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
2
ssnes.c
2
ssnes.c
|
@ -278,6 +278,8 @@ static void fill_pathname(char *out_path, char *in_path, const char *replace)
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define SSNES_DEFAULT_CONF_PATH_STR "\n\tDefaults to ssnes.cfg in same directory as ssnes.exe"
|
#define SSNES_DEFAULT_CONF_PATH_STR "\n\tDefaults to ssnes.cfg in same directory as ssnes.exe"
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
#define SSNES_DEFAULT_CONF_PATH_STR " Defaults to $HOME/.ssnes.cfg"
|
||||||
#else
|
#else
|
||||||
#define SSNES_DEFAULT_CONF_PATH_STR " Defaults to $XDG_CONFIG_HOME/ssnes/ssnes.cfg"
|
#define SSNES_DEFAULT_CONF_PATH_STR " Defaults to $XDG_CONFIG_HOME/ssnes/ssnes.cfg"
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue