]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change option mask to pointer
authorBastian Dehn <hhaalo@arcor.de>
Wed, 25 Mar 2026 16:07:18 +0000 (17:07 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Wed, 25 Mar 2026 16:07:18 +0000 (17:07 +0100)
src/kds_s2000w_handler.h
src/kds_s2000w_handler_opts.c
src/kds_s2000w_handler_opts.h
src/kds_s2000w_net.c
tests/kds_s2000w_net_tests.c

index aaf8193f6d9539d2ea3038eb559e74edbef23c65..fa5946038ae3333c9aabdbd459222a276572fb28 100644 (file)
@@ -72,7 +72,7 @@ connection_state_t kds_s2000w_handler_open(void** handle);
 void kds_s2000w_handler_close(handler_t* h);
 void kds_s2000w_handler_recreate_session(handler_t* h);
 
-mask_option_groups_t kds_s2000w_handler_get_available_options();
+mask_option_groups_t* kds_s2000w_handler_get_available_options();
 int32_t kds_s2000w_handler_opts_get_option(handler_t* handle, uint32_t option, void* value, int32_t* info);
 int32_t kds_s2000w_handler_opts_set_option(handler_t* handle, uint32_t option, void* value, int32_t* info);
 
index c47fd04c72a08dd832b7632ea9942f0d1f9b62f5..c7095c34f5fe721cbef10071f652e3b3599cd2fe 100644 (file)
@@ -558,23 +558,20 @@ void _kds_s2000w_handler_opts_set_depends_opts(const handler_t* h,
        }
 }
 
-mask_option_groups_t kds_s2000w_handler_get_available_options()
+mask_option_groups_t* kds_s2000w_handler_get_available_options()
 {
+       mask_option_groups_t* available_options = malloc(sizeof(mask_option_groups_t));
+       if (available_options == NULL)
+               return NULL;
+
+       memset(available_options, 0, sizeof(mask_option_groups_t));
+
        response_t* resp = kds_s2000w_client_response_init();
        kds_s2000w_client_get_capabilities(resp);
 
        json_object* capabilities = json_tokener_parse(resp->data);
        json_object* defaults = json_object_object_get(capabilities, "Defaults");
 
-       mask_option_groups_t available_options = {
-               .standard_group = 0,
-               .geometry_group = 0,
-               .boldness_smoothing_group = 0,
-               .boldness_color_group = 0,
-               .image_processing_group = 0,
-               .feeder_group = 0
-       };
-
        const char* standard_group[] = {
                SCAN_SOURCE,
                COLOR_MODE,
@@ -582,7 +579,7 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                SCAN_SIDE
        };
        size_t len = sizeof(standard_group) / sizeof(const char*);
-       available_options.standard_group = _kds_s2000w_handler_get_group_available_options(defaults, standard_group, len);
+       available_options->standard_group = _kds_s2000w_handler_get_group_available_options(defaults, standard_group, len);
 
        const char* geometry_group[] = {
                CROPPING_MODE,
@@ -593,7 +590,7 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                IMAGE_HEIGHT
        };
        len = sizeof(geometry_group) / sizeof(const char*);
-       available_options.geometry_group = _kds_s2000w_handler_get_group_available_options(defaults, geometry_group, len);
+       available_options->geometry_group = _kds_s2000w_handler_get_group_available_options(defaults, geometry_group, len);
 
        const char* boldness_smoothing_group[] = {
                FOREGROUND_BOLDNESS_MODE,
@@ -602,7 +599,7 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                BACKGROUND_SMOOTHING_AGGRESSIVENESS
        };
        len = sizeof(boldness_smoothing_group) / sizeof(const char*);
-       available_options.boldness_smoothing_group = _kds_s2000w_handler_get_group_available_options(defaults, boldness_smoothing_group, len);
+       available_options->boldness_smoothing_group = _kds_s2000w_handler_get_group_available_options(defaults, boldness_smoothing_group, len);
 
        const char* boldness_color_group[] = {
                COLOR_DROP_OUT,
@@ -620,8 +617,8 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                RESET,
        };
        len = sizeof(boldness_color_group) / sizeof(const char*);
-       available_options.boldness_color_group = _kds_s2000w_handler_get_group_available_options(defaults, boldness_color_group, len);
-       available_options.boldness_color_group |= 1 << 12;
+       available_options->boldness_color_group = _kds_s2000w_handler_get_group_available_options(defaults, boldness_color_group, len);
+       available_options->boldness_color_group |= 1 << 12;
 
        const char* image_processing_group[] = {
                SKIP_BLANK_PAGES,
@@ -633,7 +630,7 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                JPEG_QUALITY
        };
        len = sizeof(image_processing_group) / sizeof(const char*);
-       available_options.image_processing_group = _kds_s2000w_handler_get_group_available_options(defaults, image_processing_group, len);
+       available_options->image_processing_group = _kds_s2000w_handler_get_group_available_options(defaults, image_processing_group, len);
 
        const char* feeder_group[] = {
                AUTOSTART,
@@ -645,7 +642,7 @@ mask_option_groups_t kds_s2000w_handler_get_available_options()
                DOCUMENT_FEEDER_TIMEOUT_RESPONSE
        };
        len = sizeof(feeder_group) / sizeof(const char*),
-       available_options.feeder_group = _kds_s2000w_handler_get_group_available_options(defaults, feeder_group, len);
+       available_options->feeder_group = _kds_s2000w_handler_get_group_available_options(defaults, feeder_group, len);
 
        json_object_put(capabilities);
        capabilities = NULL;
index 1254519bef1b384a87276a0e8b74f2402fb69145..e50fd4467ee1a9fd2c1ae6bb764d74e8d55e2efd 100644 (file)
@@ -3,7 +3,7 @@
 #include <stdint.h>
 #include "kds_s2000w_handler.h"
 
-mask_option_groups_t kds_s2000w_handler_get_available_options();
+mask_option_groups_t* kds_s2000w_handler_get_available_options();
 int32_t kds_s2000w_handler_opts_get_option(handler_t* h, uint32_t option, void* value, int32_t* info);
 int32_t kds_s2000w_handler_opts_set_option(handler_t* h, uint32_t option, void* value, int32_t* info);
 
index 55545c11ef122266dc6793a48f86edfeb0ea04ea..4aff009f528fb411a45af3d117c7bb05bf054a33 100644 (file)
@@ -98,8 +98,12 @@ SANE_Status sane_kds_s2000w_net_open(SANE_String_Const devicename,
                return SANE_STATUS_DEVICE_BUSY;
        }
 
-       mask_option_groups_t option_mask = kds_s2000w_handler_get_available_options();
-       return kds_s2000w_option_descriptors_init(h->profile);
+       mask_option_groups_t* option_mask = kds_s2000w_handler_get_available_options();
+       SANE_Status status = kds_s2000w_option_descriptors_init(h->profile);
+
+       free(option_mask);
+       option_mask = NULL;
+       return status;
 }
 
 void sane_kds_s2000w_net_close(SANE_Handle handle)
index a13d05586411aaef46aafee81b368f82aca94f3f..3b2d2d4d822d4cff63974c9a11f51ca79ebd294f 100644 (file)
@@ -948,14 +948,17 @@ void kds_s2000w_handler_available_options_test(void** state)
        will_return(__wrap_kds_s2000w_client_get_capabilities, 0);
        expect_function_call(__wrap_kds_s2000w_client_get_capabilities);
 
-       mask_option_groups_t option_mask = kds_s2000w_handler_get_available_options();
-
-       assert_int_equal(option_mask.standard_group, 0xf);
-       assert_int_equal(option_mask.geometry_group, 0x3f);
-       assert_int_equal(option_mask.boldness_smoothing_group, 0xf);
-       assert_int_equal(option_mask.boldness_color_group, 0x1fff);
-       assert_int_equal(option_mask.image_processing_group, 0x7f);
-       assert_int_equal(option_mask.feeder_group, 0x7f);
+       mask_option_groups_t* option_mask = kds_s2000w_handler_get_available_options();
+
+       assert_int_equal(option_mask->standard_group, 0xf);
+       assert_int_equal(option_mask->geometry_group, 0x3f);
+       assert_int_equal(option_mask->boldness_smoothing_group, 0xf);
+       assert_int_equal(option_mask->boldness_color_group, 0x1fff);
+       assert_int_equal(option_mask->image_processing_group, 0x7f);
+       assert_int_equal(option_mask->feeder_group, 0x7f);
+
+       free(option_mask);
+       option_mask = NULL;
 }
 
 int main()