[project @ 2000-03-22 12:01:57 by rrt]
[ghc-hetmet.git] / ghc / lib / std / IO.lhs
index fbb5cd3..67a491f 100644 (file)
@@ -83,17 +83,35 @@ module IO (
     readIO,                   -- :: Read a => String -> IO a
     readLn,                   -- :: Read a => IO a
 
-#ifndef __HUGS__
-    -- extensions
-    hPutBuf,
-    hPutBufBA,
-#endif
-    slurpFile
-
   ) where
 
 #ifdef __HUGS__
 import Ix(Ix)
+import privileged Prelude ( IORef
+                         , unsafePerformIO
+                         , prelCleanupAfterRunAction
+                         , copy_String_to_cstring
+                         , primIntToChar
+                         , primWriteCharOffAddr
+                         , nullAddr
+                         , newIORef
+                         , writeIORef
+                         , readIORef
+                         , nh_close
+                         , nh_errno
+                         , nh_stdin
+                         , nh_stdout
+                         , nh_stderr
+                         , nh_flush
+                         , nh_open
+                         , nh_free
+                         , nh_read
+                         , nh_write
+                         , nh_filesize
+                         , nh_iseof
+                         )
+                       
+
 #else
 --import PrelST
 import PrelBase
@@ -731,24 +749,24 @@ mkErr h msg
 stdin
    = Handle {
         name = "stdin",
-        file = primRunST nh_stdin,
-        mut  = primRunST (newIORef (Handle_Mut { state = HOpen })),
+        file = unsafePerformIO nh_stdin,
+        mut  = unsafePerformIO (newIORef (Handle_Mut { state = HOpen })),
         mode = ReadMode
      }
 
 stdout
    = Handle {
         name = "stdout",
-        file = primRunST nh_stdout,
-        mut  = primRunST (newIORef (Handle_Mut { state = HOpen })),
+        file = unsafePerformIO nh_stdout,
+        mut  = unsafePerformIO (newIORef (Handle_Mut { state = HOpen })),
         mode = WriteMode
      }
 
 stderr
    = Handle {
         name = "stderr",
-        file = primRunST nh_stderr,
-        mut  = primRunST (newIORef (Handle_Mut { state = HOpen })),
+        file = unsafePerformIO nh_stderr,
+        mut  = unsafePerformIO (newIORef (Handle_Mut { state = HOpen })),
         mode = WriteMode
      }
 
@@ -790,7 +808,7 @@ data HState = HOpen | HSemiClosed | HClosed
 -- once handles appear in the list.
 
 allHandles :: IORef [Handle]
-allHandles  = primRunST (newIORef [])
+allHandles  = unsafePerformIO (newIORef [])
 
 elemWriterHandles :: FilePath -> IO Bool
 elemAllHandles    :: FilePath -> IO Bool