From: Bastian Dehn Date: Tue, 21 May 2024 18:21:14 +0000 (+0200) Subject: change get image with memory stream X-Git-Tag: v1.0.3^2~1^2~4 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=a85af90adee83fc362534704b2ac38cb9d32a4ef;p=sane-kds-s2000w-net.git change get image with memory stream --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index f93c6c4..c485d3c 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -380,6 +380,9 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res char url_path[30]; char header_str[80]; CURLcode result = 0; + FILE* stream = NULL; + char* buffer = NULL; + size_t* sizeloc = NULL; curl = curl_easy_init(); if(!curl) @@ -396,8 +399,10 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_callback); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) response); + buffer = malloc(sizeof(char)); + sizeloc = malloc(sizeof(size_t)); + stream = open_memstream(&buffer, sizeloc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); result = curl_easy_perform(curl); @@ -407,12 +412,20 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res if (result != CURLE_OK) fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + fflush(stream); + _kds_s2000w_client_stream_to_response(stream, response, sizeloc); + fclose(stream); + curl_url_cleanup(url_handler); url_handler = NULL; curl_free(url); url = NULL; curl_easy_cleanup(curl); curl = NULL; + free(buffer); + buffer = NULL; + free(sizeloc); + sizeloc = NULL; return result; }