Corrected FILENO implementation to return undef if stream is closed otherwise -1.
chansen [Thu, 8 Mar 2012 12:49:39 +0000 (13:49 +0100)]
perl/FCGI.pm
perl/FCGI.xs

index e984e70..9105528 100644 (file)
@@ -68,12 +68,6 @@ sub TIEHANDLE {
     Carp::croak(q/Operation 'TIEHANDLE' not supported on FCGI::Stream handle/);
 }
 
-# Some things (e.g. IPC::Run) use fileno to determine if a filehandle is open,
-# so we return a defined, but meaningless value. (-1 being the error return
-# value from the syscall in c, meaning it can never be a valid fd no)
-# Probably a better alternative would be to return the fcgi stream fd.
-sub FILENO { -1 }
-
 1;
 
 =pod
index cb89d24..c12e608 100644 (file)
@@ -478,6 +478,15 @@ EOF(stream, called=0)
   OUTPUT:
     RETVAL
 
+void
+FILENO(stream)
+    FCGI::Stream stream;
+  CODE:
+    if (FCGX_HasSeenEOF(stream) != 0)
+        XSRETURN_UNDEF;
+    else
+        XSRETURN_IV(-1);
+
 bool
 CLOSE(stream)
     FCGI::Stream stream;