]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add config value copy method
authorBastian Dehn <hhaalo@arcor.de>
Thu, 2 Jan 2025 17:32:46 +0000 (18:32 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 2 Jan 2025 17:33:26 +0000 (18:33 +0100)
src/kds_s2000w_config.c

index 6345ce16404f1d8c0af4069b8b75728fe5f31b92..567582f72c62653408b8b6ea989ed0c1bfc06aea 100644 (file)
@@ -3,6 +3,14 @@
 #include <confuse.h>
 #include "kds_s2000w_config.h"
 
+void _copy_config_string_to_config_value(cfg_t* cfg, const char* key, char** config_value)
+{
+       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);
+}
+
 void free_config(program_config* config)
 {
        free(config->scanner_url);
@@ -46,8 +54,8 @@ program_config* load_config(const char* config_string)
 {
        program_config* config = malloc(sizeof(program_config));
        config->scanner_url = malloc(sizeof(char));
-       *config->scanner_url = '\0';
        config->username = malloc(sizeof(char));
+       *config->scanner_url = '\0';
        *config->username = '\0';
        config->heartbeat = 1;
        config->ssl_verify = 0;
@@ -55,10 +63,6 @@ program_config* load_config(const char* config_string)
        if (config_string == NULL)
                return config;
 
-       cfg_t* cfg = NULL;
-       char* value_str = NULL;
-       size_t str_length = 0;
-
        if (strlen(config_string) <= 0)
                return config;
 
@@ -70,19 +74,10 @@ program_config* load_config(const char* config_string)
                CFG_END()
        };
 
-       cfg = cfg_init(opts, 0);
-
+       cfg_t* cfg = cfg_init(opts, 0);
        cfg_parse_buf(cfg, config_string);
-
-       value_str = cfg_getstr(cfg, "scanner_url");
-       str_length = strlen(value_str) + 1;
-       config->scanner_url = realloc(config->scanner_url, sizeof(char) * str_length);
-       memcpy(config->scanner_url, value_str, str_length);
-
-       value_str = cfg_getstr(cfg, "username");
-       str_length = strlen(value_str) + 1;
-       config->username = realloc(config->username, sizeof(char) * str_length);
-       memcpy(config->username, value_str, str_length);
+       _copy_config_string_to_config_value(cfg, "scanner_url", &config->scanner_url);
+       _copy_config_string_to_config_value(cfg, "username", &config->username);
 
        config->heartbeat = cfg_getint(cfg, "heartbeat_seconds");
        if (config->heartbeat < 1)