hfsevents 0.1.1 → 0.1.2
raw patch · 4 files changed
+29/−1 lines, 4 files
Files
- System/OSX/FSEvents.hs +19/−0
- cbits/c_fsevents.c +5/−0
- cbits/c_fsevents.h +4/−0
- hfsevents.cabal +1/−1
System/OSX/FSEvents.hs view
@@ -16,6 +16,8 @@ , eventFlagItemRenamed, eventFlagItemModified, eventFlagItemFinderInfoMod , eventFlagItemChangeOwner, eventFlagItemXattrMod , eventFlagItemIsFile, eventFlagItemIsDir, eventFlagItemIsSymlink+ -- query api support+ , fileLevelEventsSupported, osVersion ) where import Control.Concurrent@@ -25,6 +27,7 @@ import Data.Bits import Data.Serialize.Get import Data.Word+import Data.Int import Foreign.C.String import Foreign.C.Types import Foreign.Marshal.Alloc@@ -170,6 +173,18 @@ stop = hClose h >> return () readHeader = liftM3 (,,) getWord64host getWord64host getWord64host +osVersion :: IO (Integer, Integer, Integer)+osVersion = alloca $ \major -> do+ alloca $ \minor -> do+ alloca $ \bugfix -> do+ c_osVersion major minor bugfix+ liftM3 (,,) (peekfi major) (peekfi minor) (peekfi bugfix)+ where+ peekfi = fmap fromIntegral . peek++fileLevelEventsSupported :: IO Bool+fileLevelEventsSupported = fmap (>= (10,7,0)) osVersion+ foreign import ccall safe "c_fsevents.h createWatch" c_createWatch :: Ptr (Ptr CChar) -> CInt -> Word32@@ -181,4 +196,8 @@ foreign import ccall safe "c_fsevents.h destroyWatch" c_destroyWatch :: Ptr CWatch -> IO ()+foreign import ccall safe "c_fsevents.h osVersion" c_osVersion :: Ptr Int32+ -> Ptr Int32+ -> Ptr Int32+ -> IO ()
cbits/c_fsevents.c view
@@ -96,3 +96,8 @@ free(w); } +void osVersion(SInt32 *majorVersion, SInt32 *minorVersion, SInt32 *bugFixVersion) {+ Gestalt(gestaltSystemVersionMajor, majorVersion);+ Gestalt(gestaltSystemVersionMinor, minorVersion);+ Gestalt(gestaltSystemVersionBugFix, bugFixVersion);+}
cbits/c_fsevents.h view
@@ -21,5 +21,9 @@ int destroyWatch(watch* w); +void osVersion( SInt32 *majorVersion+ , SInt32 *minorVersion+ , SInt32 *bugFixVersion);+ #endif
hfsevents.cabal view
@@ -1,5 +1,5 @@ name: hfsevents-version: 0.1.1+version: 0.1.2 synopsis: File/folder watching for OS X homepage: http://github.com/luite/hfsevents license: BSD3