Search for errno.h in more (semi)default locations
authorH.Merijn Brand <h.m.brand@xs4all.nl>
Mon, 2 Sep 2013 09:40:41 +0000 (11:40 +0200)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Fri, 8 Nov 2013 13:46:06 +0000 (14:46 +0100)
ext/Errno/Errno_pm.PL

index bb41e03..c2c84b6 100644 (file)
@@ -133,8 +133,10 @@ sub get_files {
             ) {
        # Some Linuxes have weird errno.hs which generate
        # no #file or #line directives
-       my $linux_errno_h = -e '/usr/include/errno.h' ?
-           '/usr/include/errno.h' : '/usr/local/include/errno.h';
+       my ($linux_errno_h) = grep { -e $_ } map { "$_/errno.h" }
+           "/usr/include", "/usr/local/include",
+           split / / => $Config{locincpth} or
+               die "Cannot find errno.h";
        $file{$linux_errno_h} = 1;
     } elsif ($^O eq 'haiku') {
        # hidden in a special place
@@ -252,8 +254,8 @@ sub write_errno_pm {
                $err{$name} = hex $expr;
            }
            else {
-           $err{$name} = eval $expr;
-       }
+               $err{$name} = eval $expr;
+           }
            delete $err{$name} unless defined $err{$name};
        }
        close(CPPO);
@@ -261,7 +263,7 @@ sub write_errno_pm {
 
     # escape $Config{'archname'}
     my $archname = $Config{'archname'};
-    $archname =~ s/([@%\$])/\\\1/g;
+    $archname =~ s/([@%\$])/\\$1/g;
 
     # Write Errno.pm