module Codec.Archive.Common ( actFree , actFreeCallback ) where import Codec.Archive.Foreign import Foreign.Ptr -- | Read from an 'Archive' and then free it actFree :: (Ptr Archive -> IO a) -> Ptr Archive -> IO a actFree fact a = fact a <* archive_free a actFreeCallback :: (Ptr Archive -> IO a) -> (Ptr Archive, IO ()) -> IO a actFreeCallback fact (a, freeAct) = fact a <* archive_free a <* freeAct