[perl #111638] fix -p on File::stat objects
authorTony Cook <tony@develop-help.com>
Fri, 30 Mar 2012 10:18:39 +0000 (21:18 +1100)
committerFather Chrysostomos <sprout@cpan.org>
Tue, 22 May 2012 00:51:56 +0000 (17:51 -0700)
lib/File/stat.pm
lib/File/stat.t

index 34c883b..90d53d7 100644 (file)
@@ -37,10 +37,14 @@ BEGIN {
         my $val = eval { &{"Fcntl::S_I\U$_"} };
         *{"_$_"} = defined $val ? sub { $_[0] & $val ? 1 : "" } : sub { "" };
     }
-    for (qw(SOCK CHR BLK REG DIR FIFO LNK)) {
+    for (qw(SOCK CHR BLK REG DIR LNK)) {
         *{"S_IS$_"} = defined eval { &{"Fcntl::S_IF$_"} }
             ? \&{"Fcntl::S_IS$_"} : sub { "" };
     }
+    # FIFO flag and macro don't quite follow the S_IF/S_IS pattern above
+    # RT #111638
+    *{"S_ISFIFO"} = defined &Fcntl::S_IFIFO
+      ? \&Fcntl::S_ISFIFO : sub { "" };
 }
 
 # from doio.c
index 382f43e..50981c6 100644 (file)
@@ -169,7 +169,6 @@ SKIP:
 
     my $pstat = File::stat::stat($rh);
     ok(!-p($stat), "-p should be false on a file");
-    local $TODO = "RT #111638 -p overload broken";
     ok(-p($pstat), "check -p detects a pipe");
 }