{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} import Database.LMDB import Database.LMDB.Raw import PackUtf8 import Control.Applicative import qualified Data.ByteString.Char8 as B import Data.ByteString.Char8 (ByteString) import Data.Word import Foreign.Storable import Foreign.Ptr import Foreign.ForeignPtr import Data.ByteString.Internal import Foreign.Marshal.Utils import Control.Exception import System.Environment main = do args <- map packUtf8 <$> getArgs if length args < 2 then error "Usage: newtbl " else do let env = unpackUtf8 (args !! 0) let lastone = if length args > 2 then case B.readInteger (args !! 2) of Nothing -> 0 Just (n,"") -> n else 0 tbls <- flip mapM [0..lastone] $ \_ -> do withDBSDo env $ \dbs -> snd <$> newTbl dbs (args !! 1) [] mapM_ B.putStrLn tbls