This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Improve Errno parsing of Win32 output
authorSteve Hay <steve.m.hay@googlemail.com>
Tue, 23 Sep 2014 12:51:32 +0000 (13:51 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Thu, 25 Sep 2014 07:29:35 +0000 (08:29 +0100)
This allows us to pluck "0xC038000FL" rather than "(0xC038000FL" out of
"(DWORD)(0xC038000FL)", which means we go into the hex case rather than
the eval case, and get the desired result (hex '0xC038000F' returns
3224895503, whereas eval '(0xC038000F' returns nothing).

Also allows for "((DWORD)(0xC038000FL))" and other existing formats.

ext/Errno/Errno_pm.PL

index ca954b7..579625d 100644 (file)
@@ -245,7 +245,7 @@ sub write_errno_pm {
            my($name,$expr);
            next unless ($name, $expr) = /"(.*?)"\s*\[\s*\[\s*(.*?)\s*\]\s*\]/;
            next if $name eq $expr;
-           $expr =~ s/\(?\(\s*[a-z_]\w*\s*\)([^\)]*)\)?/$1/i; # ((type)0xcafebabe) at alia
+           $expr =~ s/\(?\(\s*[a-z_]\w*\s*\)\(?([^\)]*)\)?\)?/$1/i; # ((type)0xcafebabe) at alia
            $expr =~ s/((?:0x)?[0-9a-fA-F]+)[luLU]+\b/$1/g; # 2147483647L et alia
            next if $expr =~ m/^[a-zA-Z]+$/; # skip some Win32 functions
            if($expr =~ m/^0[xX]/) {