@@ -503,11 +503,17 @@ do_fread h = prim_fread h
503fgetc : File -> IO Char
503fgetc : File -> IO Char
504fgetc (FHandle h) = return (cast !(mkForeign (FFun "fgetc" [FPtr] FInt) h))
504fgetc (FHandle h) = return (cast !(mkForeign (FFun "fgetc" [FPtr] FInt) h))
506+fgetc' : File -> IO (Maybe Char)
508+ = do x <- mkForeign (FFun "fgetc" [FPtr] FInt) h
509+ if (x < 0) then return Nothing
510+ else return (Just (cast x))
506fflush : File -> IO ()
512fflush : File -> IO ()
507fflush (FHandle h) = mkForeign (FFun "fflush" [FPtr] FUnit) h
513fflush (FHandle h) = mkForeign (FFun "fflush" [FPtr] FUnit) h
509do_popen : String -> String -> IO Ptr
515do_popen : String -> String -> IO Ptr
510−do_popen f m = mkForeign (FFun "popen" [FString, FString] FPtr) f m
516+do_popen f m = mkForeign (FFun "do_popen" [FString, FString] FPtr) f m
512popen : String -> Mode -> IO File
518popen : String -> Mode -> IO File
513popen f m = do ptr <- do_popen f (modeStr m)
519popen f m = do ptr <- do_popen f (modeStr m)
@@ -552,6 +558,10 @@ ferror : File -> IO Bool
552ferror (FHandle h) = do err <- do_ferror h
558ferror (FHandle h) = do err <- do_ferror h
553 return (not (err == 0))
559 return (not (err == 0))
561+fpoll : File -> IO Bool
562+fpoll (FHandle h) = do p <- mkForeign (FFun "fpoll" [FPtr] FInt) h
556nullPtr : Ptr -> IO Bool
566nullPtr : Ptr -> IO Bool
557nullPtr p = do ok <- mkForeign (FFun "isNull" [FPtr] FInt) p
567nullPtr p = do ok <- mkForeign (FFun "isNull" [FPtr] FInt) p