From 57fef4282336cd517b24d392e8b0a3829441e335 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 3 Feb 2025 20:51:57 +0100 Subject: [PATCH] change config with strdup --- src/kds_s2000w_client.c | 2 +- src/kds_s2000w_config.c | 48 ++++++++++++++++------------ src/kds_s2000w_config.h | 3 +- tests/kds_s2000w_read_config_tests.c | 16 +++++----- 4 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index bf441ba..ae96bcb 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -76,7 +76,7 @@ void kds_s2000w_client_init() kds_s2000w_debug_printf(ALL, "kds_s2000w_client_init"); char* config_stream = kds_s2000w_config_read(CONFIG_FILE); - config = kds_s2000w_load_config(config_stream); + config = kds_s2000w_config_load(config_stream); curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); errbuf = malloc(CURL_ERROR_SIZE); diff --git a/src/kds_s2000w_config.c b/src/kds_s2000w_config.c index 3c25c46..e6ddcb9 100644 --- a/src/kds_s2000w_config.c +++ b/src/kds_s2000w_config.c @@ -3,12 +3,20 @@ #include #include "kds_s2000w_config.h" -void _kds_s2000w_copy_config_string_to_config_value(cfg_t* cfg, const char* key, char** config_value) +void _kds_s2000w_config_copy_string_to_config_value(cfg_t* cfg, const char* key, char** config_value) { + free(*config_value); + *config_value = NULL; + char* value_str = cfg_getstr(cfg, key); - size_t str_len = strlen(value_str) + 1; - *config_value = realloc(*config_value, sizeof(char) * str_len); - memcpy(*config_value, value_str, str_len); + *config_value = strdup(value_str); +} + +void _kds_s2000w_config_set_log_level(int log_level) +{ + char log_level_str[2]; + snprintf(log_level_str, 2, "%i", log_level); + setenv("KDS_S2000W_NET_DEBUG", log_level_str, 0); } char* kds_s2000w_config_read(const char* filename) @@ -40,17 +48,7 @@ char* kds_s2000w_config_read(const char* filename) return config_string; } -void kds_s2000w_config_free(program_config* config) -{ - free(config->scanner_url); - config->scanner_url = NULL; - free(config->username); - config->username = NULL; - free(config); - config = NULL; -} - -program_config* kds_s2000w_load_config(char* config_string) +program_config* kds_s2000w_config_load(char* config_string) { program_config* config = malloc(sizeof(program_config)); config->scanner_url = malloc(sizeof(char)); @@ -77,13 +75,13 @@ program_config* kds_s2000w_load_config(char* config_string) cfg_t* cfg = cfg_init(opts, 0); cfg_parse_buf(cfg, config_string); - _kds_s2000w_copy_config_string_to_config_value(cfg, "scanner_url", &config->scanner_url); - _kds_s2000w_copy_config_string_to_config_value(cfg, "username", &config->username); + + _kds_s2000w_config_copy_string_to_config_value(cfg, "scanner_url", &config->scanner_url); + _kds_s2000w_config_copy_string_to_config_value(cfg, "username", &config->username); config->log_level = cfg_getint(cfg, "default_log_level"); - char log_level_str[2]; - snprintf(log_level_str, 2, "%i", config->log_level); - setenv("KDS_S2000W_NET_DEBUG", log_level_str, 0); + _kds_s2000w_config_set_log_level(config->log_level); + config->heartbeat = cfg_getint(cfg, "heartbeat_seconds"); if (config->heartbeat < 1) config->heartbeat = 1; @@ -94,4 +92,14 @@ program_config* kds_s2000w_load_config(char* config_string) cfg = NULL; return config; +} + +void kds_s2000w_config_free(program_config* config) +{ + free(config->scanner_url); + config->scanner_url = NULL; + free(config->username); + config->username = NULL; + free(config); + config = NULL; } \ No newline at end of file diff --git a/src/kds_s2000w_config.h b/src/kds_s2000w_config.h index 121101f..beec3e1 100644 --- a/src/kds_s2000w_config.h +++ b/src/kds_s2000w_config.h @@ -11,6 +11,7 @@ typedef struct { char* kds_s2000w_config_read(const char* filename); -program_config* kds_s2000w_load_config(char* config_stream); +program_config* kds_s2000w_config_load(char* config_stream); void kds_s2000w_config_free(program_config* config); + #endif \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests.c b/tests/kds_s2000w_read_config_tests.c index c98b24e..911082e 100644 --- a/tests/kds_s2000w_read_config_tests.c +++ b/tests/kds_s2000w_read_config_tests.c @@ -5,7 +5,7 @@ void kds_s2000w_config_null_test() { - program_config* config = kds_s2000w_load_config(NULL); + program_config* config = kds_s2000w_config_load(NULL); assert_non_null(config); assert_string_equal(config->scanner_url, ""); @@ -19,7 +19,7 @@ void kds_s2000w_config_null_test() void kds_s2000w_config_read_empty_config_test() { - program_config* config = kds_s2000w_load_config(""); + program_config* config = kds_s2000w_config_load(""); assert_non_null(config); assert_string_equal(config->scanner_url, ""); @@ -35,7 +35,7 @@ void kds_s2000w_config_read_parameter_test() { char* input_stream = " scanner_url = http://scanner.example.com \n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_string_equal(config->scanner_url, "http://scanner.example.com"); @@ -47,7 +47,7 @@ void kds_s2000w_config_read_parameters_without_trim_test() { char* input_stream = "scanner_url=http://scanner.example.com\n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_string_equal(config->scanner_url, "http://scanner.example.com"); @@ -59,7 +59,7 @@ void kds_s2000w_config_multiple_parameters_test() { char* input_stream = "scanner_url=http://scanner.example.com\nusername=Mustermann\n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_string_equal(config->scanner_url, "http://scanner.example.com"); assert_string_equal(config->username, "Mustermann"); @@ -72,7 +72,7 @@ void kds_s2000w_config_heartbeat_five_seconds_test() { char* input_stream = "heartbeat_seconds = 5\n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_int_equal(config->heartbeat, 5); @@ -84,7 +84,7 @@ void kds_s2000w_config_default_heartbeat_zero_set_default_test() { char* input_stream = "heartbeat_seconds = 0\n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_int_equal(config->heartbeat, 1); @@ -96,7 +96,7 @@ void kds_s2000w_config_ssl_verify_on_test() { char* input_stream = "ssl_verify = true\n"; - program_config* config = kds_s2000w_load_config(input_stream); + program_config* config = kds_s2000w_config_load(input_stream); assert_int_equal(config->ssl_verify, 1); -- 2.39.5