% ------------------------------------------------------------------------------
-% $Id: PrelIOBase.lhs,v 1.28 2000/09/25 12:58:39 simonpj Exp $
+% $Id: PrelIOBase.lhs,v 1.29 2000/11/07 10:42:56 simonmar Exp $
%
% (c) The University of Glasgow, 1994-2000
%
import PrelBase
import PrelNum ( fromInteger ) -- Integer literals
import PrelMaybe ( Maybe(..) )
-import PrelAddr ( Addr(..) )
+import PrelAddr ( Addr(..), nullAddr )
import PrelShow
import PrelList
import PrelDynamic
of the following:
-}
data Handle__Type
- = ErrorHandle IOException
- | ClosedHandle
+ = ClosedHandle
| SemiClosedHandle
| ReadHandle
| WriteHandle
instance Show Handle__Type where
showsPrec p t =
case t of
- ErrorHandle iot -> showString "error " . showsPrec p iot
ClosedHandle -> showString "closed"
SemiClosedHandle -> showString "semi-closed"
ReadHandle -> showString "readable"
showHdl ht cont =
case ht of
ClosedHandle -> showsPrec p ht . showString "}\n"
- ErrorHandle _ -> showsPrec p ht . showString "}\n"
_ -> cont
showBufMode :: FILE_OBJECT -> BufferMode -> ShowS
foreign import "libHS_cbits" "getErrStr__" unsafe getErrStr__ :: IO Addr
foreign import "libHS_cbits" "getErrNo__" unsafe getErrNo__ :: IO Int
foreign import "libHS_cbits" "getErrType__" unsafe getErrType__ :: IO Int
+
+malloc :: Int -> IO Addr
+malloc sz = do
+ a <- _malloc sz
+ if (a == nullAddr)
+ then ioException (IOError Nothing ResourceExhausted "malloc" "")
+ else return a
+
+foreign import "malloc" unsafe _malloc :: Int -> IO Addr
-foreign import "libHS_cbits" "allocMemory__" unsafe
- allocMemory__ :: Int -> IO Addr
foreign import "libHS_cbits" "getBufSize" unsafe
getBufSize :: FILE_OBJECT -> IO Int
foreign import "libHS_cbits" "setBuf" unsafe