From d340cfdee8df32ab87d933b333f66b0357e5fd94 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 22 Mar 2026 09:54:25 +0100 Subject: [PATCH] change options descriptors array struct --- src/kds_s2000w_option_descriptors.c | 250 +++++++++++++++------------- 1 file changed, 137 insertions(+), 113 deletions(-) diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index 2ee9fcf..a1a53f4 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -7,8 +7,12 @@ #define PROFILE_230802_V1_0_36_MAX_OPTION_COUNT 26 #define PROFILE_MIN_MAX_OPTION_COUNT 12 -option_descriptor_t** kds_s2000w_descriptors = NULL; -uint8_t kds_s2000w_max_option_count = 0; +typedef struct { + option_descriptor_t** descriptors; + size_t size; +} option_descriptors_t; + +option_descriptors_t* kds_s2000w_option_descriptors = NULL; option_descriptor_t* _kds_s2000w_option_descriptor_descriptor_init() { @@ -58,8 +62,8 @@ void _kds_s2000w_option_descriptor_descriptor_free(option_descriptor_t* descript SANE_Status _kds_s2000w_option_descriptor_validate() { - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - if (kds_s2000w_descriptors[i] == NULL) { + for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) { + if (kds_s2000w_option_descriptors->descriptors[i] == NULL) { kds_s2000w_option_descriptors_free(); return SANE_STATUS_NO_MEM; } @@ -1443,122 +1447,140 @@ option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout_respo ******************************************************************************/ SANE_Status _kds_s2000w_option_descriptors_init_min_profile() { - kds_s2000w_max_option_count = PROFILE_MIN_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors = malloc(sizeof(option_descriptors_t)); + if (kds_s2000w_option_descriptors == NULL) + return SANE_STATUS_NO_MEM; - kds_s2000w_descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_max_option_count); - if (kds_s2000w_descriptors == NULL) + kds_s2000w_option_descriptors->size = PROFILE_MIN_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors->descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_option_descriptors->size); + if (kds_s2000w_option_descriptors->descriptors == NULL) { + free(kds_s2000w_option_descriptors); + kds_s2000w_option_descriptors = NULL; return SANE_STATUS_NO_MEM; + } - kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options();; - kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_option_descriptors->descriptors[0] = _kds_s2000w_option_descriptor_num_options();; + kds_s2000w_option_descriptors->descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_option_descriptors->descriptors[2] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_option_descriptors->descriptors[3] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_option_descriptors->descriptors[4] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_option_descriptors->descriptors[5] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_option_descriptors->descriptors[6] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_option_descriptors->descriptors[7] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_option_descriptors->descriptors[8] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_option_descriptors->descriptors[9] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_option_descriptors->descriptors[10] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_option_descriptors->descriptors[11] = _kds_s2000w_option_descriptor_autostart(); return _kds_s2000w_option_descriptor_validate(); } SANE_Status _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile() { - kds_s2000w_max_option_count = PROFILE_230802_V1_0_36_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors = malloc(sizeof(option_descriptors_t)); + if (kds_s2000w_option_descriptors == NULL) + return SANE_STATUS_NO_MEM; - kds_s2000w_descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_max_option_count); - if (kds_s2000w_descriptors == NULL) + kds_s2000w_option_descriptors->size = PROFILE_230802_V1_0_36_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors->descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_option_descriptors->size); + if (kds_s2000w_option_descriptors->descriptors == NULL) { + free(kds_s2000w_option_descriptors); + kds_s2000w_option_descriptors = NULL; return SANE_STATUS_NO_MEM; + } - kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options(); - kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); - kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); - kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); - kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); - kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_background_smoothing_mode(); - kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); - kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[12] = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[13] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); - kds_s2000w_descriptors[14] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); - kds_s2000w_descriptors[15] = _kds_s2000w_option_descriptor_color_balance_mode(); - kds_s2000w_descriptors[16] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); - kds_s2000w_descriptors[17] = _kds_s2000w_option_descriptor_color_balance_red(); - kds_s2000w_descriptors[18] = _kds_s2000w_option_descriptor_color_balance_green(); - kds_s2000w_descriptors[19] = _kds_s2000w_option_descriptor_color_balance_blue(); - kds_s2000w_descriptors[20] = _kds_s2000w_option_descriptor_binarization_contrast(); - kds_s2000w_descriptors[21] = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[22] = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[23] = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[24] = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[25] = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_option_descriptors->descriptors[0] = _kds_s2000w_option_descriptor_num_options(); + kds_s2000w_option_descriptors->descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_option_descriptors->descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); + kds_s2000w_option_descriptors->descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_option_descriptors->descriptors[4] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_option_descriptors->descriptors[5] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_option_descriptors->descriptors[6] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); + kds_s2000w_option_descriptors->descriptors[7] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); + kds_s2000w_option_descriptors->descriptors[8] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[9] = _kds_s2000w_option_descriptor_background_smoothing_mode(); + kds_s2000w_option_descriptors->descriptors[10] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[11] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_option_descriptors->descriptors[12] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_option_descriptors->descriptors[13] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[14] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); + kds_s2000w_option_descriptors->descriptors[15] = _kds_s2000w_option_descriptor_color_balance_mode(); + kds_s2000w_option_descriptors->descriptors[16] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); + kds_s2000w_option_descriptors->descriptors[17] = _kds_s2000w_option_descriptor_color_balance_red(); + kds_s2000w_option_descriptors->descriptors[18] = _kds_s2000w_option_descriptor_color_balance_green(); + kds_s2000w_option_descriptors->descriptors[19] = _kds_s2000w_option_descriptor_color_balance_blue(); + kds_s2000w_option_descriptors->descriptors[20] = _kds_s2000w_option_descriptor_binarization_contrast(); + kds_s2000w_option_descriptors->descriptors[21] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_option_descriptors->descriptors[22] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_option_descriptors->descriptors[23] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_option_descriptors->descriptors[24] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_option_descriptors->descriptors[25] = _kds_s2000w_option_descriptor_autostart(); return _kds_s2000w_option_descriptor_validate(); } SANE_Status _kds_s2000w_option_descriptors_init_full_profile() { - kds_s2000w_max_option_count = PROFILE_FULL_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors = malloc(sizeof(option_descriptors_t)); + if (kds_s2000w_option_descriptors == NULL) + return SANE_STATUS_NO_MEM; - kds_s2000w_descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_max_option_count); - if (kds_s2000w_descriptors == NULL) + kds_s2000w_option_descriptors->size = PROFILE_FULL_MAX_OPTION_COUNT; + kds_s2000w_option_descriptors->descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_option_descriptors->size); + if (kds_s2000w_option_descriptors->descriptors == NULL) { + free(kds_s2000w_option_descriptors); + kds_s2000w_option_descriptors = NULL; return SANE_STATUS_NO_MEM; + } - kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options(); - kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); - kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_geometry_group(); - kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_cropping_mode(); - kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_cropping_image(); - kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_image_offset_x(); - kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_image_offset_y(); - kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_image_width(); - kds_s2000w_descriptors[12] = _kds_s2000w_option_descriptor_image_height(); - kds_s2000w_descriptors[13] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); - kds_s2000w_descriptors[14] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); - kds_s2000w_descriptors[15] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); - kds_s2000w_descriptors[16] = _kds_s2000w_option_descriptor_background_smoothing_mode(); - kds_s2000w_descriptors[17] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); - kds_s2000w_descriptors[18] = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[19] = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[20] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); - kds_s2000w_descriptors[21] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); - kds_s2000w_descriptors[22] = _kds_s2000w_option_descriptor_color_brightness(); - kds_s2000w_descriptors[23] = _kds_s2000w_option_descriptor_color_contrast(); - kds_s2000w_descriptors[24] = _kds_s2000w_option_descriptor_color_balance_mode(); - kds_s2000w_descriptors[25] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); - kds_s2000w_descriptors[26] = _kds_s2000w_option_descriptor_color_balance_red(); - kds_s2000w_descriptors[27] = _kds_s2000w_option_descriptor_color_balance_green(); - kds_s2000w_descriptors[28] = _kds_s2000w_option_descriptor_color_balance_blue(); - kds_s2000w_descriptors[29] = _kds_s2000w_option_descriptor_color_sharpen(); - kds_s2000w_descriptors[30] = _kds_s2000w_option_descriptor_binarization_contrast(); - kds_s2000w_descriptors[31] = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[32] = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[33] = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[34] = _kds_s2000w_option_descriptor_skip_blank_page_content(); - kds_s2000w_descriptors[35] = _kds_s2000w_option_descriptor_hole_fill(); - kds_s2000w_descriptors[36] = _kds_s2000w_option_descriptor_post_scan_rotation(); - kds_s2000w_descriptors[37] = _kds_s2000w_option_descriptor_edge_fill(); - kds_s2000w_descriptors[38] = _kds_s2000w_option_descriptor_image_border(); - kds_s2000w_descriptors[39] = _kds_s2000w_option_descriptor_jpeg_quality(); - kds_s2000w_descriptors[40] = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[41] = _kds_s2000w_option_descriptor_autostart(); - kds_s2000w_descriptors[42] = _kds_s2000w_option_descriptor_max_document_length(); - kds_s2000w_descriptors[43] = _kds_s2000w_option_descriptor_transport_handling(); - kds_s2000w_descriptors[44] = _kds_s2000w_option_descriptor_multifeed_sensitivity(); - kds_s2000w_descriptors[45] = _kds_s2000w_option_descriptor_multifeed_response(); - kds_s2000w_descriptors[46] = _kds_s2000w_option_descriptor_document_feeder_timeout(); - kds_s2000w_descriptors[47] = _kds_s2000w_option_descriptor_document_feeder_timeout_response(); + kds_s2000w_option_descriptors->descriptors[0] = _kds_s2000w_option_descriptor_num_options(); + kds_s2000w_option_descriptors->descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_option_descriptors->descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); + kds_s2000w_option_descriptors->descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_option_descriptors->descriptors[4] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_option_descriptors->descriptors[5] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_option_descriptors->descriptors[6] = _kds_s2000w_option_descriptor_geometry_group(); + kds_s2000w_option_descriptors->descriptors[7] = _kds_s2000w_option_descriptor_cropping_mode(); + kds_s2000w_option_descriptors->descriptors[8] = _kds_s2000w_option_descriptor_cropping_image(); + kds_s2000w_option_descriptors->descriptors[9] = _kds_s2000w_option_descriptor_image_offset_x(); + kds_s2000w_option_descriptors->descriptors[10] = _kds_s2000w_option_descriptor_image_offset_y(); + kds_s2000w_option_descriptors->descriptors[11] = _kds_s2000w_option_descriptor_image_width(); + kds_s2000w_option_descriptors->descriptors[12] = _kds_s2000w_option_descriptor_image_height(); + kds_s2000w_option_descriptors->descriptors[13] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); + kds_s2000w_option_descriptors->descriptors[14] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); + kds_s2000w_option_descriptors->descriptors[15] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[16] = _kds_s2000w_option_descriptor_background_smoothing_mode(); + kds_s2000w_option_descriptors->descriptors[17] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[18] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_option_descriptors->descriptors[19] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_option_descriptors->descriptors[20] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); + kds_s2000w_option_descriptors->descriptors[21] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); + kds_s2000w_option_descriptors->descriptors[22] = _kds_s2000w_option_descriptor_color_brightness(); + kds_s2000w_option_descriptors->descriptors[23] = _kds_s2000w_option_descriptor_color_contrast(); + kds_s2000w_option_descriptors->descriptors[24] = _kds_s2000w_option_descriptor_color_balance_mode(); + kds_s2000w_option_descriptors->descriptors[25] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); + kds_s2000w_option_descriptors->descriptors[26] = _kds_s2000w_option_descriptor_color_balance_red(); + kds_s2000w_option_descriptors->descriptors[27] = _kds_s2000w_option_descriptor_color_balance_green(); + kds_s2000w_option_descriptors->descriptors[28] = _kds_s2000w_option_descriptor_color_balance_blue(); + kds_s2000w_option_descriptors->descriptors[29] = _kds_s2000w_option_descriptor_color_sharpen(); + kds_s2000w_option_descriptors->descriptors[30] = _kds_s2000w_option_descriptor_binarization_contrast(); + kds_s2000w_option_descriptors->descriptors[31] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_option_descriptors->descriptors[32] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_option_descriptors->descriptors[33] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_option_descriptors->descriptors[34] = _kds_s2000w_option_descriptor_skip_blank_page_content(); + kds_s2000w_option_descriptors->descriptors[35] = _kds_s2000w_option_descriptor_hole_fill(); + kds_s2000w_option_descriptors->descriptors[36] = _kds_s2000w_option_descriptor_post_scan_rotation(); + kds_s2000w_option_descriptors->descriptors[37] = _kds_s2000w_option_descriptor_edge_fill(); + kds_s2000w_option_descriptors->descriptors[38] = _kds_s2000w_option_descriptor_image_border(); + kds_s2000w_option_descriptors->descriptors[39] = _kds_s2000w_option_descriptor_jpeg_quality(); + kds_s2000w_option_descriptors->descriptors[40] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_option_descriptors->descriptors[41] = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_option_descriptors->descriptors[42] = _kds_s2000w_option_descriptor_max_document_length(); + kds_s2000w_option_descriptors->descriptors[43] = _kds_s2000w_option_descriptor_transport_handling(); + kds_s2000w_option_descriptors->descriptors[44] = _kds_s2000w_option_descriptor_multifeed_sensitivity(); + kds_s2000w_option_descriptors->descriptors[45] = _kds_s2000w_option_descriptor_multifeed_response(); + kds_s2000w_option_descriptors->descriptors[46] = _kds_s2000w_option_descriptor_document_feeder_timeout(); + kds_s2000w_option_descriptors->descriptors[47] = _kds_s2000w_option_descriptor_document_feeder_timeout_response(); return _kds_s2000w_option_descriptor_validate(); } @@ -1585,44 +1607,46 @@ SANE_Status kds_s2000w_option_descriptors_init(profile_t profile) void kds_s2000w_option_descriptors_free() { - if (kds_s2000w_descriptors == NULL) + if (kds_s2000w_option_descriptors == NULL) return; - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - _kds_s2000w_option_descriptor_descriptor_free(kds_s2000w_descriptors[i]); - kds_s2000w_descriptors[i] = NULL; + for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) { + _kds_s2000w_option_descriptor_descriptor_free(kds_s2000w_option_descriptors->descriptors[i]); + kds_s2000w_option_descriptors->descriptors[i] = NULL; } - free(kds_s2000w_descriptors); - kds_s2000w_descriptors = NULL; + free(kds_s2000w_option_descriptors->descriptors); + kds_s2000w_option_descriptors->descriptors = NULL; + free(kds_s2000w_option_descriptors); + kds_s2000w_option_descriptors = NULL; } uint8_t kds_s2000w_option_descriptors_get_max_option_count() { - return kds_s2000w_max_option_count; + return kds_s2000w_option_descriptors->size; } option_descriptor_t* kds_s2000w_option_descriptors_full_get_by_number(uint32_t number) { - if (number >= kds_s2000w_max_option_count) + if (number >= kds_s2000w_option_descriptors->size) return NULL; - return kds_s2000w_descriptors[number]; + return kds_s2000w_option_descriptors->descriptors[number]; } SANE_Option_Descriptor* kds_s2000w_option_descriptors_get_by_number(uint32_t number) { - if (number >= kds_s2000w_max_option_count) + if (number >= kds_s2000w_option_descriptors->size) return NULL; - return kds_s2000w_descriptors[number]->descriptor; + return kds_s2000w_option_descriptors->descriptors[number]->descriptor; } SANE_Option_Descriptor* kds_s2000w_option_descriptors_get_by_config_name(const char* name) { - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - if (strcmp(kds_s2000w_descriptors[i]->config_name, name) == 0) - return kds_s2000w_descriptors[i]->descriptor; + for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) { + if (strcmp(kds_s2000w_option_descriptors->descriptors[i]->config_name, name) == 0) + return kds_s2000w_option_descriptors->descriptors[i]->descriptor; } return NULL; -- 2.47.3