From: Bastian Dehn Date: Sat, 27 Jan 2024 14:27:52 +0000 (+0100) Subject: change option descriptor array handle over pointer X-Git-Tag: v1.0.0^2~434 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=cd6b72c8999b9b94230e27602817ba7264c31872;p=sane-kds-s2000w-net.git change option descriptor array handle over pointer --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 0be1f5e..42dc4dc 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -6,25 +6,19 @@ #define MAX_OPTION_COUNT 23 -typedef struct { - SANE_Option_Descriptor* option_descriptors; - int length; -} option_descriptors; - +SANE_Option_Descriptor* option_descriptors; SANE_Device* device_info = NULL; SANE_Parameters* parameter = NULL; -option_descriptors option_descriptor_array; void _init_option_descriptor_array() { - option_descriptor_array.option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT); - option_descriptor_array.length = MAX_OPTION_COUNT; + option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT); } void _free_option_descriptor_array() { - free(option_descriptor_array.option_descriptors); - option_descriptor_array.option_descriptors = NULL; + free(option_descriptors); + option_descriptors = NULL; } SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize) @@ -92,190 +86,190 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( { switch (option) { case 0: - option_descriptor_array.option_descriptors[option].name = ""; - option_descriptor_array.option_descriptors[option].title = "option number count"; - option_descriptor_array.option_descriptors[option].desc = "available number of options"; - option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_NONE; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = ""; + option_descriptors[option].title = "option number count"; + option_descriptors[option].desc = "available number of options"; + option_descriptors[option].unit = SANE_UNIT_NONE; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 1: - option_descriptor_array.option_descriptors[option].name = "resolution"; - option_descriptor_array.option_descriptors[option].title = "resolution"; - option_descriptor_array.option_descriptors[option].desc = "resolution"; - option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_DPI; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "resolution"; + option_descriptors[option].title = "resolution"; + option_descriptors[option].desc = "resolution"; + option_descriptors[option].unit = SANE_UNIT_DPI; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 2: - option_descriptor_array.option_descriptors[option].name = "scanside"; - option_descriptor_array.option_descriptors[option].title = "scanside"; - option_descriptor_array.option_descriptors[option].desc = "scanside"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "scanside"; + option_descriptors[option].title = "scanside"; + option_descriptors[option].desc = "scanside"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 3: - option_descriptor_array.option_descriptors[option].name = "colormode"; - option_descriptor_array.option_descriptors[option].title = "colormode"; - option_descriptor_array.option_descriptors[option].desc = "colormode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colormode"; + option_descriptors[option].title = "colormode"; + option_descriptors[option].desc = "colormode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 4: - option_descriptor_array.option_descriptors[option].name = "skipblankpages"; - option_descriptor_array.option_descriptors[option].title = "skipblankpages"; - option_descriptor_array.option_descriptors[option].desc = "skipblankpages"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "skipblankpages"; + option_descriptors[option].title = "skipblankpages"; + option_descriptors[option].desc = "skipblankpages"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 5: - option_descriptor_array.option_descriptors[option].name = "autostart"; - option_descriptor_array.option_descriptors[option].title = "autostart"; - option_descriptor_array.option_descriptors[option].desc = "autostart"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "autostart"; + option_descriptors[option].title = "autostart"; + option_descriptors[option].desc = "autostart"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 6: - option_descriptor_array.option_descriptors[option].name = "colordrop"; - option_descriptor_array.option_descriptors[option].title = "colordrop"; - option_descriptor_array.option_descriptors[option].desc = "colordrop"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colordrop"; + option_descriptors[option].title = "colordrop"; + option_descriptors[option].desc = "colordrop"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 7: - option_descriptor_array.option_descriptors[option].name = "colordropoutaggressiveness"; - option_descriptor_array.option_descriptors[option].title = "colordropoutaggressiveness"; - option_descriptor_array.option_descriptors[option].desc = "colordropoutaggressiveness"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colordropoutaggressiveness"; + option_descriptors[option].title = "colordropoutaggressiveness"; + option_descriptors[option].desc = "colordropoutaggressiveness"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 8: - option_descriptor_array.option_descriptors[option].name = "outputtype"; - option_descriptor_array.option_descriptors[option].title = "outputtype"; - option_descriptor_array.option_descriptors[option].desc = "outputtype"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "outputtype"; + option_descriptors[option].title = "outputtype"; + option_descriptors[option].desc = "outputtype"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 9: - option_descriptor_array.option_descriptors[option].name = "colorautobrightnessmode"; - option_descriptor_array.option_descriptors[option].title = "colorautobrightnessmode"; - option_descriptor_array.option_descriptors[option].desc = "colorautobrightnessmode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorautobrightnessmode"; + option_descriptors[option].title = "colorautobrightnessmode"; + option_descriptors[option].desc = "colorautobrightnessmode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 10: - option_descriptor_array.option_descriptors[option].name = "colorbalancemode"; - option_descriptor_array.option_descriptors[option].title = "colorbalancemode"; - option_descriptor_array.option_descriptors[option].desc = "colorbalancemode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorbalancemode"; + option_descriptors[option].title = "colorbalancemode"; + option_descriptors[option].desc = "colorbalancemode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 11: - option_descriptor_array.option_descriptors[option].name = "colorbalanceaggressiveness"; - option_descriptor_array.option_descriptors[option].title = "colorbalanceaggressiveness"; - option_descriptor_array.option_descriptors[option].desc = "colorbalanceaggressiveness"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorbalanceaggressiveness"; + option_descriptors[option].title = "colorbalanceaggressiveness"; + option_descriptors[option].desc = "colorbalanceaggressiveness"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 12: - option_descriptor_array.option_descriptors[option].name = "colorbalancered"; - option_descriptor_array.option_descriptors[option].title = "colorbalancered"; - option_descriptor_array.option_descriptors[option].desc = "colorbalancered"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorbalancered"; + option_descriptors[option].title = "colorbalancered"; + option_descriptors[option].desc = "colorbalancered"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 13: - option_descriptor_array.option_descriptors[option].name = "colorbalancegreen"; - option_descriptor_array.option_descriptors[option].title = "colorbalancegreen"; - option_descriptor_array.option_descriptors[option].desc = "colorbalancegreen"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorbalancegreen"; + option_descriptors[option].title = "colorbalancegreen"; + option_descriptors[option].desc = "colorbalancegreen"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 14: - option_descriptor_array.option_descriptors[option].name = "colorbalanceblue"; - option_descriptor_array.option_descriptors[option].title = "colorbalanceblue"; - option_descriptor_array.option_descriptors[option].desc = "colorbalanceblue"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "colorbalanceblue"; + option_descriptors[option].title = "colorbalanceblue"; + option_descriptors[option].desc = "colorbalanceblue"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 15: - option_descriptor_array.option_descriptors[option].name = "foregroundboldnessmode"; - option_descriptor_array.option_descriptors[option].title = "foregroundboldnessmode"; - option_descriptor_array.option_descriptors[option].desc = "foregroundboldnessmode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "foregroundboldnessmode"; + option_descriptors[option].title = "foregroundboldnessmode"; + option_descriptors[option].desc = "foregroundboldnessmode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 16: - option_descriptor_array.option_descriptors[option].name = "foregroundboldnessaggressiveness"; - option_descriptor_array.option_descriptors[option].title = "foregroundboldnessaggressiveness"; - option_descriptor_array.option_descriptors[option].desc = "foregroundboldnessaggressiveness"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "foregroundboldnessaggressiveness"; + option_descriptors[option].title = "foregroundboldnessaggressiveness"; + option_descriptors[option].desc = "foregroundboldnessaggressiveness"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 17: - option_descriptor_array.option_descriptors[option].name = "backgroundsmoothingmode"; - option_descriptor_array.option_descriptors[option].title = "backgroundsmoothingmode"; - option_descriptor_array.option_descriptors[option].desc = "backgroundsmoothingmode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "backgroundsmoothingmode"; + option_descriptors[option].title = "backgroundsmoothingmode"; + option_descriptors[option].desc = "backgroundsmoothingmode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 18: - option_descriptor_array.option_descriptors[option].name = "backgroundsmoothingaggressiveness"; - option_descriptor_array.option_descriptors[option].title = "backgroundsmoothingaggressiveness"; - option_descriptor_array.option_descriptors[option].desc = "backgroundsmoothingaggressiveness"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "backgroundsmoothingaggressiveness"; + option_descriptors[option].title = "backgroundsmoothingaggressiveness"; + option_descriptors[option].desc = "backgroundsmoothingaggressiveness"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 19: - option_descriptor_array.option_descriptors[option].name = "binarizationmode"; - option_descriptor_array.option_descriptors[option].title = "binarizationmode"; - option_descriptor_array.option_descriptors[option].desc = "binarizationmode"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "binarizationmode"; + option_descriptors[option].title = "binarizationmode"; + option_descriptors[option].desc = "binarizationmode"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 20: - option_descriptor_array.option_descriptors[option].name = "binarizationcontrast"; - option_descriptor_array.option_descriptors[option].title = "binarizationcontrast"; - option_descriptor_array.option_descriptors[option].desc = "binarizationcontrast"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "binarizationcontrast"; + option_descriptors[option].title = "binarizationcontrast"; + option_descriptors[option].desc = "binarizationcontrast"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 21: - option_descriptor_array.option_descriptors[option].name = "maxdocumentlength"; - option_descriptor_array.option_descriptors[option].title = "maxdocumentlength"; - option_descriptor_array.option_descriptors[option].desc = "maxdocumentlength"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "maxdocumentlength"; + option_descriptors[option].title = "maxdocumentlength"; + option_descriptors[option].desc = "maxdocumentlength"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; case 22: - option_descriptor_array.option_descriptors[option].name = "scansource"; - option_descriptor_array.option_descriptors[option].title = "scansource"; - option_descriptor_array.option_descriptors[option].desc = "ScanSoscansourceurce"; - option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; - option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; - option_descriptor_array.option_descriptors[option].constraint.string_list = NULL; + option_descriptors[option].name = "scansource"; + option_descriptors[option].title = "scansource"; + option_descriptors[option].desc = "ScanSoscansourceurce"; + option_descriptors[option].cap = SANE_CAP_SOFT_DETECT; + option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE; + option_descriptors[option].constraint.string_list = NULL; break; default: return NULL; @@ -297,8 +291,8 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( case 18: case 20: case 21: - option_descriptor_array.option_descriptors[option].type = SANE_TYPE_INT; - option_descriptor_array.option_descriptors[option].size = sizeof(SANE_Int); + option_descriptors[option].type = SANE_TYPE_INT; + option_descriptors[option].size = sizeof(SANE_Int); break; case 2: case 3: @@ -310,16 +304,16 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( case 17: case 19: case 22: - option_descriptor_array.option_descriptors[option].type = SANE_TYPE_STRING; - option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_NONE; - option_descriptor_array.option_descriptors[option].size = sizeof(SANE_String) * 50; + option_descriptors[option].type = SANE_TYPE_STRING; + option_descriptors[option].unit = SANE_UNIT_NONE; + option_descriptors[option].size = sizeof(SANE_String) * 50; break; default: return NULL; break; } - return &option_descriptor_array.option_descriptors[option]; + return &option_descriptors[option]; } SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle,