diff options
author | bailey-guest <bailey-guest@alioth.debian.org> | 2010-12-21 16:11:05 +0300 |
---|---|---|
committer | bailey-guest <bailey-guest@alioth.debian.org> | 2010-12-21 16:11:05 +0300 |
commit | 31b2fb3cc81e615f1465358ad3def45b1eb5f63b (patch) | |
tree | 5691b5d5915d0a34f8681bd3b4576dc51d9061e3 /p/haskell-hinotify | |
parent | cfa8ac14230255643e31e0d03d2b65cf17930cc5 (diff) | |
download | DHG_packages-31b2fb3cc81e615f1465358ad3def45b1eb5f63b.tar.gz |
haskell-hinotify: move debian/ contents to ..
Diffstat (limited to 'p/haskell-hinotify')
-rw-r--r-- | p/haskell-hinotify/debian/LICENSE | 30 | ||||
-rw-r--r-- | p/haskell-hinotify/debian/README | 107 | ||||
-rwxr-xr-x | p/haskell-hinotify/debian/Setup.lhs | 3 | ||||
-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.cabal | 38 | ||||
-rwxr-xr-x | p/haskell-hinotify/debian/rules (renamed from p/haskell-hinotify/debian/debian/rules) | 0 | ||||
-rw-r--r-- | p/haskell-hinotify/debian/src/System/INotify.hsc | 333 | ||||
-rw-r--r-- | p/haskell-hinotify/debian/src/System/INotify/Masks.hsc | 93 | ||||
-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 © 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 |