xdg: add get_irssi_config_dir()

- add get_irssi_config_dir()
- supply autorun_startup(void) with user config directory, rather than
data dir
This commit is contained in:
altffour 2021-01-11 23:06:47 +03:00
commit 9c634657ce
No known key found for this signature in database
GPG key ID: B4ADFA86EDF5CCE9
4 changed files with 21 additions and 3 deletions

View file

@ -61,8 +61,10 @@ const char *get_irssi_runtime_dir(void);
const char *get_irssi_cache_dir(void); const char *get_irssi_cache_dir(void);
/* return full path for irssi data directory */ /* return full path for irssi data directory */
const char *get_irssi_dir(void); const char *get_irssi_dir(void);
/* return full path for irssi config */ /* return full path for irssi config file */
const char *get_irssi_config(void); const char *get_irssi_config(void);
/* return full path for irssi config directory */
const char *get_irssi_config_dir(void);
/* max. size for %d */ /* max. size for %d */
#define MAX_INT_STRLEN ((sizeof(int) * CHAR_BIT + 2) / 3 + 1) #define MAX_INT_STRLEN ((sizeof(int) * CHAR_BIT + 2) / 3 + 1)

View file

@ -72,6 +72,7 @@ time_t client_start_time;
static char *irssi_dir, /* XDG_DATA_HOME or ~/.irssi */ static char *irssi_dir, /* XDG_DATA_HOME or ~/.irssi */
*irssi_config_file, /* XDG_CONFIG_HOME/irssi/config or ~/.irssi/config */ *irssi_config_file, /* XDG_CONFIG_HOME/irssi/config or ~/.irssi/config */
*irssi_config_dir, /* XDG_CONFIG_HOME/irssi/ or ~/.irssi/ */
*irssi_cache_dir, /* XDG_CACHE_HOME/irssi or ~/.irssi */ *irssi_cache_dir, /* XDG_CACHE_HOME/irssi or ~/.irssi */
*irssi_runtime_dir; /* XDG_RUNTIME_HOME/irssi or ~/.irssi */ *irssi_runtime_dir; /* XDG_RUNTIME_HOME/irssi or ~/.irssi */
static GSList *dialog_type_queue, *dialog_text_queue; static GSList *dialog_type_queue, *dialog_text_queue;
@ -97,6 +98,11 @@ const char *get_irssi_config(void)
return irssi_config_file; return irssi_config_file;
} }
const char *get_irssi_config_dir(void)
{
return irssi_config_dir;
}
static void sig_hup(int signo) static void sig_hup(int signo)
{ {
sighup_received = TRUE; sighup_received = TRUE;
@ -208,11 +214,12 @@ void core_preinit(const char *path)
int use_xdg = 0; int use_xdg = 0;
if (irssi_dir == NULL) { if (irssi_dir == NULL) {
/* check if %XDG_CONFIG_HOME/irssi exists and use to it */ /* check if %XDG_CONFIG_HOME/irssi exists and use it */
char *dirp = g_build_filename(g_get_user_config_dir(), "irssi", NULL); char *dirp = g_build_filename(g_get_user_config_dir(), "irssi", NULL);
if (!g_file_test(dirp, G_FILE_TEST_EXISTS)) { if (!g_file_test(dirp, G_FILE_TEST_EXISTS)) {
use_xdg = 1; use_xdg = 1;
irssi_dir = g_build_filename(g_get_user_data_dir(), "irssi", NULL); irssi_dir = g_build_filename(g_get_user_data_dir(), "irssi", NULL);
irssi_config_dir = g_build_filename(g_get_user_config_dir(), "irssi", NULL);
irssi_cache_dir = g_build_filename(g_get_user_cache_dir(), "irssi", NULL); irssi_cache_dir = g_build_filename(g_get_user_cache_dir(), "irssi", NULL);
irssi_runtime_dir = irssi_runtime_dir =
g_build_filename(g_get_user_runtime_dir(), "irssi", NULL); g_build_filename(g_get_user_runtime_dir(), "irssi", NULL);
@ -221,6 +228,7 @@ void core_preinit(const char *path)
if (home == NULL) if (home == NULL)
home = "."; home = ".";
irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home); irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home);
irssi_config_dir = irssi_dir;
/* all special XDG paths are equal to irssi_dir if XDG is not /* all special XDG paths are equal to irssi_dir if XDG is not
* supported */ * supported */
irssi_cache_dir = irssi_dir; irssi_cache_dir = irssi_dir;
@ -234,6 +242,7 @@ void core_preinit(const char *path)
len = strlen(irssi_dir); len = strlen(irssi_dir);
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';
irssi_config_dir = irssi_dir;
/* all special XDG paths are equal to irssi_dir if XDG is not /* all special XDG paths are equal to irssi_dir if XDG is not
* supported */ * supported */
irssi_cache_dir = irssi_dir; irssi_cache_dir = irssi_dir;

View file

@ -409,7 +409,7 @@ static void autorun_startup(void)
gsize tpos; gsize tpos;
/* open $CONFIG/startup and run all commands in it */ /* open $CONFIG/startup and run all commands in it */
path = g_strdup_printf("%s/startup", get_irssi_dir()); path = g_strdup_printf("%s/startup", get_irssi_config_dir());
handle = g_io_channel_new_file(path, "r", NULL); handle = g_io_channel_new_file(path, "r", NULL);
g_free(path); g_free(path);
if (handle == NULL) { if (handle == NULL) {

View file

@ -627,6 +627,13 @@ CODE:
OUTPUT: OUTPUT:
RETVAL RETVAL
char *
get_irssi_config_dir()
CODE:
RETVAL = (char *) get_irssi_config_dir();
OUTPUT:
RETVAL
char * char *
get_irssi_binary() get_irssi_binary()
CODE: CODE: