/src/Flock.hsc

http://github.com/Eelis/geordi · Unknown · 16 lines · 11 code · 5 blank · 0 comment · 0 complexity · 336a034f76c6af85ee67663637f0b9ac MD5 · raw file

  1. {-# LANGUAGE UnicodeSyntax, ForeignFunctionInterface #-}
  2. module Flock (exclusive) where
  3. import System.Posix.Types
  4. import Foreign.C
  5. import Prelude (IO, ($))
  6. #include <sys/file.h>
  7. foreign import ccall unsafe "flock" c_flock :: CInt ? CInt ? IO CInt
  8. flock :: CInt ? CInt ? IO ()
  9. flock fd op = throwErrnoIfMinus1_ "flock" $ c_flock fd op
  10. exclusive :: Fd ? IO ()
  11. exclusive (Fd fd) = flock fd (#const LOCK_EX)