Matthias Kilian writes:

> Add a binding to pledge(2) to package 'unix'.
>
> To use it:
>
> - run ghc with -package unix
>
> - import System.OpenBSD.Process ( pledge )
>
> - call the pledge function as needed. It returns an IO () computation,
>   which will throw an exception in case of an error.
>
> Notes:
>
> - I'll also merge the -main and -doc subpackages, so no bump yet.
>
> - The module System.OpenBSD.Process may end in its own package in the
>   future, but for now it's probably to put it into the unix package.
>
>
> Comments (and tests) are welcome.

I believe there is a patch missing to copy files/Process.hs into
libraries/unix/dist-install/build/System/OpenBSD/Process.hs

>
> Ciao,
>       Kili
>
> Index: files/Process.hsc
> ===================================================================
> RCS file: files/Process.hsc
> diff -N files/Process.hsc
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ files/Process.hsc 19 Jan 2016 07:58:19 -0000
> @@ -0,0 +1,29 @@
> +{-# LANGUAGE Safe #-}
> +
> +module System.OpenBSD.Process ( pledge ) where
> +
> +import Foreign
> +import Foreign.C
> +import System.Posix.Internals ( withFilePath )
> +
> +pledge :: String -> [FilePath] -> IO ()
> +
> +pledge promises paths =
> +  withCString promises $ \cproms ->
> +  withPaths2Array0 paths $ \paths_arr ->
> +  throwErrnoIfMinus1_ "pledge" (c_pledge cproms paths_arr)
> +
> +withPaths2Array0 :: [FilePath] -> (Ptr (Ptr CChar) -> IO a) -> IO a
> +
> +-- If paths is the empty list, just pass a nullPtr instead of an
> +-- array containing only a nullPtr. This avoids EINVAL while the
> +-- paths feature of pledge(2) is still disabled.
> +withPaths2Array0 [] f = f nullPtr
> +
> +withPaths2Array0 paths f =
> +  withMany withFilePath paths $ \cstrs ->
> +  withArray0 nullPtr cstrs $ \paths_arr ->
> +  f paths_arr
> +
> +foreign import ccall unsafe "unistd.h pledge"
> +  c_pledge :: CString -> Ptr CString -> IO CInt
> Index: patches/patch-libraries_unix_unix_cabal
> ===================================================================
> RCS file: patches/patch-libraries_unix_unix_cabal
> diff -N patches/patch-libraries_unix_unix_cabal
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-libraries_unix_unix_cabal   19 Jan 2016 07:58:19 -0000
> @@ -0,0 +1,12 @@
> +$OpenBSD$
> +--- libraries/unix/unix.cabal.orig   Sun Jan  4 23:56:26 2015
> ++++ libraries/unix/unix.cabal        Tue Jan 19 00:42:33 2016
> +@@ -109,6 +109,8 @@ library
> +         System.Posix.Terminal
> +         System.Posix.Terminal.ByteString
> + 
> ++        System.OpenBSD.Process
> ++
> +     other-modules:
> +         System.Posix.Directory.Common
> +         System.Posix.DynamicLinker.Common

Reply via email to