From: Bastian Dehn Date: Sat, 4 Jan 2025 08:18:48 +0000 (+0100) Subject: change close mem stream then copy mem X-Git-Tag: v1.0.23^2~12 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=168a5e1a06eb49346f737895e306a4bf60332871;p=sane-kds-s2000w-net.git change close mem stream then copy mem --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index 8c2b06a..d3a8b46 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -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);