]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change one struct for client config
authorBastian Dehn <hhaalo@arcor.de>
Fri, 26 Sep 2025 13:50:58 +0000 (15:50 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 26 Sep 2025 13:53:03 +0000 (15:53 +0200)
src/kds_s2000w_client.c

index 5c2495cbcbcda64ae874c39977d41c1ed067b8a4..b8e8132a5a5dc2011ed3ebdc63959dfef45a1363 100644 (file)
 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);