first try at decoding errors from binary
[vrDialog] / dumps / portmon-parse.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 my $in_read = 0;
6 my $wait = 0;
7 my $read = '';
8
9 while(<>) {
10         s/[\n\r]+$//;
11         if ( /IRP_MJ_WRITE.*:\s*(.*)/ ) {
12                 print "> $1\n";
13         } elsif ( /(IRP_MJ_READ|IOCTL_SERIAL_WAIT_ON_MASK)/ ) {
14                 $in_read++;
15                 print "#[$in_read] $_\n";
16         } elsif (  $in_read && /SUCCESS\s+Length\s+\d+:\s*([0-9a-fA-F\s]+)/ ) {
17                 $read .= $1;
18                 print "#<$in_read $_\n";
19                 my $len = hex($1) if ( $read =~ m/^([0-9a-f]{2})/i );
20                 print "#< $read [$len]\n";
21                 if ( length($read) >= ( $len * 3 - 1 ) ) {
22                         print "< $read\n";
23                         $in_read = 0;
24                         $read = '';
25                 }
26         } else {
27                 print "# $_\n";
28         }
29 }