]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add check file type
authorBastian Dehn <hhaalo@arcor.de>
Sun, 26 Jan 2025 11:25:25 +0000 (12:25 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 26 Jan 2025 11:25:25 +0000 (12:25 +0100)
src/kds_s2000w_image_converter_netpbm.c

index 5f83beb3ff9a5f4c9c2197717128ca3a9f526b20..8e3bb81a98aa8d59788a9f4f135e8c5ac747312e 100644 (file)
 #define RGB 3
 #define GRAY 1
 
+int _kds_s2000w_image_converter_is_pnm(blobdata* image)
+{
+       if (image->size < 2)
+               return 0;
+
+       char* image_data = (char*) image->data;
+       if (strncmp(image_data, "P6", 2) == 0)
+               return 1;
+
+       return strncmp(image_data, "P4", 2) == 0;
+}
+
+int _kds_s2000w_image_converter_is_jpeg(blobdata* image)
+{
+       if (image->size < 2)
+               return 0;
+
+       const char first_byte = 0xff;
+       const char second_byte = 0xd8;
+
+       char* image_data = (char*) image->data;
+       return image_data[0] == first_byte && image_data[1] == second_byte;
+}
+
 int _kds_s2000w_image_converter_find_char(blobdata* image, int start, const char cfind)
 {
        char* image_data = (char*) image->data;
@@ -165,13 +189,15 @@ void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata* image, ima
        if (image->size < 2)
                return;
 
-       if (strncmp(image->data, "P6", 2) == 0
-               || strncmp (image->data, "P4", 2) == 0) {
+       if (_kds_s2000w_image_converter_is_pnm(image))  {
                _kds_s2000w_image_converter_pnm_metadata(image, mdata);
                return;
        }
 
-       _kds_s2000w_image_converter_jpeg_metadata(image, mdata);
+       if (_kds_s2000w_image_converter_is_jpeg(image)) {
+               _kds_s2000w_image_converter_jpeg_metadata(image, mdata);
+               return;
+       }
 
        return;
 }