From 0ea50e53059f560c325dc6a0dc720e241150fbb3 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 22 Sep 2025 12:43:02 +0200 Subject: [PATCH] change write value to json with type --- src/kds_s2000w_handler_opts.c | 47 ++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index a6b2fbf..09a4dc5 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -8,16 +8,17 @@ #define AUTOSTART_ON 1 #define OPTION_COUNT 47 -__attribute_deprecated__ void _kds_s2000w_handler_opts_write_string_value_to_json(json_object* value_object, void* value) +void _kds_s2000w_handler_opts_write_value_to_json(json_object* value_object, SANE_Value_Type value_type, void* value) { - char* char_value = (char*) value; - json_object_set_string(value_object, char_value); -} + if (value_type == SANE_TYPE_INT || value_type == SANE_TYPE_BOOL) { + int32_t* int_value_ptr = (int32_t*) value; + json_object_set_int(value_object, *int_value_ptr); + } -__attribute_deprecated__ void _kds_s2000w_handler_opts_write_int_value_to_json(json_object* value_object, void* value) -{ - int32_t* int_value_ptr = (int32_t*) value; - json_object_set_int(value_object, *int_value_ptr); + if (value_type == SANE_TYPE_STRING) { + char* char_value = (char*) value; + json_object_set_string(value_object, char_value); + } } void _kds_s2000w_handler_opts_write_value(json_object* value_object, SANE_Value_Type value_type, void* value) @@ -60,7 +61,7 @@ void _kds_s2000w_handler_opts_set_autostart_on(json_object* config) { uint32_t auto_start_value = AUTOSTART_ON; json_object* value_object = json_object_object_get(config, "AutoStart"); - _kds_s2000w_handler_opts_write_int_value_to_json(value_object, &auto_start_value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value); } void _kds_s2000w_handler_opts_set_option_to_default(handler* h) @@ -106,13 +107,13 @@ void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config) SANE_Option_Descriptor* cropping_image = kds_s2000w_option_descriptors_get_by_name("cropping-image"); if (strcmp(cropping_mode_value, "Automatic") == 0) { - _kds_s2000w_handler_opts_write_string_value_to_json(copping_image, "EntireDocument"); + _kds_s2000w_handler_opts_write_value_to_json(copping_image, cropping_image->type, "EntireDocument"); cropping_image->cap &= ~SANE_CAP_SOFT_SELECT; return; } if (strcmp(cropping_mode_value, "Manual") == 0) { - _kds_s2000w_handler_opts_write_string_value_to_json(copping_image, "PartialDocument"); + _kds_s2000w_handler_opts_write_value_to_json(copping_image, cropping_image->type, "PartialDocument"); cropping_image->cap &= ~SANE_CAP_SOFT_SELECT; return; } @@ -314,7 +315,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value switch(option) { case 2: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); if (strcmp(value, "Flatbed") == 0) h->current_scan_status->feeder = Flatbed; @@ -328,7 +329,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 3: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); if (info != NULL) *info = RELOAD_PARAMS; @@ -354,15 +355,15 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value case 41: case 45: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_int_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); break; case 5: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); break; case 7: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_cropping_image(config); _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config); @@ -371,7 +372,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 8: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config); if (info != NULL) @@ -379,7 +380,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 14: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(config); if (info != NULL) @@ -387,7 +388,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 16: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(config); if (info != NULL) @@ -395,7 +396,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 19: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config); if (info != NULL) @@ -403,7 +404,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 21: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(config); if (info != NULL) @@ -411,7 +412,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value break; case 24: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); _kds_s2000w_handler_opts_set_enable_color_balance(config); _kds_s2000w_handler_opts_set_enable_color_aggressiveness(config); @@ -428,7 +429,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value case 44: case 46: value_object = json_object_object_get(config, descriptor->config_name); - _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); + _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor.type, value); break; case 31: _kds_s2000w_handler_opts_set_option_to_default(h); -- 2.47.3