From: Bastian Dehn Date: Sun, 21 Jan 2024 16:50:59 +0000 (+0100) Subject: read option numbers X-Git-Tag: v1.0.0^2~484 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=44528d8859306333d081b94ec2ff6607e70f752a;p=sane-kds-s2000w-net.git read option numbers --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index dfe5183..a7dceb8 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -29,11 +29,11 @@ size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) return fullsize; } -void* kds_s2000w_handler_get_option(int option) +void kds_s2000w_handler_get_option(int option, void* value) { CURL *curl = curl_easy_init(); if(!curl) - return NULL; + return; response resp = {0}; CURLU* url_handler = curl_url(); @@ -52,14 +52,18 @@ void* kds_s2000w_handler_get_option(int option) CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp.code); - printf("%s", resp.data); + json_object* resObj = json_tokener_parse(resp.data); + json_object* config = json_object_object_get(resObj, "Configuration"); + int* num_options = (int*) value; + num_options = malloc(sizeof(int)); + *num_options = 0; + *num_options = json_object_object_length(config); curl_url_cleanup(url_handler); url_handler = NULL; curl_free(url); url = NULL; free(resp.data); - return NULL; } void kds_s2000w_handler_set_option(int option, void* value) diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index 9753219..bed32ea 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -7,7 +7,7 @@ typedef enum { device_state kds_s2000w_handler_open(); void kds_s2000w_handler_close(); -void* kds_s2000w_handler_get_option(int option); +void kds_s2000w_handler_get_option(int option, void* value); void kds_s2000w_handler_set_option(int option, void* value); void kds_s2000w_handler_set_option_auto(int option); #endif \ No newline at end of file diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 4597578..9810eec 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -91,7 +91,7 @@ SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle, printf("kds_s2000w_net control option\n"); if (action == SANE_ACTION_GET_VALUE) - value = kds_s2000w_handler_get_option(option); + kds_s2000w_handler_get_option(option, value); if (action == SANE_ACTION_SET_VALUE) kds_s2000w_handler_set_option(option, value);