forked from enlightenment/terminology
play nice: use XDG_CONFIG_HOME for configuration files.
SVN revision: 72317
This commit is contained in:
parent
ffa6d0ab67
commit
b220b1e468
|
@ -6,20 +6,43 @@
|
||||||
static Eet_Data_Descriptor *edd_base = NULL;
|
static Eet_Data_Descriptor *edd_base = NULL;
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
_homedir(void)
|
_config_home_get(void)
|
||||||
{
|
{
|
||||||
const char *home;
|
static char path[PATH_MAX] = "";
|
||||||
|
|
||||||
home = getenv("HOME");
|
#ifdef ELM_EFREET
|
||||||
if (!home) home = getenv("TMP");
|
const char *tmp = efreet_config_home_get();
|
||||||
if (!home) home = "/tmp";
|
size_t len = eina_stringshare_strlen(tmp);
|
||||||
return home;
|
|
||||||
|
if (len + 1 < PATH_MAX)
|
||||||
|
memcpy(path, tmp, len + 1);
|
||||||
|
eina_stringshare_del(tmp);
|
||||||
|
|
||||||
|
#else
|
||||||
|
const char *v = getenv("XDG_CONFIG_HOME");
|
||||||
|
if (v) eina_strlcpy(path, v, sizeof(path));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v = getenv("HOME");
|
||||||
|
if (v) snprintf(path, sizeof(path), "%s/.config", v);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!v) v = getenv("TMP");
|
||||||
|
if (!v) v = "/tmp";
|
||||||
|
eina_strlcpy(path, v, sizeof(path));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
config_init(void)
|
config_init(void)
|
||||||
{
|
{
|
||||||
Eet_Data_Descriptor_Class eddc;
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
elm_need_efreet();
|
||||||
|
|
||||||
eet_eina_stream_data_descriptor_class_set
|
eet_eina_stream_data_descriptor_class_set
|
||||||
(&eddc, sizeof(eddc), "Config", sizeof(Config));
|
(&eddc, sizeof(eddc), "Config", sizeof(Config));
|
||||||
|
@ -64,7 +87,7 @@ config_save(const Config *config, const char *key)
|
||||||
{
|
{
|
||||||
Eet_File *ef;
|
Eet_File *ef;
|
||||||
char buf[PATH_MAX], buf2[PATH_MAX];
|
char buf[PATH_MAX], buf2[PATH_MAX];
|
||||||
const char *home;
|
const char *cfgdir;
|
||||||
int ok;
|
int ok;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN(config);
|
EINA_SAFETY_ON_NULL_RETURN(config);
|
||||||
|
@ -72,11 +95,11 @@ config_save(const Config *config, const char *key)
|
||||||
if (config->temporary) return;
|
if (config->temporary) return;
|
||||||
if (!key) key = config->config_key;
|
if (!key) key = config->config_key;
|
||||||
|
|
||||||
home = _homedir();
|
cfgdir = _config_home_get();
|
||||||
snprintf(buf, sizeof(buf), "%s/.terminology/config/standard", home);
|
snprintf(buf, sizeof(buf), "%s/terminology/config/standard", cfgdir);
|
||||||
ecore_file_mkpath(buf);
|
ecore_file_mkpath(buf);
|
||||||
snprintf(buf, sizeof(buf), "%s/.terminology/config/standard/base.cfg.tmp", home);
|
snprintf(buf, sizeof(buf), "%s/terminology/config/standard/base.cfg.tmp", cfgdir);
|
||||||
snprintf(buf2, sizeof(buf2), "%s/.terminology/config/standard/base.cfg", home);
|
snprintf(buf2, sizeof(buf2), "%s/terminology/config/standard/base.cfg", cfgdir);
|
||||||
ef = eet_open(buf, EET_FILE_MODE_WRITE);
|
ef = eet_open(buf, EET_FILE_MODE_WRITE);
|
||||||
if (ef)
|
if (ef)
|
||||||
{
|
{
|
||||||
|
@ -91,13 +114,13 @@ config_load(const char *key)
|
||||||
{
|
{
|
||||||
Eet_File *ef;
|
Eet_File *ef;
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
const char *home;
|
const char *cfgdir;
|
||||||
Config *config;
|
Config *config = NULL;
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(key, NULL);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(key, NULL);
|
||||||
|
|
||||||
home = _homedir();
|
cfgdir = _config_home_get();
|
||||||
snprintf(buf, sizeof(buf), "%s/.terminology/config/standard/base.cfg", home);
|
snprintf(buf, sizeof(buf), "%s/terminology/config/standard/base.cfg", cfgdir);
|
||||||
ef = eet_open(buf, EET_FILE_MODE_READ);
|
ef = eet_open(buf, EET_FILE_MODE_READ);
|
||||||
if (ef)
|
if (ef)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue