on master help sign in
Add some file functions
a5ee4deEdwin Brady
libs/prelude/Prelude.idr+20
@@ -500,6 +500,26 @@ partial
500do_fread : Ptr -> IO String
500do_fread : Ptr -> IO String
501do_fread h = prim_fread h
501do_fread h = prim_fread h
502
502
503+fgetc : File -> IO Char
504+fgetc (FHandle h) = return (cast !(mkForeign (FFun "fgetc" [FPtr] FInt) h))
505+
506+fflush : File -> IO ()
507+fflush (FHandle h) = mkForeign (FFun "fflush" [FPtr] FUnit) h
508+
509+do_popen : String -> String -> IO Ptr
510+do_popen f m = mkForeign (FFun "popen" [FString, FString] FPtr) f m
511+
512+popen : String -> Mode -> IO File
513+popen f m = do ptr <- do_popen f (modeStr m)
514+ return (FHandle ptr)
515+ where
516+ modeStr Read = "r"
517+ modeStr Write = "w"
518+ modeStr ReadWrite = "r+"
519+
520+pclose : File -> IO ()
521+pclose (FHandle h) = mkForeign (FFun "pclose" [FPtr] FUnit) h
522+
503-- mkForeign (FFun "idris_readStr" [FPtr, FPtr] (FAny String))
523-- mkForeign (FFun "idris_readStr" [FPtr, FPtr] (FAny String))
504-- prim__vm h
524-- prim__vm h
505
525