Follow the XDG specification.

We're still 100% backward-compatible.
This commit is contained in:
LemonBoy 2016-07-09 17:09:39 +02:00
commit 47c2d438eb
2 changed files with 12 additions and 8 deletions

View file

@ -1,8 +1,6 @@
#ifndef __COMMON_H #ifndef __COMMON_H
#define __COMMON_H #define __COMMON_H
#define IRSSI_DIR_FULL "%s/.irssi" /* %s == g_get_home_dir() */
#define IRSSI_GLOBAL_CONFIG "irssi.conf" /* config file name in /etc/ */ #define IRSSI_GLOBAL_CONFIG "irssi.conf" /* config file name in /etc/ */
#define IRSSI_HOME_CONFIG "config" /* config file name in ~/.irssi/ */ #define IRSSI_HOME_CONFIG "config" /* config file name in ~/.irssi/ */

View file

@ -182,16 +182,21 @@ void core_register_options(void)
void core_preinit(const char *path) void core_preinit(const char *path)
{ {
const char *home;
char *str; char *str;
int len; int len;
if (irssi_dir == NULL) { if (irssi_dir == NULL) {
home = g_get_home_dir(); /* Try the XDG-compliant path first, if the config directory
if (home == NULL) * exists use it instead of the one at ~/.irssi */
home = "."; irssi_dir = g_build_filename(g_get_user_config_dir(),
"irssi", NULL);
irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home); if (g_file_test(irssi_dir, G_FILE_TEST_IS_DIR) == FALSE) {
g_free(irssi_dir);
const char *home = g_get_home_dir();
irssi_dir = g_build_filename(home? home: ".", ".irssi", NULL);
}
} else { } else {
str = irssi_dir; str = irssi_dir;
irssi_dir = fix_path(str); irssi_dir = fix_path(str);
@ -200,8 +205,9 @@ void core_preinit(const char *path)
if (irssi_dir[len-1] == G_DIR_SEPARATOR) if (irssi_dir[len-1] == G_DIR_SEPARATOR)
irssi_dir[len-1] = '\0'; irssi_dir[len-1] = '\0';
} }
if (irssi_config_file == NULL) if (irssi_config_file == NULL)
irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir); irssi_config_file = g_build_filename(irssi_dir, IRSSI_HOME_CONFIG, NULL);
else { else {
str = irssi_config_file; str = irssi_config_file;
irssi_config_file = fix_path(str); irssi_config_file = fix_path(str);