{----------------------------------------------------------------- (c) 2008-2009 Markus Dittrich This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 3 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License Version 3 for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --------------------------------------------------------------------} -- | this module parses the SLOT info of a package module Parsers.Slot ( get_slot , try_get_slot ) where -- imports import qualified Data.ByteString as B(ByteString) import Prelude import System.FilePath.Posix(()) -- local imports import Helpers.ByteString(remove_last_newline) import Helpers.FileIO(read_file, try_read_file) -- | open the SLOT info of a package and return as a -- ByteString get_slot :: FilePath -> IO B.ByteString get_slot p = read_file (p "SLOT") >>= \item -> return $ remove_last_newline item -- | same as get_slot but uses try_read so we can handle -- failure in opening a SLOT file during execution try_get_slot :: FilePath -> IO (Maybe B.ByteString) try_get_slot p = try_read_file (p "SLOT") >>= \item -> case item of Just v -> return . Just $ remove_last_newline v _ -> return item