]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/tracemunch
ncurses 6.1 - patch 20180303
[ncurses.git] / test / tracemunch
index a56c44ad9f4537ff50bb648e687175f101c9517b..1c9314321871f07aa0ef64d4d435af173a507bd9 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env perl
-# $Id: tracemunch,v 1.9 2017/05/07 19:59:08 tom Exp $
+# $Id: tracemunch,v 1.17 2017/12/23 17:51:31 tom Exp $
 ##############################################################################
 # Copyright (c) 1998-2005,2017 Free Software Foundation, Inc.                #
 #                                                                            #
@@ -42,12 +42,14 @@ our $waddnstr =
   "waddnstr\\(0x([[:xdigit:]]+),\"([^\"]+)\",[0-9]+\\) called {A_NORMAL}";
 
 our $scr_nums = 0;
+our $thr_nums = 0;
 our $try_nums = 0;
 our $win_nums = 0;
 our $curscr   = "";
 our $newscr   = "";
 our $stdscr   = "";
 our %scr_addr;
+our %thr_addr;
 our %try_addr;
 our %win_addr;
 
@@ -62,6 +64,10 @@ sub transaddr {
         $n = $scr_addr{$addr};
         $arg =~ s/\b$addr\b/screen$n/g;
     }
+    foreach my $addr ( keys %thr_addr ) {
+        $n = $thr_addr{$addr};
+        $arg =~ s/\b$addr\b/thread$n/g;
+    }
     foreach my $addr ( keys %try_addr ) {
         $n = $try_addr{$addr};
         $arg =~ s/\b$addr\b/tries_$n/g;
@@ -70,6 +76,15 @@ sub transaddr {
         $n = $win_addr{$addr};
         $arg =~ s/\b$addr\b/window$n/g;
     }
+    if ( $arg =~ /add_wch\((window\d+,)?0x[[:xdigit:]]+\)/i ) {
+        $arg =~ s/(0x[[:xdigit:]]+)[)]/\&wch)/i;
+    }
+    elsif ( $arg =~ /color_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){3}/i ) {
+        $arg =~ s/(,0x[[:xdigit:]]+){3}[)]/,\&r,\&g,\&b)/i;
+    }
+    elsif ( $arg =~ /pair_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){2}/i ) {
+        $arg =~ s/(,0x[[:xdigit:]]+){2}[)]/,\&fg,\&bg)/i;
+    }
 
     return $arg;
 }
@@ -77,10 +92,17 @@ sub transaddr {
 while (<STDIN>) {
     my $addr;
     my $n;
-    my $awaiting;
+    my $awaiting = "";
 
   CLASSIFY: {
 
+        my $thread = "";
+        if ( $_ =~ /^(0x[[:xdigit:]]+):/ ) {
+            $thr_addr{$1} = ++$thr_nums unless defined $thr_addr{$1};
+            $thread = "thread" . $thr_addr{$1} . ":";
+            $_ =~ s/^[^:]*://;
+        }
+
         # Transform window pointer addresses so it's easier to compare logs
         $awaiting = "curscr" if ( $_ =~ /creating curscr/ );
         $awaiting = "newscr" if ( $_ =~ /creating newscr/ );
@@ -105,10 +127,15 @@ while (<STDIN>) {
         elsif ( $_ =~ /^(\+ )*called {_nc_add_to_try\((0x[[:xdigit:]]+),/ ) {
             $try_addr{$2} = ++$try_nums unless defined $try_addr{$2};
         }
+        elsif ( $_ =~ /^(\+ )*_nc_alloc_screen_sp 0x([[:xdigit:]]+)/ ) {
+            $addr = "0x$2";
+            $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} );
+            $awaiting = "";
+        }
         elsif ( $_ =~ /^(\+ )*return }0x([[:xdigit:]]+)/ ) {
             $addr = "0x$2";
             if ( $awaiting eq "screen" ) {
-                $scr_addr{$addr} = ++$scr_nums;
+                $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} );
             }
         }
         elsif ( $_ =~ /^\.\.\.deleted win=0x([[:xdigit:]]+)/ ) {
@@ -180,7 +207,7 @@ while (<STDIN>) {
             print "${repeatcount} REPEATS OF $anyline";
         }
         else {
-            print $anyline;
+            print $thread . $anyline;
         }
         redo CLASSIFY if $_;