X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Ffe-common%2Fcore%2Ffe-settings.c;h=dccfcba9105d4f95a6dbb1e002271ace75bf0155;hb=63ca577177f9f5db8e553372a9793b0c85f10715;hp=7fb512e8446172150bad00929e60478e0b626497;hpb=60c165f23f8d5553bd8b4fd43366fbf5f24c2832;p=silc.git diff --git a/apps/irssi/src/fe-common/core/fe-settings.c b/apps/irssi/src/fe-common/core/fe-settings.c index 7fb512e8..dccfcba9 100644 --- a/apps/irssi/src/fe-common/core/fe-settings.c +++ b/apps/irssi/src/fe-common/core/fe-settings.c @@ -45,6 +45,9 @@ static void set_print(SETTINGS_REC *rec) value = value_int; break; case SETTING_TYPE_STRING: + case SETTING_TYPE_TIME: + case SETTING_TYPE_LEVEL: + case SETTING_TYPE_SIZE: value = settings_get_str(rec->key); break; default: @@ -83,12 +86,15 @@ static void cmd_set(char *data) clear = g_hash_table_lookup(optlist, "clear") != NULL; set_default = g_hash_table_lookup(optlist, "default") != NULL; + if (*key == '\0') + clear = set_default = FALSE; + last_section = ""; found = 0; sets = settings_get_sorted(); for (tmp = sets; tmp != NULL; tmp = tmp->next) { SETTINGS_REC *rec = tmp->data; - if (((clear || *value != '\0') && g_strcasecmp(rec->key, key) != 0) || + if (((clear || set_default || *value != '\0') && g_strcasecmp(rec->key, key) != 0) || (*value == '\0' && *key != '\0' && stristr(rec->key, key) == NULL)) continue; @@ -106,20 +112,38 @@ static void cmd_set(char *data) if (clear) settings_set_bool(key, FALSE); else if (set_default) - settings_set_bool(key, GPOINTER_TO_INT(rec->def)); + settings_set_bool(key, rec->default_value.v_bool); else set_boolean(key, value); break; case SETTING_TYPE_INT: settings_set_int(key, clear ? 0 : - set_default ? GPOINTER_TO_INT(rec->def) : + set_default ? rec->default_value.v_int : atoi(value)); break; case SETTING_TYPE_STRING: settings_set_str(key, clear ? "" : - set_default ? rec->def : + set_default ? rec->default_value.v_string : value); break; + case SETTING_TYPE_TIME: + if (!settings_set_time(key, clear ? "0" : + set_default ? rec->default_value.v_string : value)) + printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, + TXT_INVALID_TIME); + break; + case SETTING_TYPE_LEVEL: + if (!settings_set_level(key, clear ? "" : + set_default ? rec->default_value.v_string : value)) + printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, + TXT_INVALID_LEVEL); + break; + case SETTING_TYPE_SIZE: + if (!settings_set_size(key, clear ? "0" : + set_default ? rec->default_value.v_string : value)) + printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, + TXT_INVALID_SIZE); + break; } signal_emit("setup changed", 0); }