module Debian.Dpkg.PkgSpec (
pkgSpecParsePkg
) where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Foreign.Ptr (nullPtr)
import Foreign.C.String (withCString, peekCString)
import Foreign.Marshal.Utils (with)
import Control.Monad (liftM, join)
import Control.Monad.Loops (unfoldrM)
import qualified Data.ByteString as BS
import Debian.Dpkg.Types
type FIXME = C'dpkg_error
foreign import ccall unsafe "pkg_spec_parse_pkg" c'pkg_spec_parse_pkg
:: CString -> Ptr FIXME -> IO (Ptr C'pkginfo)
foreign import ccall unsafe "&pkg_spec_parse_pkg" p'pkg_spec_parse_pkg
:: FunPtr (CString -> Ptr FIXME -> IO (Ptr C'pkginfo))
pkgSpecParsePkg :: String -> IO C'pkginfo
pkgSpecParsePkg p = alloca $ \derr -> withCString p (\pcstr -> c'pkg_spec_parse_pkg pcstr derr) >>= peek