]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change response over struct
authorBastian Dehn <hhaalo@arcor.de>
Sun, 21 Jan 2024 09:38:50 +0000 (10:38 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 21 Jan 2024 09:38:50 +0000 (10:38 +0100)
src/kds_s2000w_handler.c

index b05a4fd181fd86315b0a40a220eb15e3eb8a1dc8..a0cf9b7372c6e8022bbd322d27daf119c5802b5e 100644 (file)
@@ -5,16 +5,24 @@
 #include <curl/curl.h>
 #include "kds_s2000w_handler.h"
 
+typedef struct {
+       char* data;
+       size_t size;
+} response;
+
 size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata)
 {
-       char* data = (char*) userdata;
+       response* data = (response*) userdata;
        size_t fullsize = size * nmemb;
 
-       data = realloc(userdata, fullsize + 1);
-       if (!data)
+       data->data = realloc(data->data, fullsize + 1);
+       if (!data->data)
                return 0;
 
-       memcpy(data, ptr, fullsize);
+       memcpy(data->data, ptr, fullsize);
+       data->size = fullsize + 1;
+       printf("writed data %s\n", data->data);
+       printf("data address callback %x\n", data->data);
 
        return fullsize;
 }
@@ -26,18 +34,20 @@ void* kds_s2000w_handler_open()
        if(curl) {
                printf("curl\n");
                CURLcode res;
-               char* data = NULL;
+               response resp = {0};
+               printf("open data %x\n", &resp);
                curl_easy_setopt(curl, CURLOPT_URL, "http://scanner.lan.hhaalo.de/api/session");
                curl_easy_setopt(curl, CURLOPT_POST, 1L);
                curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"OCPUserName\":\"hhaalo\"}");
                curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
-               curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) data);
+               curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) &resp);
                res = curl_easy_perform(curl);
 
-               printf("data: %s\n", data);
-               free(data);
-               data = NULL;
+               printf("data address open: %x\n", resp.data);
+               printf("data: %s\n", resp.data);
                printf("curlcode: %li\n", res);
+               free(resp.data);
+               resp.data = NULL;
                curl_easy_cleanup(curl);
        }
        return NULL;