]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change get metadata with return type
authorBastian Dehn <hhaalo@arcor.de>
Mon, 20 Oct 2025 17:38:53 +0000 (19:38 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 20 Oct 2025 17:38:53 +0000 (19:38 +0200)
src/kds_s2000w_handler.c
src/kds_s2000w_image_converter.h
src/kds_s2000w_image_converter_netpbm.c
tests/kds_s2000w_image_converter_tests.c

index 8b9a7ce8396cd12cbb530d1f894e262df60551a6..ffa5286f3e0aac52a89fc050ecae0e888473c320 100644 (file)
@@ -341,18 +341,19 @@ void kds_s2000w_handler_get_current_metadata(handler_t* h, metadata_t* params)
        if (h->image->data == NULL)
                return;
 
-       image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
-       if (mdata == NULL)
+       blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h);
+       if (scanner_image == NULL)
                return;
 
-       blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h);
-       if (scanner_image == NULL) {
-               free(mdata);
-               mdata = NULL;
+       image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(scanner_image);
+       if (mdata == NULL) {
+               free(scanner_image->data);
+               scanner_image->data = NULL;
+               free(scanner_image);
+               scanner_image = NULL;
                return;
        }
 
-       kds_s2000w_image_converter_metadata_from_scanner_image(scanner_image, mdata);
        kds_s2000w_image_converter_to_pnm(scanner_image, (blobdata_t*) h->image);
        kds_s2000w_debug_printf_int(DEBUG, "size of pnm image", h->image->size);
        h->scan_status->read_bytes = _kds_s2000w_handler_find_first_data_byte(h->image);
index f4af84257f492c230ba3e4c5e6919fcf508a1c91..9f3fa3822eb1846d72c0d7f8ccbdd1d198bf0808 100644 (file)
@@ -14,7 +14,7 @@ typedef struct {
        uint8_t depth;
 } image_metadata_t;
 
-void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata);
+image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image);
 void kds_s2000w_image_converter_to_pnm(blobdata_t* in, blobdata_t* out);
 
 #endif
\ No newline at end of file
index 3277d26e594307a766356dc8dafd12c92f6846bb..67766308165d7de9362face5195d691f316014a4 100644 (file)
@@ -281,27 +281,33 @@ void _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(j_decompress_ptr cinfo
        decompress_data = NULL;
 }
 
-void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata)
+image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image)
 {
        kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_metadata_from_scanner_image");
 
        if (image->size < 2)
-               return;
+               return NULL;
+
+       image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
+       if (mdata == NULL)
+               return NULL;
 
        if (kds_s2000w_image_type_check_is_pnm(image))  {
                _kds_s2000w_image_converter_pnm_metadata(image, mdata);
-               return;
+               return mdata;
        }
 
        if (kds_s2000w_image_type_check_is_jpeg(image)) {
                _kds_s2000w_image_converter_jpeg_metadata(image, mdata);
-               return;
+               return mdata;
        }
 
        if (kds_s2000w_image_type_check_is_tiff(image)) {
                _kds_s2000w_image_converter_tiff_metadata(image, mdata);
-               return;
+               return mdata;
        }
+
+       return NULL;
 }
 
 void _kds_s2000w_image_converter_jpg_to_pnm(blobdata_t* in, blobdata_t* out)
index 5f69920ff8eeb285bdecd171174a6b7b0cf06907..931c7896f66ad0b52fd7cd1735921a126113a9f3 100644 (file)
@@ -35,7 +35,8 @@ void get_metadata_from_image_test()
        for (uint32_t i = 11; i < 17; i++) {
                image_data[i] = (char) 0xff;
        }
-       image_metadata_t* mdata = malloc(sizeof(image_metadata_t));
+
+       image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(image);
        if (mdata == NULL) {
                free(image->data);
                image->data = NULL;
@@ -43,11 +44,6 @@ void get_metadata_from_image_test()
                image = NULL;
                return;
        }
-       mdata->width = 0;
-       mdata->height = 0;
-       mdata->depth = 0;
-
-       kds_s2000w_image_converter_metadata_from_scanner_image(image, mdata);
 
        assert_int_equal(mdata->width, 2);
        assert_int_equal(mdata->height, 1);