]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change close mem stream then copy mem
authorBastian Dehn <hhaalo@arcor.de>
Sat, 4 Jan 2025 08:18:48 +0000 (09:18 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 4 Jan 2025 08:18:48 +0000 (09:18 +0100)
src/kds_s2000w_client.c

index 8c2b06aac5dbecb307e543dfc1c1271d60b5b527..d3a8b46841dc6ec72a8902abe2862d0d5681fb1d 100644 (file)
@@ -39,15 +39,13 @@ void _kds_s2000w_client_read_error_status(CURL* curl, response* resp)
        resp->error_size = size;
 }
 
-void _kds_s2000w_client_stream_to_response(FILE* stream, response* resp, size_t* size)
+void _kds_s2000w_client_stream_to_response(char* mem, response* resp, size_t* size)
 {
        debug_printf(ALL, "kds_s2000w_client_stream_to_response");
 
-       resp->data = realloc(resp->data, sizeof(char) * *size + 1);
-       fseek(stream, 0, SEEK_SET);
-       fread(resp->data, sizeof(char), *size, stream);
-       resp->data[*size] = '\0';
+       resp->data = realloc(resp->data, sizeof(char) * *size);
        resp->size = *size;
+       memcpy(resp->data, mem, *size);
 }
 
 void _kds_s2000w_client_print_error_result(CURLcode result)
@@ -134,9 +132,9 @@ int kds_s2000w_client_open_session(response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        char* body = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH);
@@ -152,9 +150,8 @@ int kds_s2000w_client_open_session(response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -164,8 +161,8 @@ int kds_s2000w_client_open_session(response* resp)
        body = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
 
@@ -236,9 +233,9 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
@@ -250,9 +247,8 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -260,8 +256,8 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* resp)
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(header_str);
@@ -292,9 +288,9 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
@@ -307,9 +303,8 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -317,8 +312,8 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* resp)
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(header_str);
@@ -349,9 +344,9 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
@@ -364,9 +359,8 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -374,8 +368,8 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* resp)
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(header_str);
@@ -409,9 +403,9 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res
        headers = curl_slist_append(headers, ACCEPT_IMAGE_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
@@ -423,9 +417,8 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -433,8 +426,8 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(url_path);
@@ -470,9 +463,9 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response*
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
@@ -484,9 +477,8 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response*
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -494,8 +486,8 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response*
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(header_str);
@@ -522,9 +514,9 @@ int kds_s2000w_client_get_capabilities(response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
@@ -536,9 +528,8 @@ int kds_s2000w_client_get_capabilities(response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -546,8 +537,8 @@ int kds_s2000w_client_get_capabilities(response* resp)
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
 
@@ -576,9 +567,9 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* resp)
        headers = curl_slist_append(headers, ACCEPT_JSON_HEADER);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 
-       char* buffer = malloc(sizeof(char));
+       char* mem = malloc(sizeof(char));
        size_t* sizeloc = malloc(sizeof(size_t));
-       FILE* stream = open_memstream(&buffer, sizeloc);
+       FILE* stream = open_memstream(&mem, sizeloc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream);
 
        curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
@@ -590,9 +581,8 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* resp)
        _kds_s2000w_client_read_error_status(curl, resp);
        _kds_s2000w_client_print_error_result(result);
 
-       fflush(stream);
-       _kds_s2000w_client_stream_to_response(stream, resp, sizeloc);
        fclose(stream);
+       _kds_s2000w_client_stream_to_response(mem, resp, sizeloc);
 
        curl_url_cleanup(url_handler);
        url_handler = NULL;
@@ -600,8 +590,8 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* resp)
        headers = NULL;
        curl_free(url);
        url = NULL;
-       free(buffer);
-       buffer = NULL;
+       free(mem);
+       mem = NULL;
        free(sizeloc);
        sizeloc = NULL;
        free(header_str);