summaryrefslogtreecommitdiff
path: root/p/haskell-hinotify
diff options
context:
space:
mode:
authorbailey-guest <bailey-guest@alioth.debian.org>2010-12-21 16:11:05 +0300
committerbailey-guest <bailey-guest@alioth.debian.org>2010-12-21 16:11:05 +0300
commit31b2fb3cc81e615f1465358ad3def45b1eb5f63b (patch)
tree5691b5d5915d0a34f8681bd3b4576dc51d9061e3 /p/haskell-hinotify
parentcfa8ac14230255643e31e0d03d2b65cf17930cc5 (diff)
downloadDHG_packages-31b2fb3cc81e615f1465358ad3def45b1eb5f63b.tar.gz
haskell-hinotify: move debian/ contents to ..
Diffstat (limited to 'p/haskell-hinotify')
-rw-r--r--p/haskell-hinotify/debian/LICENSE30
-rw-r--r--p/haskell-hinotify/debian/README107
-rwxr-xr-xp/haskell-hinotify/debian/Setup.lhs3
-rw-r--r--p/haskell-hinotify/debian/changelog (renamed from p/haskell-hinotify/debian/debian/changelog)0
-rw-r--r--p/haskell-hinotify/debian/compat (renamed from p/haskell-hinotify/debian/debian/compat)0
-rw-r--r--p/haskell-hinotify/debian/control (renamed from p/haskell-hinotify/debian/debian/control)0
-rw-r--r--p/haskell-hinotify/debian/copyright (renamed from p/haskell-hinotify/debian/debian/copyright)0
-rw-r--r--p/haskell-hinotify/debian/hinotify.cabal38
-rwxr-xr-xp/haskell-hinotify/debian/rules (renamed from p/haskell-hinotify/debian/debian/rules)0
-rw-r--r--p/haskell-hinotify/debian/src/System/INotify.hsc333
-rw-r--r--p/haskell-hinotify/debian/src/System/INotify/Masks.hsc93
-rw-r--r--p/haskell-hinotify/debian/watch (renamed from p/haskell-hinotify/debian/debian/watch)0
12 files changed, 0 insertions, 604 deletions
diff --git a/p/haskell-hinotify/debian/LICENSE b/p/haskell-hinotify/debian/LICENSE
deleted file mode 100644
index 97392a626..000000000
--- a/p/haskell-hinotify/debian/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
-Copyright (c) Lennart Kolmodin
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the author nor the names of his contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/p/haskell-hinotify/debian/README b/p/haskell-hinotify/debian/README
deleted file mode 100644
index 256662246..000000000
--- a/p/haskell-hinotify/debian/README
+++ /dev/null
@@ -1,107 +0,0 @@
-% hinotify: inotify for Haskell
-% Lennart Kolmodin <kolmodin@gentoo.org>
-% December 26, 2007-2009
-
-About
------
-
-hinotify, a library to [inotify] which has been part of the Linux kernel
-since 2.6.13.
-
-inotify provides file system event notification, simply add a watcher to
-a file or directory and get an event when it is accessed or modified.
-
-This module is named `hinotify`.
-
-See example code in the `examples` directory, distributed with the source
-code.
-
-[inotify]: http://www.kernel.org/pub/linux/kernel/people/rml/inotify/
-
-News
-----
-
-**hinotify 0.3.1**
-: * Use `inotify.h` from `glibc` rather than from the linux headers, as
- recommended upstream.
-
-**hinotify 0.3**
-: * Compiles with GHC 6.12, GHC 6.10.4, GHC 6.8.2 and GHC 6.6.1
-
-**hinotify 0.2**
-: * Updates to the API
- - Function names is now in semiCamelCase
- - Restructure event parameters to make it more consistent
- * Small test suit in `tests/`
- * Compiles with GHC 6.8.2 and GHC 6.6.1
- * Requires Cabal 1.2
-
-**hinotify 0.1**
-: Initial release
-
-API
----
-
-The API basically consists of:
-
- initINotify :: IO INotify
- addWatch :: INotify
- -> [EventVariety] -- different events to listen on
- -> FilePath -- file/directory to watch
- -> (Event -> IO ()) -- event handler
- -> IO WatchDescriptor
- removeWatch :: INotify -> WatchDescriptor -> IO ()
-
-A sample program:
-
- import System.Directory
- import System.IO
-
- import System.INotify
-
- main :: IO ()
- main = do
- inotify <- initINotify
- print inotify
- home <- getHomeDirectory
- wd <- addWatch
- inotify
- [Open,Close,Access,Modify,Move]
- home
- print
- print wd
- putStrLn "Listens to your home directory. Hit enter to terminate."
- getLine
- removeWatch inotify wd
-
-
-Download
---------
-
-The code is available via the [homepage], and via darcs:
-
- darcs get --partial http://haskell.org/~kolmodin/code/hinotify/
-
-The [API] is available online.
-
-I'm most grateful for feedback on the API, and what else you might have to
-suggest.
-
-Author
-------
-
-Lennart Kolmodin
-
-`kolmodin at gentoo.org`
-
-Legal
------
-
-This software is released under a BSD-style license. See LICENSE for
-more details.
-
-Copyright &copy; 2007 Lennart Kolmodin
-
-[homepage]: http://haskell.org/~kolmodin/code/hinotify/
-
-[API]: http://hackage.haskell.org/packages/archive/hinotify/latest/doc/html/System-INotify.html
diff --git a/p/haskell-hinotify/debian/Setup.lhs b/p/haskell-hinotify/debian/Setup.lhs
deleted file mode 100755
index 0901d60b5..000000000
--- a/p/haskell-hinotify/debian/Setup.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/runhaskell
-> import Distribution.Simple
-> main = defaultMain
diff --git a/p/haskell-hinotify/debian/debian/changelog b/p/haskell-hinotify/debian/changelog
index 025ce1825..025ce1825 100644
--- a/p/haskell-hinotify/debian/debian/changelog
+++ b/p/haskell-hinotify/debian/changelog
diff --git a/p/haskell-hinotify/debian/debian/compat b/p/haskell-hinotify/debian/compat
index 7f8f011eb..7f8f011eb 100644
--- a/p/haskell-hinotify/debian/debian/compat
+++ b/p/haskell-hinotify/debian/compat
diff --git a/p/haskell-hinotify/debian/debian/control b/p/haskell-hinotify/debian/control
index 8b0680a3f..8b0680a3f 100644
--- a/p/haskell-hinotify/debian/debian/control
+++ b/p/haskell-hinotify/debian/control
diff --git a/p/haskell-hinotify/debian/debian/copyright b/p/haskell-hinotify/debian/copyright
index 6e8863bbb..6e8863bbb 100644
--- a/p/haskell-hinotify/debian/debian/copyright
+++ b/p/haskell-hinotify/debian/copyright
diff --git a/p/haskell-hinotify/debian/hinotify.cabal b/p/haskell-hinotify/debian/hinotify.cabal
deleted file mode 100644
index 388d92088..000000000
--- a/p/haskell-hinotify/debian/hinotify.cabal
+++ /dev/null
@@ -1,38 +0,0 @@
-name: hinotify
-version: 0.3.1
-build-type: Simple
-synopsis: Haskell binding to INotify
-description:
- .
- This library provides a wrapper to the Linux Kernel's inotify feature,
- allowing applications to subscribe to notifications when a file is
- accessed or modified.
- .
-category: System
-homepage: http://haskell.org/~kolmodin/code/hinotify/README.html
-license: BSD3
-license-file: LICENSE
-author: Lennart Kolmodin
-maintainer: Lennart Kolmodin <kolmodin@gentoo.org>
-extra-source-files: README
-cabal-version: >= 1.2
-
-flag split-base
- description: Choose the new smaller, split-up base package.
-
-library
- build-depends: unix
- if flag(split-base)
- build-depends: base >= 3 && < 5, containers, directory
- else
- build-depends: base < 3
- extensions: ForeignFunctionInterface
-
- exposed-modules:
- System.INotify
- other-modules:
- System.INotify.Masks
-
- ghc-options: -fvia-C -Wall
-
- hs-source-dirs: src
diff --git a/p/haskell-hinotify/debian/debian/rules b/p/haskell-hinotify/debian/rules
index 683e77bcf..683e77bcf 100755
--- a/p/haskell-hinotify/debian/debian/rules
+++ b/p/haskell-hinotify/debian/rules
diff --git a/p/haskell-hinotify/debian/src/System/INotify.hsc b/p/haskell-hinotify/debian/src/System/INotify.hsc
deleted file mode 100644
index d0e3bc160..000000000
--- a/p/haskell-hinotify/debian/src/System/INotify.hsc
+++ /dev/null
@@ -1,333 +0,0 @@
------------------------------------------------------------------------------
--- |
--- Module : System.INotify
--- Copyright : (c) Lennart Kolmodin 2006
--- License : BSD3
--- Maintainer : kolmodin@dtek.chalmers.se
--- Stability : experimental
--- Portability : hc portable, linux only
---
--- A Haskell binding to INotify.
--- See <http://www.kernel.org/pub/linux/kernel/people/rml/inotify/> and @man
--- inotify@.
---
--- Use 'initINotify' to get a 'INotify', then use 'addWatch' to
--- add a watch on a file or directory. Select which events you're interested
--- in with 'EventVariety', which corresponds to the 'Event' events.
---
--- Use 'removeWatch' once you don't want to watch a file any more.
---
------------------------------------------------------------------------------
-
-module System.INotify
- ( initINotify
- , killINotify
- , withINotify
- , addWatch
- , removeWatch
- , INotify
- , WatchDescriptor
- , Event(..)
- , EventVariety(..)
- , Cookie
- ) where
-
-#include "sys/inotify.h"
-
-import Prelude hiding (init)
-import Control.Monad
-import Control.Concurrent
-import Control.Concurrent.MVar
-import Control.Exception (bracket)
-import Data.Maybe
-import Data.Map (Map)
-import qualified Data.Map as Map
-import Foreign.C
-import Foreign.Marshal
-import Foreign.Ptr
-import Foreign.Storable
-import System.Directory
-import System.IO
-import System.IO.Error
-#if __GLASGOW_HASKELL__ >= 612
-import GHC.IO.Handle.FD (fdToHandle')
-import GHC.IO.Device (IODeviceType(Stream))
-#else
-import GHC.Handle
-import System.Posix.Internals
-#endif
-
-import System.INotify.Masks
-
-type FD = CInt
-type WD = CInt
-type Masks = CUInt
-
-type EventMap = Map WD (Event -> IO ())
-type WDEvent = (WD, Event)
-
-data INotify = INotify Handle FD (MVar EventMap) ThreadId ThreadId
-data WatchDescriptor = WatchDescriptor Handle WD deriving Eq
-
-newtype Cookie = Cookie CUInt deriving (Eq,Ord)
-
-data FDEvent = FDEvent WD Masks CUInt{-Cookie-} (Maybe String) deriving (Eq, Show)
-
-data Event =
- -- | A file was accessed. @Accessed isDirectory file@
- Accessed
- { isDirectory :: Bool
- , maybeFilePath :: Maybe FilePath
- }
- -- | A file was modified. @Modified isDiroctory file@
- | Modified
- { isDirectory :: Bool
- , maybeFilePath :: Maybe FilePath
- }
- -- | A files attributes where changed. @Attributes isDirectory file@
- | Attributes
- { isDirectory :: Bool
- , maybeFilePath :: Maybe FilePath
- }
- -- | A file was closed. @Closed isDirectory file wasWriteable@
- | Closed
- { isDirectory :: Bool
- , maybeFilePath :: Maybe FilePath
- , wasWriteable :: Bool
- }
- -- | A file was opened. @Opened isDirectory maybeFilePath@
- | Opened
- { isDirectory :: Bool
- , maybeFilePath :: Maybe FilePath
- }
- -- | A file was moved away from the watched dir. @MovedFrom isDirectory from cookie@
- | MovedOut
- { isDirectory :: Bool
- , filePath :: FilePath
- , moveCookie :: Cookie
- }
- -- | A file was moved into the watched dir. @MovedTo isDirectory to cookie@
- | MovedIn
- { isDirectory :: Bool
- , filePath :: FilePath
- , moveCookie :: Cookie
- }
- -- | The watched file was moved. @MovedSelf isDirectory@
- | MovedSelf
- { isDirectory :: Bool
- }
- -- | A file was created. @Created isDirectory file@
- | Created
- { isDirectory :: Bool
- , filePath :: FilePath
- }
- -- | A file was deleted. @Deleted isDirectory file@
- | Deleted
- { isDirecotry :: Bool
- , filePath :: FilePath
- }
- -- | The file watched was deleted.
- | DeletedSelf
- -- | The file watched was unmounted.
- | Unmounted
- -- | The queue overflowed.
- | QOverflow
- | Ignored
- | Unknown FDEvent
- deriving (Eq, Show)
-
-data EventVariety
- = Access
- | Modify
- | Attrib
- | Close
- | CloseWrite
- | CloseNoWrite
- | Open
- | Move
- | MoveIn
- | MoveOut
- | MoveSelf
- | Create
- | Delete
- | DeleteSelf
- | OnlyDir
- | NoSymlink
- | MaskAdd
- | OneShot
- | AllEvents
- deriving Eq
-
-instance Show INotify where
- show (INotify _ fd _ _ _) =
- showString "<inotify fd=" .
- shows fd $ ">"
-
-instance Show WatchDescriptor where
- show (WatchDescriptor _ wd) = showString "<wd=" . shows wd $ ">"
-
-instance Show Cookie where
- show (Cookie c) = showString "<cookie " . shows c $ ">"
-
-initINotify :: IO INotify
-initINotify = do
- fd <- throwErrnoIfMinus1 "initINotify" c_inotify_init
- let desc = showString "<inotify handle, fd=" . shows fd $ ">"
-#if __GLASGOW_HASKELL__ < 608
- h <- openFd (fromIntegral fd) (Just Stream) False{-is_socket-} desc ReadMode True{-binary-}
-#else
- h <- fdToHandle' (fromIntegral fd) (Just Stream) False{-is_socket-} desc ReadMode True{-binary-}
-#endif
- em <- newMVar Map.empty
- (tid1, tid2) <- inotify_start_thread h em
- return (INotify h fd em tid1 tid2)
-
-addWatch :: INotify -> [EventVariety] -> FilePath -> (Event -> IO ()) -> IO WatchDescriptor
-addWatch inotify@(INotify h fd em _ _) masks fp cb = do
- is_dir <- doesDirectoryExist fp
- when (not is_dir) $ do
- file_exist <- doesFileExist fp
- when (not file_exist) $ do
- -- it's not a directory, and not a file...
- -- it doesn't exist
- ioError $ mkIOError doesNotExistErrorType
- "can't watch what isn't there"
- Nothing
- (Just fp)
- let mask = joinMasks (map eventVarietyToMask masks)
- em' <- takeMVar em
- wd <- withCString fp $ \fp_c ->
- throwErrnoIfMinus1 "addWatch" $
- c_inotify_add_watch (fromIntegral fd) fp_c mask
- let event = \e -> do
- when (OneShot `elem` masks) $
- rm_watch inotify wd
- case e of
- -- if the event is Ignored then we know for sure that
- -- this is the last event on that WatchDescriptor
- Ignored -> rm_watch inotify wd
- _ -> return ()
- cb e
- putMVar em (Map.insert wd event em')
- return (WatchDescriptor h wd)
- where
- eventVarietyToMask ev =
- case ev of
- Access -> inAccess
- Modify -> inModify
- Attrib -> inAttrib
- Close -> inClose
- CloseWrite -> inCloseWrite
- CloseNoWrite -> inCloseNowrite
- Open -> inOpen
- Move -> inMove
- MoveIn -> inMovedTo
- MoveOut -> inMovedFrom
- MoveSelf -> inMoveSelf
- Create -> inCreate
- Delete -> inDelete
- DeleteSelf-> inDeleteSelf
- OnlyDir -> inOnlydir
- NoSymlink -> inDontFollow
- MaskAdd -> inMaskAdd
- OneShot -> inOneshot
- AllEvents -> inAllEvents
-
-removeWatch :: INotify -> WatchDescriptor -> IO ()
-removeWatch (INotify _ fd _ _ _) (WatchDescriptor _ wd) = do
- _ <- throwErrnoIfMinus1 "removeWatch" $
- c_inotify_rm_watch (fromIntegral fd) wd
- return ()
-
-rm_watch :: INotify -> WD -> IO ()
-rm_watch (INotify _ _ em _ _) wd =
- modifyMVar_ em (return . Map.delete wd)
-
-read_events :: Handle -> IO [WDEvent]
-read_events h =
- let maxRead = 16385 in
- allocaBytes maxRead $ \buffer -> do
- _ <- hWaitForInput h (-1) -- wait forever
- r <- hGetBufNonBlocking h buffer maxRead
- read_events' buffer r
- where
- read_events' :: Ptr a -> Int -> IO [WDEvent]
- read_events' _ r | r <= 0 = return []
- read_events' ptr r = do
- wd <- (#peek struct inotify_event, wd) ptr :: IO CInt
- mask <- (#peek struct inotify_event, mask) ptr :: IO CUInt
- cookie <- (#peek struct inotify_event, cookie) ptr :: IO CUInt
- len <- (#peek struct inotify_event, len) ptr :: IO CUInt
- nameM <- if len == 0
- then return Nothing
- else fmap Just $ peekCString ((#ptr struct inotify_event, name) ptr)
- let event_size = (#size struct inotify_event) + (fromIntegral len)
- event = cEvent2Haskell (FDEvent wd mask cookie nameM)
- rest <- read_events' (ptr `plusPtr` event_size) (r - event_size)
- return (event:rest)
- cEvent2Haskell :: FDEvent
- -> WDEvent
- cEvent2Haskell fdevent@(FDEvent wd mask cookie nameM)
- = (wd, event)
- where
- event
- | isSet inAccess = Accessed isDir nameM
- | isSet inModify = Modified isDir nameM
- | isSet inAttrib = Attributes isDir nameM
- | isSet inClose = Closed isDir nameM (isSet inCloseWrite)
- | isSet inOpen = Opened isDir nameM
- | isSet inMovedFrom = MovedOut isDir name (Cookie cookie)
- | isSet inMovedTo = MovedIn isDir name (Cookie cookie)
- | isSet inMoveSelf = MovedSelf isDir
- | isSet inCreate = Created isDir name
- | isSet inDelete = Deleted isDir name
- | isSet inDeleteSelf = DeletedSelf
- | isSet inUnmount = Unmounted
- | isSet inQOverflow = QOverflow
- | isSet inIgnored = Ignored
- | otherwise = Unknown fdevent
- isDir = isSet inIsdir
- isSet bits = maskIsSet bits mask
- name = fromJust nameM
-
-inotify_start_thread :: Handle -> MVar EventMap -> IO (ThreadId, ThreadId)
-inotify_start_thread h em = do
- chan_events <- newChan
- tid1 <- forkIO (dispatcher chan_events)
- tid2 <- forkIO (start_thread chan_events)
- return (tid1,tid2)
- where
- start_thread :: Chan [WDEvent] -> IO ()
- start_thread chan_events = do
- events <- read_events h
- writeChan chan_events events
- start_thread chan_events
- dispatcher :: Chan [WDEvent] -> IO ()
- dispatcher chan_events = do
- events <- readChan chan_events
- mapM_ runHandler events
- dispatcher chan_events
- runHandler :: WDEvent -> IO ()
- runHandler (_, e@QOverflow) = do -- send overflows to all handlers
- handlers <- readMVar em
- flip mapM_ (Map.elems handlers) $ \handler ->
- catch (handler e) (\_ -> return ()) -- supress errors
- runHandler (wd, event) = do
- handlers <- readMVar em
- let handlerM = Map.lookup wd handlers
- case handlerM of
- Nothing -> putStrLn "runHandler: couldn't find handler" -- impossible?
- Just handler -> catch (handler event) (\_ -> return ())
-
-killINotify :: INotify -> IO ()
-killINotify (INotify h _ _ tid1 tid2) =
- do killThread tid1
- killThread tid2
- hClose h
-
-withINotify :: (INotify -> IO a) -> IO a
-withINotify = bracket initINotify killINotify
-
-foreign import ccall unsafe "sys/inotify.h inotify_init" c_inotify_init :: IO CInt
-foreign import ccall unsafe "sys/inotify.h inotify_add_watch" c_inotify_add_watch :: CInt -> CString -> CUInt -> IO CInt
-foreign import ccall unsafe "sys/inotify.h inotify_rm_watch" c_inotify_rm_watch :: CInt -> CInt -> IO CInt
diff --git a/p/haskell-hinotify/debian/src/System/INotify/Masks.hsc b/p/haskell-hinotify/debian/src/System/INotify/Masks.hsc
deleted file mode 100644
index 2f27d9f10..000000000
--- a/p/haskell-hinotify/debian/src/System/INotify/Masks.hsc
+++ /dev/null
@@ -1,93 +0,0 @@
-module System.INotify.Masks
- ( inAccess
- , inModify
- , inAttrib
- , inCloseWrite
- , inCloseNowrite
- , inOpen
- , inMovedFrom
- , inMovedTo
- , inMoveSelf
- , inCreate
- , inDelete
- , inDeleteSelf
- , inUnmount
- , inQOverflow
- , inIgnored
- , inClose
- , inMove
- , inOnlydir
- , inDontFollow
- , inMaskAdd
- , inIsdir
- , inOneshot
- , inAllEvents
- , maskIsSet
- , joinMasks
- , Mask
- ) where
-
-import Data.Bits
-import Data.Maybe
-import Foreign.C.Types
-
-#include "sys/inotify.h"
-
-data Mask
- = UserSpace CUInt
- | Extra CUInt
- | Helper CUInt
- | Special CUInt
- | All CUInt
- deriving (Eq,Ord)
-
-maskIsSet :: Mask -> CUInt -> Bool
-maskIsSet mask cuint =
- value mask .&. cuint > 0
-
-value :: Mask -> CUInt
-value (UserSpace i) = i
-value (Extra i) = i
-value (Helper i) = i
-value (Special i) = i
-value (All i) = i
-
-instance Show Mask where
- show mask =
- fromJust $ lookup mask [
- (inAccess, "IN_ACCESS"),
- (inModify, "IN_MODIFY"),
- (inAttrib, "IN_ATTRIB"),
- (inClose, "IN_CLOSE"),
- (inCloseWrite, "IN_CLOSE_WRITE"),
- (inCloseNowrite, "IN_CLOSE_NOWRITE"),
- (inOpen, "IN_OPEN"),
- (inMove, "IN_MOVE"),
- (inMovedFrom, "IN_MOVED_FROM"),
- (inMovedTo, "IN_MOVED_TO"),
- (inMoveSelf, "IN_MOVE_SELF"),
- (inCreate, "IN_CREATE"),
- (inDelete, "IN_DELETE"),
- (inDeleteSelf, "IN_DELETE_SELF"),
- (inUnmount, "IN_UNMOUNT"),
- (inQOverflow, "IN_Q_OVERFLOW"),
- (inIgnored, "IN_IGNORED"),
- (inClose, "IN_CLOSE"),
- (inIsdir, "IN_ISDIR"),
- (inOneshot, "IN_ONESHOT")]
-
-joinMasks :: [Mask] -> CUInt
-joinMasks = foldr (.|.) 0 . map value
-
-#enum Mask, UserSpace, IN_ACCESS, IN_MODIFY, IN_ATTRIB, IN_CLOSE_WRITE
-#enum Mask, UserSpace, IN_CLOSE_NOWRITE, IN_OPEN, IN_MOVED_FROM, IN_MOVED_TO
-#enum Mask, UserSpace, IN_CREATE, IN_DELETE, IN_DELETE_SELF, IN_MOVE_SELF
-
-#enum Mask, Extra, IN_UNMOUNT, IN_Q_OVERFLOW, IN_IGNORED
-
-#enum Mask, Helper, IN_CLOSE, IN_MOVE
-
-#enum Mask, Special, IN_ONLYDIR, IN_DONT_FOLLOW, IN_MASK_ADD, IN_ISDIR
-#enum Mask, Special, IN_ONESHOT
-
-#enum Mask, All, IN_ALL_EVENTS
diff --git a/p/haskell-hinotify/debian/debian/watch b/p/haskell-hinotify/debian/watch
index f3b2c0b59..f3b2c0b59 100644
--- a/p/haskell-hinotify/debian/debian/watch
+++ b/p/haskell-hinotify/debian/watch