diff options
author | Michael Vetter <jubalh@iodoru.org> | 2019-10-04 14:06:25 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2019-10-04 14:06:25 +0200 |
commit | 5c77b97c35ceafc5c60c4e9a7a6e06d4bd253f3a (patch) | |
tree | 5b3566aeeec4ba46c5893cc7c32d784e0040315b /src/config | |
parent | 523681a642576f3889958849b503fffeb9bef280 (diff) | |
download | profani-tty-5c77b97c35ceafc5c60c4e9a7a6e06d4bd253f3a.tar.gz |
Introduce /reload command
This command reloads the configuration file. Fix https://github.com/profanity-im/profanity/issues/627
Diffstat (limited to 'src/config')
-rw-r--r-- | src/config/preferences.c | 52 | ||||
-rw-r--r-- | src/config/preferences.h | 1 |
2 files changed, 35 insertions, 18 deletions
diff --git a/src/config/preferences.c b/src/config/preferences.c index e8f19996..fc755bff 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -78,25 +78,9 @@ static const char* _get_key(preference_t pref); static gboolean _get_default_boolean(preference_t pref); static char* _get_default_string(preference_t pref); -void -prefs_load(char *config_file) +void _prefs_load(void) { - GError *err; - - if (config_file == NULL) { - prefs_loc = files_get_config_path(FILE_PROFRC); - } else { - prefs_loc = config_file; - } - - if (g_file_test(prefs_loc, G_FILE_TEST_EXISTS)) { - g_chmod(prefs_loc, S_IRUSR | S_IWUSR); - } - - prefs = g_key_file_new(); - g_key_file_load_from_file(prefs, prefs_loc, G_KEY_FILE_KEEP_COMMENTS, NULL); - - err = NULL; + GError *err = NULL; log_maxsize = g_key_file_get_integer(prefs, PREF_GROUP_LOGGING, "maxsize", &err); if (err) { log_maxsize = 0; @@ -181,6 +165,38 @@ prefs_load(char *config_file) } void +prefs_reload(void) +{ + g_key_file_free(prefs); + prefs = NULL; + + prefs = g_key_file_new(); + g_key_file_load_from_file(prefs, prefs_loc, G_KEY_FILE_KEEP_COMMENTS, NULL); + + _prefs_load(); +} + +void +prefs_load(char *config_file) +{ + + if (config_file == NULL) { + prefs_loc = files_get_config_path(FILE_PROFRC); + } else { + prefs_loc = config_file; + } + + if (g_file_test(prefs_loc, G_FILE_TEST_EXISTS)) { + g_chmod(prefs_loc, S_IRUSR | S_IWUSR); + } + + prefs = g_key_file_new(); + g_key_file_load_from_file(prefs, prefs_loc, G_KEY_FILE_KEEP_COMMENTS, NULL); + + _prefs_load(); +} + +void prefs_save(void) { _save_prefs(); diff --git a/src/config/preferences.h b/src/config/preferences.h index 08f13cb0..1a6250a4 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -169,6 +169,7 @@ typedef struct prof_winplacement_t { void prefs_load(char *config_file); void prefs_save(void); void prefs_close(void); +void prefs_reload(void); char* prefs_find_login(char *prefix); void prefs_reset_login_search(void); |