]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change set sub option abort not found
authorBastian Dehn <hhaalo@arcor.de>
Fri, 27 Mar 2026 14:53:16 +0000 (15:53 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 27 Mar 2026 15:08:52 +0000 (16:08 +0100)
src/kds_s2000w_handler_opts.c

index 228859fe38bbc18a3008eb6247caa3417a3d101a..16c541c281c41f2ea3d1b049463a1749be3818c6 100644 (file)
@@ -288,10 +288,17 @@ void _kds_s2000w_handler_opts_set_valid_coord_y(option_descriptor_t* descriptor,
 void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config)
 {
        json_object* cropping_mode = json_object_object_get(config, CROPPING_MODE);
-       const char* cropping_mode_value = json_object_get_string(cropping_mode);
+       if (cropping_mode == NULL)
+               return;
 
        json_object* cropping_image = json_object_object_get(config, CROPPING_IMAGE);
+       if (cropping_image == NULL)
+               return;
+
+       const char* cropping_mode_value = json_object_get_string(cropping_mode);
        SANE_Option_Descriptor* cropping_image_descriptor = kds_s2000w_option_descriptors_get_by_config_name(CROPPING_IMAGE);
+       if (cropping_image_descriptor == NULL)
+               return;
 
        if (strcmp(cropping_mode_value, "Automatic") == 0) {
                _kds_s2000w_handler_opts_write_value_to_json(cropping_image, cropping_image_descriptor->type, "EntireDocument");
@@ -310,14 +317,22 @@ void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config)
 
 void _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(json_object* config)
 {
-       json_object* cropping_image = json_object_object_get(config, CROPPING_IMAGE);;
-       const char* cropping_image_value = json_object_get_string(cropping_image);
+       json_object* cropping_image = json_object_object_get(config, CROPPING_IMAGE);
+       if (cropping_image == NULL)
+               return;
 
+       const char* cropping_image_value = json_object_get_string(cropping_image);
        SANE_Option_Descriptor* image_offset_x = kds_s2000w_option_descriptors_get_by_config_name(IMAGE_OFFSET_X);
        SANE_Option_Descriptor* image_offset_y = kds_s2000w_option_descriptors_get_by_config_name(IMAGE_OFFSET_Y);
        SANE_Option_Descriptor* image_width = kds_s2000w_option_descriptors_get_by_config_name(IMAGE_WIDTH);
        SANE_Option_Descriptor* image_height = kds_s2000w_option_descriptors_get_by_config_name(IMAGE_HEIGHT);
 
+       if (image_offset_x == NULL
+               || image_offset_y == NULL
+               || image_width == NULL
+               || image_height == NULL)
+               return;
+
        if (strcmp(cropping_image_value, "PartialDocument") == 0) {
                image_offset_x->cap |= SANE_CAP_SOFT_SELECT;
                image_offset_y->cap |= SANE_CAP_SOFT_SELECT;
@@ -334,13 +349,20 @@ void _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(json_object*
 
 void _kds_s2000w_handler_opts_set_enable_color_balance(json_object* config)
 {
-       json_object* color_balance_mode = json_object_object_get(config, COLOR_BALANCE_MODE);;
-       const char* color_balance_mode_value = json_object_get_string(color_balance_mode);
+       json_object* color_balance_mode = json_object_object_get(config, COLOR_BALANCE_MODE);
+       if (color_balance_mode == NULL)
+               return;
 
+       const char* color_balance_mode_value = json_object_get_string(color_balance_mode);
        SANE_Option_Descriptor* color_balance_red = kds_s2000w_option_descriptors_get_by_config_name(COLOR_BALANCE_RED);
        SANE_Option_Descriptor* color_balance_green = kds_s2000w_option_descriptors_get_by_config_name(COLOR_BALANCE_GREEN);
        SANE_Option_Descriptor* color_balance_blue = kds_s2000w_option_descriptors_get_by_config_name(COLOR_BALANCE_BLUE);
 
+       if (color_balance_red == NULL
+               || color_balance_green == NULL
+               || color_balance_blue == NULL)
+                       return;
+
        if (strcmp(color_balance_mode_value, "Manual") == 0) {
                color_balance_red->cap |= SANE_CAP_SOFT_SELECT;
                color_balance_green->cap |= SANE_CAP_SOFT_SELECT;
@@ -355,10 +377,14 @@ void _kds_s2000w_handler_opts_set_enable_color_balance(json_object* config)
 
 void _kds_s2000w_handler_opts_set_enable_color_aggressiveness(json_object* config)
 {
-       json_object* color_balance_mode = json_object_object_get(config, COLOR_BALANCE_MODE);;
-       const char* color_balance_mode_value = json_object_get_string(color_balance_mode);
+       json_object* color_balance_mode = json_object_object_get(config, COLOR_BALANCE_MODE);
+       if (color_balance_mode == NULL)
+               return;
 
+       const char* color_balance_mode_value = json_object_get_string(color_balance_mode);
        SANE_Option_Descriptor* color_balance_aggressivness = kds_s2000w_option_descriptors_get_by_config_name(COLOR_BALANCE_AGGRESSIVENESS);
+       if (color_balance_aggressivness == NULL)
+               return;
 
        if (strcmp(color_balance_mode_value, "AutomaticAdvanced") == 0) {
                color_balance_aggressivness->cap |= SANE_CAP_SOFT_SELECT;
@@ -370,10 +396,14 @@ void _kds_s2000w_handler_opts_set_enable_color_aggressiveness(json_object* confi
 
 void _kds_s2000w_handler_opts_set_enable_color_brightness(json_object* config)
 {
-       json_object* color_auto_brightness_mode = json_object_object_get(config, COLOR_AUTO_BRIGHTNESS_MODE);;
-       const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
+       json_object* color_auto_brightness_mode = json_object_object_get(config, COLOR_AUTO_BRIGHTNESS_MODE);
+       if (color_auto_brightness_mode == NULL)
+               return;
 
+       const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
        SANE_Option_Descriptor* color_brightness = kds_s2000w_option_descriptors_get_by_config_name(COLOR_BRIGHTNESS);
+       if (color_brightness == NULL)
+               return;
 
        if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
                color_brightness->cap |= SANE_CAP_SOFT_SELECT;
@@ -385,25 +415,33 @@ void _kds_s2000w_handler_opts_set_enable_color_brightness(json_object* config)
 
 void _kds_s2000w_handler_opts_set_enable_color_contrast(json_object* config)
 {
-       json_object* color_auto_brightness_mode = json_object_object_get(config, COLOR_AUTO_BRIGHTNESS_MODE);;
-       const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
+       json_object* color_auto_brightness_mode = json_object_object_get(config, COLOR_AUTO_BRIGHTNESS_MODE);
+       if (color_auto_brightness_mode == NULL)
+               return;
 
-       SANE_Option_Descriptor* color_constrast = kds_s2000w_option_descriptors_get_by_config_name(COLOR_CONTRAST);
+       const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
+       SANE_Option_Descriptor* color_contrast = kds_s2000w_option_descriptors_get_by_config_name(COLOR_CONTRAST);
+       if (color_contrast == NULL)
+               return;
 
        if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
-               color_constrast->cap |= SANE_CAP_SOFT_SELECT;
+               color_contrast->cap |= SANE_CAP_SOFT_SELECT;
                return;
        }
 
-       color_constrast->cap &= ~SANE_CAP_SOFT_SELECT;
+       color_contrast->cap &= ~SANE_CAP_SOFT_SELECT;
 }
 
 void _kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(json_object* config)
 {
-       json_object* foreground_boldness_mode = json_object_object_get(config, FOREGROUND_BOLDNESS_MODE);;
-       const char* foreground_boldness_mode_value = json_object_get_string(foreground_boldness_mode);
+       json_object* foreground_boldness_mode = json_object_object_get(config, FOREGROUND_BOLDNESS_MODE);
+       if (foreground_boldness_mode == NULL)
+               return;
 
+       const char* foreground_boldness_mode_value = json_object_get_string(foreground_boldness_mode);
        SANE_Option_Descriptor* foreground_boldness_aggressiveness = kds_s2000w_option_descriptors_get_by_config_name(FOREGROUND_BOLDNESS_AGGRESSIVENESS);
+       if (foreground_boldness_aggressiveness == NULL)
+               return;
 
        if (strcmp(foreground_boldness_mode_value, "AutomaticAdvanced") == 0) {
                foreground_boldness_aggressiveness->cap |= SANE_CAP_SOFT_SELECT;
@@ -415,10 +453,14 @@ void _kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(json_object* co
 
 void _kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(json_object* config)
 {
-       json_object* background_smoothing_mode = json_object_object_get(config, BACKGROUND_SMOOTHING_MODE);;
-       const char* background_smoothing_mode_value = json_object_get_string(background_smoothing_mode);
+       json_object* background_smoothing_mode = json_object_object_get(config, BACKGROUND_SMOOTHING_MODE);
+       if (background_smoothing_mode == NULL)
+               return;
 
+       const char* background_smoothing_mode_value = json_object_get_string(background_smoothing_mode);
        SANE_Option_Descriptor* background_smoothing_aggressiveness = kds_s2000w_option_descriptors_get_by_config_name(BACKGROUND_SMOOTHING_AGGRESSIVENESS);
+       if (background_smoothing_aggressiveness == NULL)
+               return;
 
        if (strcmp(background_smoothing_mode_value, "AutomaticAdvanced") == 0) {
                background_smoothing_aggressiveness->cap |= SANE_CAP_SOFT_SELECT;
@@ -430,10 +472,14 @@ void _kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(json_object* c
 
 void _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(json_object* config)
 {
-       json_object* color_drop_out = json_object_object_get(config, COLOR_DROP_OUT);;
-       const char* color_drop_out_value = json_object_get_string(color_drop_out);
+       json_object* color_drop_out = json_object_object_get(config, COLOR_DROP_OUT);
+       if (color_drop_out == NULL)
+               return;
 
+       const char* color_drop_out_value = json_object_get_string(color_drop_out);
        SANE_Option_Descriptor* color_drop_out_aggressiveness = kds_s2000w_option_descriptors_get_by_config_name(COLOR_DROP_OUT_AGGRESSIVENESS);
+       if (color_drop_out_aggressiveness == NULL)
+               return;
 
        if (strcmp(color_drop_out_value, "Predominant") == 0 || strcmp(color_drop_out_value, "Multiple") == 0) {
                color_drop_out_aggressiveness->cap |= SANE_CAP_SOFT_SELECT;
@@ -544,12 +590,10 @@ void _kds_s2000w_handler_opts_set_depends_opts(const handler_t* h,
        }
 
        if (strcmp(config_name, RESET) == 0) {
-               if (h->profile == PROFILE_FULL) {
-                       _kds_s2000w_handler_opts_set_enable_cropping_image(config);
-                       _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
-                       _kds_s2000w_handler_opts_set_enable_color_brightness(config);
-                       _kds_s2000w_handler_opts_set_enable_color_contrast(config);
-               }
+               _kds_s2000w_handler_opts_set_enable_cropping_image(config);
+               _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
+               _kds_s2000w_handler_opts_set_enable_color_brightness(config);
+               _kds_s2000w_handler_opts_set_enable_color_contrast(config);
                _kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(config);
                _kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(config);
                _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config);
@@ -755,8 +799,7 @@ int32_t kds_s2000w_handler_opts_set_option(handler_t* h, uint32_t option, void*
 
        _kds_s2000w_handler_opts_reset(descriptor, h);
 
-       if (h->profile > PROFILE_MIN)
-               _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, h->scanner_config);
+       _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, h->scanner_config);
 
        if (!_kds_s2000w_opts_validate(descriptor->descriptor, value))
                return INVAL;