develooper Front page | perl.perl5.porters | Postings from July 2011

Re: [perl #94988] splain does not recognise %u

Thread Previous | Thread Next
From:
Matthew Horsfall
Date:
July 31, 2011 19:46
Subject:
Re: [perl #94988] splain does not recognise %u
Message ID:
CAJ0K8bh8QQRz0oCQTeKNKfsrorG-9L0L+NkB1xPatgvUeni26w@mail.gmail.com
From fcb24c55df000b4db01552fd1756940757a950db Mon Sep 17 00:00:00 2001
From: Matthew Horsfall (alh) <wolfsage@gmail.com>
Date: Sun, 31 Jul 2011 22:42:22 -0400
Subject: [PATCH] RT #94988 - Support for %u in diagnostics.pm's printf()-format parser

---
 lib/diagnostics.pm |    8 ++++----
 lib/diagnostics.t  |    9 ++++++++-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/diagnostics.pm b/lib/diagnostics.pm
index f2d5429..60c96ea 100644
--- a/lib/diagnostics.pm
+++ b/lib/diagnostics.pm
@@ -410,22 +410,22 @@ my %msg;
 	# Since we strip "\.\n" when we search a warning, strip it here as well
 	$header =~ s/\.?$//;
 
-        my @toks = split( /(%l?[dx]|%c|%(?:\.\d+)?[fs])/, $header );
+        my @toks = split( /(%l?[dx]|%u|%c|%(?:\.\d+)?[fs])/, $header );
 	if (@toks > 1) {
             my $conlen = 0;
             for my $i (0..$#toks){
                 if( $i % 2 ){
                     if(      $toks[$i] eq '%c' ){
                         $toks[$i] = '.';
-                    } elsif( $toks[$i] eq '%d' ){
+                    } elsif( $toks[$i] =~ /^%(?:d|u)$/ ){
                         $toks[$i] = '\d+';
                     } elsif( $toks[$i] =~ '^%(?:s|.*f)$' ){
                         $toks[$i] = $i == $#toks ? '.*' : '.*?';
                     } elsif( $toks[$i] =~ '%.(\d+)s' ){
                         $toks[$i] = ".{$1}";
-                     } elsif( $toks[$i] =~ '^%l*x$' ){
+                    } elsif( $toks[$i] =~ '^%l*x$' ){
                         $toks[$i] = '[\da-f]+';
-                   }
+                    }
                 } elsif( length( $toks[$i] ) ){
                     $toks[$i] = quotemeta $toks[$i];
                     $conlen += length( $toks[$i] );
diff --git a/lib/diagnostics.t b/lib/diagnostics.t
index b5db34d..31a5802 100644
--- a/lib/diagnostics.t
+++ b/lib/diagnostics.t
@@ -5,7 +5,7 @@ BEGIN {
     @INC = 'lib';
 }
 
-use Test::More tests => 8;
+use Test::More tests => 9;
 
 BEGIN {
     my $w;
@@ -54,3 +54,10 @@ seek STDERR, 0,0;
 $warning = '';
 warn "Execution of -e aborted due to compilation errors.\n";
 like $warning, qr/The final summary message/, 'Periods at end of line';
+
+
+# Test for %d/%u
+seek STDERR, 0,0;
+$warning = '';
+warn "Bad arg length for us, is 4, should be 42";
+like $warning, qr/In C parlance/, '%u works';
-- 
1.7.0.4


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About