#include <confuse.h>
#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)
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));
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;
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
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, "");
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, "");
{
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");
{
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");
{
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");
{
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);
{
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);
{
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);