, 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}
#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}