ngx-export 0.2.3.0 → 0.2.3.1
raw patch · 2 files changed
+37/−35 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- NgxExport.hs +36/−34
- ngx-export.cabal +1/−1
NgxExport.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell, ViewPatterns #-}+{-# LANGUAGE TemplateHaskell, ViewPatterns, PatternSynonyms #-} module NgxExport (module Foreign.C ,ngxExportSS@@ -31,6 +31,10 @@ import qualified Data.ByteString.Unsafe as B import qualified Data.ByteString.Lazy as L +pattern I l <- (fromIntegral -> l)+pattern PtrLen s l <- (s, I l)+pattern PtrLenFromMaybe s l <- (fromMaybe (nullPtr, -1) -> PtrLen s l)+ data NgxExport = SS (String -> String) | SSS (String -> String -> String) | SLS ([String] -> String)@@ -139,7 +143,7 @@ peekNgxStringArrayLen x n = sequence $ foldr (\k -> ((peekElemOff x k >>=- (\(NgxStrType (fromIntegral -> m) y) ->+ (\(NgxStrType (I m) y) -> peekCStringLen (y, m))) :)) [] [0 .. n - 1] pokeCStringLen :: CString -> CSize -> Ptr CString -> Ptr CSize -> IO ()@@ -149,7 +153,7 @@ toSingleBuffer (L.uncons -> Nothing) = return $ Just (nullPtr, 0) toSingleBuffer s = do- let (fromIntegral -> l) = L.length s+ let I l = L.length s t <- catchAlloc $ mallocBytes l if t /= nullPtr then do@@ -193,51 +197,49 @@ return $ l >>= Just . (,) t sS :: NgxExport -> CString -> CInt -> Ptr CString -> IO CInt-sS (SS f) x (fromIntegral -> n) p = do- (s, fromIntegral -> l) <- f <$> peekCStringLen (x, n)- >>= newCStringLen+sS (SS f) x (I n) p = do+ PtrLen s l <- f <$> peekCStringLen (x, n)+ >>= newCStringLen poke p s return l sSS :: NgxExport -> CString -> CInt -> CString -> CInt -> Ptr CString -> IO CInt-sSS (SSS f) x (fromIntegral -> n) y (fromIntegral -> m) p = do- (s, fromIntegral -> l) <- f <$> peekCStringLen (x, n)- <*> peekCStringLen (y, m)- >>= newCStringLen+sSS (SSS f) x (I n) y (I m) p = do+ PtrLen s l <- f <$> peekCStringLen (x, n)+ <*> peekCStringLen (y, m)+ >>= newCStringLen poke p s return l sLS :: NgxExport -> Ptr NgxStrType -> CInt -> Ptr CString -> IO CInt-sLS (SLS f) x (fromIntegral -> n) p = do- (s, fromIntegral -> l) <- f <$> peekNgxStringArrayLen x n- >>= newCStringLen+sLS (SLS f) x (I n) p = do+ PtrLen s l <- f <$> peekNgxStringArrayLen x n+ >>= newCStringLen poke p s return l yY :: NgxExport -> CString -> CInt -> Ptr CString -> IO CInt-yY (YY f) x (fromIntegral -> n) p = do+yY (YY f) x (I n) p = do s <- f <$> B.unsafePackCStringLen (x, n)- (fromMaybe (nullPtr, -1) -> (t, fromIntegral -> l)) <- toSingleBuffer s+ PtrLenFromMaybe t l <- toSingleBuffer s poke p t return l ioyY :: NgxExport -> CString -> CInt -> CInt -> CUInt -> Ptr CString -> Ptr CSize -> Ptr CUInt -> IO ()-ioyY (IOYY f) x (fromIntegral -> n) (fromIntegral -> fd)- ((/= 0) -> fstRun) p pl r =+ioyY (IOYY f) x (I n) (I fd) ((/= 0) -> fstRun) p pl r = void . async $ (do s <- (Right <$> (B.unsafePackCStringLen (x, n) >>= flip f fstRun)) `catch` \e -> return $ Left $ show (e :: SomeException) either (\s -> do- (x, fromIntegral -> l) <- newCStringLen s+ PtrLen x l <- newCStringLen s pokeCStringLen x l p pl poke r 1 ) (\s -> do- (fromMaybe (nullPtr, -1) -> (t, fromIntegral -> l)) <-- toSingleBuffer s+ PtrLenFromMaybe t l <- toSingleBuffer s pokeCStringLen t l p pl poke r 0 ) s@@ -245,47 +247,47 @@ `finally` ((fdWrite fd "0" >> closeFd fd) `catchIOError` const (return ())) bS :: NgxExport -> CString -> CInt -> IO CUInt-bS (BS f) x (fromIntegral -> n) =+bS (BS f) x (I n) = fromBool . f <$> peekCStringLen (x, n) bSS :: NgxExport -> CString -> CInt -> CString -> CInt -> IO CUInt-bSS (BSS f) x (fromIntegral -> n) y (fromIntegral -> m) =+bSS (BSS f) x (I n) y (I m) = (fromBool .) . f <$> peekCStringLen (x, n) <*> peekCStringLen (y, m) bLS :: NgxExport -> Ptr NgxStrType -> CInt -> IO CUInt-bLS (BLS f) x (fromIntegral -> n) =+bLS (BLS f) x (I n) = fromBool . f <$> peekNgxStringArrayLen x n bY :: NgxExport -> CString -> CInt -> IO CUInt-bY (BY f) x (fromIntegral -> n) =+bY (BY f) x (I n) = fromBool . f <$> B.unsafePackCStringLen (x, n) handler :: NgxExport -> CString -> CInt -> Ptr (Ptr NgxStrType) -> Ptr CInt -> Ptr CString -> Ptr CSize -> IO CInt-handler (Handler f) x (fromIntegral -> n) ps pls pt plt = do- (s, mt, fromIntegral -> st) <- f <$> B.unsafePackCStringLen (x, n)- (fromMaybe (nullPtr, -1) -> (t, fromIntegral -> l)) <- toBuffers s+handler (Handler f) x (I n) ps pls pt plt = do+ (s, mt, I st) <- f <$> B.unsafePackCStringLen (x, n)+ PtrLenFromMaybe t l <- toBuffers s poke ps t poke pls l- (smt, fromIntegral -> lmt) <- newCStringLen mt+ PtrLen smt lmt <- newCStringLen mt pokeCStringLen smt lmt pt plt return st defHandler :: NgxExport -> CString -> CInt -> Ptr (Ptr NgxStrType) -> IO CInt-defHandler (YY f) x (fromIntegral -> n) ps = do+defHandler (YY f) x (I n) ps = do s <- f <$> B.unsafePackCStringLen (x, n)- (fromMaybe (nullPtr, -1) -> (t, fromIntegral -> l)) <- toBuffers s+ PtrLenFromMaybe t l <- toBuffers s poke ps t return l unsafeHandler :: NgxExport -> CString -> CInt -> Ptr CString -> Ptr CSize -> Ptr CString -> Ptr CSize -> IO CInt-unsafeHandler (UnsafeHandler f) x (fromIntegral -> n) ps pls pt plt = do- (s, mt, fromIntegral -> st) <- f <$> B.unsafePackCStringLen (x, n)- (t, fromIntegral -> lt) <- B.unsafeUseAsCStringLen s return+unsafeHandler (UnsafeHandler f) x (I n) ps pls pt plt = do+ (s, mt, I st) <- f <$> B.unsafePackCStringLen (x, n)+ PtrLen t lt <- B.unsafeUseAsCStringLen s return pokeCStringLen t lt ps pls- (smt, fromIntegral -> lmt) <- B.unsafeUseAsCStringLen mt return+ PtrLen smt lmt <- B.unsafeUseAsCStringLen mt return pokeCStringLen smt lmt pt plt return st
ngx-export.cabal view
@@ -1,5 +1,5 @@ name: ngx-export-version: 0.2.3.0+version: 0.2.3.1 synopsis: Helper module for Nginx haskell module description: Helper module for <http://github.com/lyokha/nginx-haskell-module Nginx haskell module>