Fix Windows build with MinGW-w64's gcc-4.8.0
authorSteve Hay <steve.m.hay@googlemail.com>
Fri, 2 May 2014 16:34:40 +0000 (17:34 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Sat, 3 May 2014 14:18:32 +0000 (15:18 +0100)
The use of #defines like this:

#define ERROR_IPSEC_IKE_PROCESS_ERR_ID __MSABI_LONG(13834)
#define __MSABI_LONG(x)  x ## l

in new MinGW-w64 header files trips up Errno_pm.PL, causing hundreds of
warnings like this:

Bareword found where operator expected at (eval 22) line 1, near "13834l"
        (Missing operator before l?)

and hundreds of error values to go missing from Errno.pm.

This patch, from perl #121773, fixes that.

ext/Errno/Errno_pm.PL

index db8ada7..55ad01a 100644 (file)
@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker;
 use Config;
 use strict;
 
-our $VERSION = "1.20_02";
+our $VERSION = "1.20_03";
 
 my %err = ();
 
@@ -250,7 +250,7 @@ sub write_errno_pm {
            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/((?:0x)?[0-9a-fA-F]+)[LU]+\b/$1/g; # 2147483647L et 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]/) {
                $err{$name} = hex $expr;