packages feed

bini 0.1.2 → 0.1.3

raw patch · 2 files changed

+15/−12 lines, 2 files

Files

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: