[project @ 1998-08-11 21:39:29 by sof]
authorsof <unknown>
Tue, 11 Aug 1998 21:39:29 +0000 (21:39 +0000)
committersof <unknown>
Tue, 11 Aug 1998 21:39:29 +0000 (21:39 +0000)
Moved unvectorize to here from PosixUtil

ghc/lib/misc/Util.lhs

index d09c6d7..6f134bf 100644 (file)
@@ -87,17 +87,13 @@ module Util (
        , assertPanic
 #endif {- COMPILING_GHC -}
 
-    ) where
-
-#if defined(COMPILING_GHC)
+       , unvectorize        
 
-CHK_Ubiq() -- debugging consistency check
-IMPORT_1_3(List(zipWith4))
+    ) where
 
-import Pretty
-#else
 import List(zipWith4)
-#endif
+import PackedString ( unpackCStringIO )
+import Addr
 
 infixr 9 `thenCmp`
 \end{code}
@@ -814,3 +810,19 @@ assertPanic file line = panic ("ASSERT failed! file "++file++", line "++show lin
 
 #endif {- COMPILING_GHC -}
 \end{code}
+
+Turn a NULL-terminated vector of null-terminated strings into a string list
+(ToDo: create a module of common marshaling functions)
+
+\begin{code}
+unvectorize :: Addr -> Int -> IO [String]
+unvectorize ptr n
+  | str == ``NULL'' = return []
+  | otherwise = do
+       x  <- unpackCStringIO str
+       xs <- unvectorize ptr (n+1)
+       return (x : xs)
+  where
+   str = indexAddrOffAddr ptr n
+
+\end{code}