From fcd438e157597064ed49127acbb69f4d3b308c0b Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 26 Sep 2025 15:50:58 +0200 Subject: [PATCH] change one struct for client config --- src/kds_s2000w_client.c | 67 ++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index 5c2495c..b8e8132 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -24,10 +24,21 @@ CURL* curl = NULL; char* errbuf = NULL; -char* scan_url = NULL; -char* name = NULL; -bool ssl = false; -uint8_t wait_seconds = 1; +typedef struct { + char* scanner_url; + char* username; + bool ssl_verify; + uint8_t heartbeat; +} client_config_t; + +client_config_t client_config; + +char* _kds_s2000w_client_strdup(const char* str) +{ + size_t length = strlen(str) + 1; + char* new_str = malloc(sizeof(char) * length); + return strncpy(new_str, str, length); +} void _kds_s2000w_client_set_verbose() { @@ -87,7 +98,7 @@ void _kds_s2000w_client_print_error_result(CURLcode result) void _kds_s2000w_client_set_ssl_verification_off(CURL* curl) { - if (ssl) + if (client_config.ssl_verify) return; curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); @@ -98,16 +109,10 @@ void _kds_s2000w_client_set_config(const char* scanner_url, const char* username { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_set_config"); - size_t str_len = strlen(scanner_url) + 1; - scan_url = malloc(str_len); - memcpy(scan_url, scanner_url, str_len); - - str_len = strlen(username) + 1; - name = malloc(str_len); - memcpy(name, username, str_len); - - ssl = ssl_verify; - wait_seconds = heartbeat; + client_config.scanner_url = _kds_s2000w_client_strdup(scanner_url); + client_config.username = _kds_s2000w_client_strdup(username); + client_config.ssl_verify = ssl_verify; + client_config.heartbeat = heartbeat; } void kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat) @@ -125,10 +130,10 @@ void kds_s2000w_client_free() { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_free"); - free(scan_url); - scan_url = NULL; - free(name); - name = NULL; + free(client_config.scanner_url); + client_config.scanner_url = NULL; + free(client_config.username); + client_config.username = NULL; curl_easy_cleanup(curl); curl = NULL; curl_global_cleanup(); @@ -169,7 +174,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -181,7 +186,7 @@ uint8_t kds_s2000w_client_open_session(response* resp) char* body = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(body, 0, MAX_STR_BUFFER_LENGTH); - sprintf(body, "{\"OCPUserName\": \"%s\"}", name); + sprintf(body, "{\"OCPUserName\": \"%s\"}", client_config.username); curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body); _kds_s2000w_client_set_ssl_verification_off(curl); @@ -217,7 +222,7 @@ void kds_s2000w_client_close_session(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -258,7 +263,7 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0); curl_url_set(url_handler, CURLUPART_QUERY, CAPABILITIES_VERSION_2, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); @@ -298,13 +303,13 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp) kds_s2000w_debug_printf(ALL, "kds_s2000w_client_status_session"); kds_s2000w_heartbeat_join_thread(); - kds_s2000w_heartbeat_wait_seconds(&wait_seconds); + kds_s2000w_heartbeat_wait_seconds(&client_config.heartbeat); curl_easy_reset(curl); char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STATUS_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -352,7 +357,7 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STARTSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -397,7 +402,7 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, STOPSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -445,7 +450,7 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(url_path, 0, MAX_STR_BUFFER_LENGTH); sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -497,7 +502,7 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number) char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); memset(url_path, 0, MAX_STR_BUFFER_LENGTH); sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -543,7 +548,7 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); @@ -591,7 +596,7 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp) char* url = NULL; CURLU* url_handler = curl_url(); - curl_url_set(url_handler, CURLUPART_URL, scan_url, 0); + curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); curl_easy_setopt(curl, CURLOPT_URL, url); -- 2.47.3