]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
skip header to read data
authorBastian Dehn <hhaalo@arcor.de>
Sat, 10 Feb 2024 06:34:20 +0000 (07:34 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 10 Feb 2024 12:48:09 +0000 (13:48 +0100)
src/kds_s2000w_net.c

index 3e348329566dbb155d278e72aca670c530cc488d..c372a2a4d32da90ae82a2b9882712d5a61957849 100644 (file)
@@ -15,6 +15,24 @@ int scan_started = 0;
 int readed_bytes_per_line = 0;
 int readed_lines = 0;
 
+int _sane_kds_s2000w_net_find_first_data_byte(const char* data)
+{
+       const int header_spaces = 3;
+       const char space = 0x0a;
+       int space_count = 0;
+       int byte_count = 0;
+
+       while(space_count < header_spaces) {
+               if (data[byte_count] == space) {
+                       space_count++;
+               }
+
+               byte_count++;
+       }
+
+       return byte_count;
+}
+
 SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
 {
        *version_code = SANE_VERSION_CODE(1, 0, 0);
@@ -228,7 +246,12 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
        SANE_Int max_length, SANE_Int* length)
 {
        printf("is all scanned: %i\n", current_metadata.scanned_all_complete);
-       char* image_data = (char*) current_metadata.image;
+
+       int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(current_metadata.image);
+
+       if (read_size <= 0) {
+               read_size += skip_header_bytes;
+       }
 
        if (readed_lines >= current_metadata.lines ) {
                printf("Image is loaded\n");
@@ -258,7 +281,7 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
        }
 
        *length = maxlen;
-       memcpy(data, current_metadata.image + read_size, *length);
+       memcpy(data, current_metadata.image + skip_header_bytes + read_size, *length);
 
        readed_bytes_per_line += *length;
        read_size += *length;