bini 0.1.2 → 0.1.3
raw patch · 2 files changed
+15/−12 lines, 2 files
Files
- bini.cabal +3/−3
- src/Data/Bini.hs +12/−9
bini.cabal view
@@ -1,7 +1,7 @@ Name: bini-Version: 0.1.2-Description: A collection of various methods for reading and writing bini files. -Synopsis: A manipulation library for b(inary)ini files used in windows programms like the game Freelancer.+Version: 0.1.3+Description: A manipulation library for b(inary)ini files used in windows programms like the game Freelancer.+Synopsis: A collection of various methods for reading and writing bini files. License: BSD3 License-file: LICENSE Copyright: (c) Tobias Weise 2016
src/Data/Bini.hs view
@@ -6,11 +6,10 @@ -- Parsing example: -- -- @--- r <- readBiniFromFile "loadouts.ini"+-- r <- readBiniFromFile \"loadouts.ini\" -- case r of--- Nothing -> putStrLn "No file, no output!"--- Just bini -> do--- writeFile "loadouts.ini.txt" (show bini)+-- Left s -> print s+-- Right bini -> writeFile \"loadouts.ini.txt\" (show bini) -- @ -- -- Outputfile:@@ -84,14 +83,18 @@ -- |Parse a Binifile-readBiniFromFile :: String -> IO (Maybe Bini)+-- |Parse a Binifile+readBiniFromFile :: String -> IO (Either String Bini) readBiniFromFile path = do content <- BL.readFile path let (isBini, version, strtableoff) = runGet parseHeader content- let (header_body, table) = BL.splitAt (fromIntegral strtableoff) content- let body = BL.drop 12 header_body- let secs = runGet (parseSections table) body- return $ Just $ Bini version secs+ if "BINI"== bstr2str (BL.take 4 content) then do+ let (header_body, table) = BL.splitAt (fromIntegral strtableoff) content+ let body = BL.drop 12 header_body+ let secs = runGet (parseSections table) body+ return $ Right $ Bini version secs+ else do+ return $ Left $ path++"is not a Bini-file!" --Parsing the Bini-file: