#include <confuse.h>
#include "kds_s2000w_config.h"
-void _kds_s2000w_config_copy_string_to_config_value(cfg_t* cfg, const char* key, char** config_value)
+#define SCANNER_URL "scanner_url"
+#define USERNAME "username"
+#define DEFAULT_LOG_LEVEL "default_log_level"
+#define HEARTBEAT_SECONDS "heartbeat_seconds"
+#define SSL_VERIFY "ssl_verify"
+
+program_config* _kds_s2000w_config_init()
{
- free(*config_value);
- *config_value = NULL;
+ program_config* config = malloc(sizeof(program_config));
+ config->scanner_url = malloc(sizeof(char));
+ config->username = malloc(sizeof(char));
+ *config->scanner_url = 0;
+ *config->username = 0;
+ config->log_level = 0;
+ config->heartbeat = 1;
+ config->ssl_verify = 0;
+
+ return config;
+}
+char* _kds_s2000w_config_copy_string_to_config_value(cfg_t* cfg, const char* key)
+{
char* value_str = cfg_getstr(cfg, key);
+ char* new_str = malloc(sizeof(char) * strlen(value_str) + 1);
- size_t size_str = strlen(value_str) + 1;
- *config_value = malloc(size_str);
- memcpy(*config_value, value_str, size_str);
+ return strcpy(new_str, value_str);
}
char* kds_s2000w_config_read(const char* filename)
program_config* kds_s2000w_config_load(char* config_string)
{
- program_config* config = malloc(sizeof(program_config));
- config->scanner_url = malloc(sizeof(char));
- config->username = malloc(sizeof(char));
- *config->scanner_url = 0;
- *config->username = 0;
- config->log_level = 0;
- config->heartbeat = 1;
- config->ssl_verify = 0;
+ program_config* config = _kds_s2000w_config_init();
if (config_string == NULL)
return config;
return config;
cfg_opt_t opts[] = {
- CFG_STR("scanner_url", "", CFGF_NONE),
- CFG_STR("username", "", CFGF_NONE),
- CFG_INT("default_log_level", 0, CFGF_NONE),
- CFG_INT("heartbeat_seconds", 1, CFGF_NONE),
- CFG_BOOL("ssl_verify", 0, CFGF_NONE),
+ CFG_STR(SCANNER_URL, "", CFGF_NONE),
+ CFG_STR(USERNAME, "", CFGF_NONE),
+ CFG_INT(DEFAULT_LOG_LEVEL, 0, CFGF_NONE),
+ CFG_INT(HEARTBEAT_SECONDS, 1, CFGF_NONE),
+ CFG_BOOL(SSL_VERIFY, 0, CFGF_NONE),
CFG_END()
};
cfg_t* cfg = cfg_init(opts, 0);
cfg_parse_buf(cfg, config_string);
- _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);
+ free(config->scanner_url);
+ config->scanner_url = NULL;
+ config->scanner_url = _kds_s2000w_config_copy_string_to_config_value(cfg, SCANNER_URL);
+
+ free(config->username);
+ config->username = NULL;
+ config->username = _kds_s2000w_config_copy_string_to_config_value(cfg, USERNAME);
- config->log_level = cfg_getint(cfg, "default_log_level");
- config->heartbeat = cfg_getint(cfg, "heartbeat_seconds");
+ config->log_level = cfg_getint(cfg, DEFAULT_LOG_LEVEL);
+ config->heartbeat = cfg_getint(cfg, HEARTBEAT_SECONDS);
if (config->heartbeat < 1)
config->heartbeat = 1;
- config->ssl_verify = cfg_getbool(cfg, "ssl_verify");
+ config->ssl_verify = cfg_getbool(cfg, SSL_VERIFY);
cfg_free(cfg);
cfg = NULL;