diff options
author | Valentin Batz <senneth@irssi.org> | 2004-09-15 12:11:43 +0000 |
---|---|---|
committer | senneth <senneth@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2004-09-15 12:11:43 +0000 |
commit | 8ea717b67609a7ddaa6481e49fc638a4b40e84e8 (patch) | |
tree | 10e28c5a7f6ade72b86ad7fd8c680320ecafa36b /src/core/settings.c | |
parent | 55bcc420a713d5bfac3813f7bc002de0b0c13538 (diff) | |
download | irssi-8ea717b67609a7ddaa6481e49fc638a4b40e84e8.zip |
Fixed memleak in recode.c, fixed typo in special_vars.txt, fixed bug 105, fixed bug 106
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3295 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/core/settings.c b/src/core/settings.c index ba37ddb1..ce230f8a 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -25,6 +25,7 @@ #include "misc.h" #include "lib-config/iconfig.h" +#include "recode.h" #include "settings.h" #include "default-config.h" @@ -393,8 +394,8 @@ static void sig_init_finished(void) if (config_changed) { /* some backwards compatibility changes were made to config file, reload it */ - g_warning("Some time and size related settings were " - "automatically changed to new format, please /SAVE"); + g_warning("Some settings were automatically " + "updated, please /SAVE"); signal_emit("setup changed", 0); } } @@ -439,15 +440,41 @@ void settings_clean_invalid(void) static int backwards_compatibility(const char *module, CONFIG_NODE *node, CONFIG_NODE *parent) { - const char *new_key; + const char *new_key, *new_module; + CONFIG_NODE *new_node; char *new_value; int old_value; + new_value = NULL; new_key = NULL; new_module = NULL; + + /* fe-text term_type -> fe-common/core term_charset - for 0.8.10-> */ + if (strcmp(module, "fe-text") == 0) { + if (strcasecmp(node->key, "term_type") == 0 || + /* kludge for cvs-version where term_charset was in fe-text */ + strcasecmp(node->key, "term_charset") == 0) { + new_module = "fe-common/core"; + new_key = "term_charset"; + new_value = !is_valid_charset(node->value) ? NULL : + g_strdup(node->value); + new_node = iconfig_node_traverse("settings", FALSE); + new_node = new_node == NULL ? NULL : + config_node_section(new_node, new_module, -1); + + config_node_set_str(mainconfig, new_node, + new_key, new_value); + /* remove old */ + config_node_set_str(mainconfig, parent, + node->key, NULL); + g_free(new_value); + config_changed = TRUE; + return new_key != NULL; + } + } + new_value = NULL, new_key = NULL; /* FIXME: remove later - for 0.8.6 -> */ if (node->value == NULL || !is_numeric(node->value, '\0')) return FALSE; - new_value = NULL; new_key = NULL; old_value = atoi(node->value); if (strcmp(module, "fe-text") == 0) { |