import Foreign.C.Types
import Foreign.Ptr
import Foreign.Storable
-import Prelude.Unicode
import System.IO
import System.Posix.IO
import System.Posix.Types
withCStrOrNull Nothing f = f nullPtr
withCStrOrNull (Just s) f = withCString s f
-failOnError ∷ Monad m ⇒ String → CInt → m ()
-failOnError msg rv
- | rv ≤ 0 = fail msg
- | otherwise = return ()
+failOnError ∷ Monad m ⇒ String → (CInt → Bool) → CInt → m CInt
+failOnError msg isErr rv
+ | isErr rv = fail msg
+ | otherwise = return rv