#include <sane/sane.h>
#include "kds_s2000w_handler.h"
+#define MAX_OPTION_COUNT 23
+
typedef struct {
- SANE_Option_Descriptor** option_descriptors;
+ SANE_Option_Descriptor* option_descriptors;
int length;
} option_descriptors;
void _init_option_descriptor_array()
{
- option_descriptor_array.option_descriptors = malloc(sizeof(SANE_Option_Descriptor**));
- option_descriptor_array.option_descriptors[0] = NULL;
- option_descriptor_array.length = 0;
+ option_descriptor_array.option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT);
+ option_descriptor_array.length = MAX_OPTION_COUNT;
}
void _free_option_descriptor_array()
{
- for (int i = 0; i < option_descriptor_array.length; i++) {
- free(option_descriptor_array.option_descriptors[i]);
- option_descriptor_array.option_descriptors[i] = NULL;
- }
free(option_descriptor_array.option_descriptors);
option_descriptor_array.option_descriptors = NULL;
}
const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
SANE_Handle handle, SANE_Int option)
{
- if (option_descriptor_array.length < (option + 1)) {
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.length++;
- }
-
switch (option) {
case 0:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 1:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 2:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 3:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 4:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 5:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 6:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 7:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 8:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 9:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 10:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 11:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 12:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 13:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 14:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 15:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 16:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 17:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 18:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 19:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 20:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 21:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
case 22:
- free(option_descriptor_array.option_descriptors[option]);
- option_descriptor_array.option_descriptors[option] = NULL;
- option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor));
- 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_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;
break;
default:
return NULL;
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_descriptor_array.option_descriptors[option].type = SANE_TYPE_INT;
+ option_descriptor_array.option_descriptors[option].size = sizeof(SANE_Int);
break;
case 2:
case 3:
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_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;
break;
default:
return NULL;
break;
}
- return option_descriptor_array.option_descriptors[option];
+ return &option_descriptor_array.option_descriptors[option];
}
SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle,