From 983ee1db888e8f478990ac900ce01cfefe30c890 Mon Sep 17 00:00:00 2001 From: Emanuele Giaquinta Date: Sun, 29 Apr 2007 11:20:36 +0000 Subject: [PATCH] Factor out code from set_print into a function to get a printable representation of a setting. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4470 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/core/settings.c | 21 +++++++++++++++++++++ src/core/settings.h | 1 + src/fe-common/core/fe-settings.c | 22 +++------------------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/core/settings.c b/src/core/settings.c index 2f32ac92..3adc14a4 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -148,6 +148,27 @@ int settings_get_size(const char *key) return str == NULL ? 0 : bytes; } +char *settings_get_print(SETTINGS_REC *rec) +{ + char *value; + + switch(rec->type) { + case SETTING_TYPE_BOOLEAN: + value = g_strdup(settings_get_bool(rec->key) ? "ON" : "OFF"); + break; + case SETTING_TYPE_INT: + value = g_strdup_printf("%d", settings_get_int(rec->key)); + break; + case SETTING_TYPE_STRING: + case SETTING_TYPE_TIME: + case SETTING_TYPE_LEVEL: + case SETTING_TYPE_SIZE: + value = g_strdup(settings_get_str(rec->key)); + break; + } + return value; +} + static void settings_add(const char *module, const char *section, const char *key, SettingType type, const SettingValue *default_value) diff --git a/src/core/settings.h b/src/core/settings.h index 8a712dce..d3ff3083 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -55,6 +55,7 @@ int settings_get_bool(const char *key); int settings_get_time(const char *key); /* as milliseconds */ int settings_get_level(const char *key); int settings_get_size(const char *key); /* as bytes */ +char *settings_get_print(SETTINGS_REC *rec); /* Functions to add/remove settings */ void settings_add_str_module(const char *module, const char *section, diff --git a/src/fe-common/core/fe-settings.c b/src/fe-common/core/fe-settings.c index dccfcba9..24cf8b9e 100644 --- a/src/fe-common/core/fe-settings.c +++ b/src/fe-common/core/fe-settings.c @@ -33,28 +33,12 @@ static void set_print(SETTINGS_REC *rec) { - const char *value; - char value_int[MAX_INT_STRLEN]; + char *value; - switch (rec->type) { - case SETTING_TYPE_BOOLEAN: - value = settings_get_bool(rec->key) ? "ON" : "OFF"; - break; - case SETTING_TYPE_INT: - ltoa(value_int, settings_get_int(rec->key)); - 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: - value = ""; - } + value = settings_get_print(rec); printformat(NULL, NULL, MSGLEVEL_CLIENTCRAP, TXT_SET_ITEM, rec->key, value); + g_free(value); } static void set_boolean(const char *key, const char *value)