]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change get capabilities with memory stream
authorBastian Dehn <hhaalo@arcor.de>
Tue, 21 May 2024 18:23:12 +0000 (20:23 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 21 May 2024 18:23:12 +0000 (20:23 +0200)
src/kds_s2000w_client.c

index 2ccd7d6abf426d5ce33a58cc984fe8703a488e26..9ed4a62dcc4499dc8064e02a5b774d118d709a5d 100644 (file)
@@ -497,6 +497,9 @@ int kds_s2000w_client_get_capabilities(response* response)
        CURLU* url_handler =NULL;
        char* url = NULL;
        CURLcode result = 0;
+       FILE* stream = NULL;
+       char* buffer = NULL;
+       size_t* sizeloc = NULL;
 
        curl = curl_easy_init();
        if(!curl)
@@ -509,8 +512,10 @@ int kds_s2000w_client_get_capabilities(response* response)
 
        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);
@@ -520,12 +525,20 @@ int kds_s2000w_client_get_capabilities(response* response)
        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;
 }