xdg: fix bug when specifying home directory

When specifying home-dir using --home would skip the part where
irssi_cache_dir & irssi_runtime_dir to be uninitialized. Fix that by
correctly assigning the variables in question, when irssi_dir == NULL.
This commit is contained in:
altffour 2021-01-11 16:18:55 +03:00
commit a554e624ff
No known key found for this signature in database
GPG key ID: B4ADFA86EDF5CCE9
2 changed files with 9 additions and 4 deletions

View file

@ -234,10 +234,15 @@ void core_preinit(const char *path)
len = strlen(irssi_dir);
if (irssi_dir[len - 1] == G_DIR_SEPARATOR)
irssi_dir[len - 1] = '\0';
/* all special XDG paths are equal to irssi_dir if XDG is not
* supported */
irssi_cache_dir = irssi_dir;
irssi_runtime_dir = irssi_dir;
}
if (irssi_config_file == NULL)
irssi_config_file = use_xdg ? g_build_filename(g_get_user_config_dir(), "irssi", IRSSI_HOME_CONFIG, NULL) :
g_strdup_printf("%s/" IRSSI_HOME_CONFIG, irssi_dir);
irssi_config_file = use_xdg ? g_build_filename(g_get_user_config_dir(), "irssi",
IRSSI_HOME_CONFIG, NULL) :
g_strdup_printf("%s/" IRSSI_HOME_CONFIG, irssi_dir);
else {
str = irssi_config_file;
irssi_config_file = fix_path(str);

View file

@ -783,8 +783,8 @@ static void init_configfile(void)
char *str;
init_ensure_dir(get_irssi_dir(), 0700); /* XDG_DATA_HOME or ~/.irssi*/
if (get_irssi_dir() != get_irssi_cache_dir() &&
get_irssi_dir() != get_irssi_runtime_dir()) {
if (!strcmp(get_irssi_dir(), get_irssi_cache_dir()) &&
!strcmp(get_irssi_dir(), get_irssi_runtime_dir())) {
init_ensure_dir(get_irssi_cache_dir(), 0700); /* XDG_CACHE_HOME */
init_ensure_dir(get_irssi_runtime_dir(), 0700); /* XDG_RUNTIME_HOME */
}