]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change descriptor init method
authorBastian Dehn <hhaalo@arcor.de>
Sun, 22 Mar 2026 10:39:16 +0000 (11:39 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 22 Mar 2026 10:39:16 +0000 (11:39 +0100)
src/kds_s2000w_option_descriptors.c

index db0d71f9c6a32b416a816c1d6b9860393414dcc5..7e5a3b74f9bde9bc6b8326b4d5bcf07a4bd415c1 100644 (file)
@@ -1442,6 +1442,28 @@ option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout_respo
 /*******************************************************************************
  * profiles
  ******************************************************************************/
+SANE_Status _kds_s2000w_option_descriptor_init_profile(descriptor_fn* fn, size_t size)
+{
+       kds_s2000w_option_descriptors = malloc(sizeof(option_descriptors_t));
+       if (kds_s2000w_option_descriptors == NULL)
+               return SANE_STATUS_NO_MEM;
+
+       kds_s2000w_option_descriptors->size = size;
+       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;
+       }
+
+
+       for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) {
+               kds_s2000w_option_descriptors->descriptors[i] = fn[i]();
+       }
+
+       return _kds_s2000w_option_descriptor_validate();
+}
+
 SANE_Status _kds_s2000w_option_descriptors_init_min_profile()
 {
        descriptor_fn fn[] = {
@@ -1459,20 +1481,8 @@ SANE_Status _kds_s2000w_option_descriptors_init_min_profile()
                _kds_s2000w_option_descriptor_autostart
        };
 
-       kds_s2000w_option_descriptors->size = sizeof(fn) / sizeof(descriptor_fn);;
-       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;
-       }
-
-
-       for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) {
-               kds_s2000w_option_descriptors->descriptors[i] = fn[i]();
-       }
-
-       return _kds_s2000w_option_descriptor_validate();
+       size_t size = sizeof(fn) / sizeof(descriptor_fn);
+       return _kds_s2000w_option_descriptor_init_profile(fn, size);
 }
 
 SANE_Status _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile()
@@ -1506,20 +1516,8 @@ SANE_Status _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile()
                _kds_s2000w_option_descriptor_autostart
        };
 
-       kds_s2000w_option_descriptors->size = sizeof(fn) / sizeof(descriptor_fn);
-       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;
-       }
-
-       for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) {
-               kds_s2000w_option_descriptors->descriptors[i] = fn[i]();
-       }
-
-
-       return _kds_s2000w_option_descriptor_validate();
+       size_t size = sizeof(fn) / sizeof(descriptor_fn);
+       return _kds_s2000w_option_descriptor_init_profile(fn, size);
 }
 
 SANE_Status _kds_s2000w_option_descriptors_init_full_profile()
@@ -1575,19 +1573,8 @@ SANE_Status _kds_s2000w_option_descriptors_init_full_profile()
                _kds_s2000w_option_descriptor_document_feeder_timeout_response
        };
 
-       kds_s2000w_option_descriptors->size = sizeof(fn) / sizeof(descriptor_fn);
-       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;
-       }
-
-       for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) {
-               kds_s2000w_option_descriptors->descriptors[i] = fn[i]();
-       }
-
-       return _kds_s2000w_option_descriptor_validate();
+       size_t size = sizeof(fn) / sizeof(descriptor_fn);
+       return _kds_s2000w_option_descriptor_init_profile(fn, size);
 }
 
 /*******************************************************************************
@@ -1595,10 +1582,6 @@ SANE_Status _kds_s2000w_option_descriptors_init_full_profile()
  ******************************************************************************/
 SANE_Status kds_s2000w_option_descriptors_init(profile_t profile)
 {
-       kds_s2000w_option_descriptors = malloc(sizeof(option_descriptors_t));
-       if (kds_s2000w_option_descriptors == NULL)
-               return SANE_STATUS_NO_MEM;
-
        switch (profile) {
        case PROFILE_FULL:
                return _kds_s2000w_option_descriptors_init_full_profile();