detect end of bitmap from ~DG total bytes
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 6 Feb 2012 18:29:49 +0000 (19:29 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 6 Feb 2012 18:29:49 +0000 (19:29 +0100)
ZPL2pbm.pl

index e312665..ead04d8 100755 (executable)
@@ -35,11 +35,20 @@ while( $line ) {
 
                my $w = $row_bytes * 2; # hex digits
 
 
                my $w = $row_bytes * 2; # hex digits
 
-               my $out;
+               my $out = '';
                # ZPL decompress
                my $repeat = 0;
                foreach my $p ( 0 .. length($data) - 1 ) {
                # ZPL decompress
                my $repeat = 0;
                foreach my $p ( 0 .. length($data) - 1 ) {
+
+                       if ( length($out) == $total_bytes * 2 ) {
+                               warn "END of bitmap\n";
+                               $line = substr($data,$p);
+                               slurp_line;
+                               last;
+                       };
+
                        my $c = substr($data,$p,1);
                        my $c = substr($data,$p,1);
+
                        if ( $c eq ',' ) {
                                my $l = $w - ( length($out) % $w );
                                $l = $w if $l == 0;
                        if ( $c eq ',' ) {
                                my $l = $w - ( length($out) % $w );
                                $l = $w if $l == 0;
@@ -70,10 +79,7 @@ while( $line ) {
                                        $out .= $c;
                                }
                        } else {
                                        $out .= $c;
                                }
                        } else {
-                               warn "ABORT: offset $p data [$c]";
-                               $line = $c . substr($data,$p);
-                               slurp_line;
-                               last;
+                               die "ABORT: offset $p data [$c]";
                        }
 
                        warn "## $repeat [$c] out = ",length($out),$/;
                        }
 
                        warn "## $repeat [$c] out = ",length($out),$/;