-----------------------------------------------------------------------------
--- $Id: Printf.lhs,v 1.3 2001/08/07 11:13:46 simonmar Exp $
+-- $Id: Printf.lhs,v 1.5 2002/03/14 17:09:46 simonmar Exp $
-- (c) Simon Marlow 1997-2001
-----------------------------------------------------------------------------
#if __GLASGOW_HASKELL__ < 500
> buf <- malloc bUFSIZE
-> snprintf buf (fromIntegral bUFSIZE) (packString format) num
+> snprintf buf (fromIntegral bUFSIZE) (packString format)
+> (realToFrac num)
> let s = unpackCString buf
> length s `seq` -- urk! need to force the string before we
> -- free the buffer. A better solution would
#else
-> allocaBytes bUFSIZE $ \buf -> do
-> snprintf buf (fromIntegral bUFSIZE) (packString format) num
-> peekCString buf
+> allocaBytes bUFSIZE $ \buf ->
+> withCString format $ \cformat -> do
+> snprintf buf (fromIntegral bUFSIZE) cformat
+> (realToFrac num)
+> peekCString buf
#endif
> if_maybe Nothing f = []
> if_maybe (Just s) f = f s
-> type PackedString = ByteArray Int
-
#if __GLASGOW_HASKELL__ < 500
-> foreign import unsafe snprintf :: Addr -> CSize -> PackedString -> Float -> IO ()
+> type PackedString = ByteArray Int
+> foreign import unsafe snprintf :: Addr -> CSize -> PackedString -> Double -> IO ()
#else
-> foreign import unsafe snprintf :: CString -> CSize -> PackedString -> Float -> IO ()
+> foreign import unsafe snprintf :: CString -> CSize -> CString -> Double -> IO ()
#endif