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