]> gitweb @ CieloNegro.org - bindings-apr.git/commitdiff
more bindings
authorPHO <pho@cielonegro.org>
Sun, 8 Aug 2010 12:52:39 +0000 (21:52 +0900)
committerPHO <pho@cielonegro.org>
Sun, 8 Aug 2010 12:52:39 +0000 (21:52 +0900)
Bindings/APR/Tables.hsc [new file with mode: 0644]
Bindings/APR/User.hsc [new file with mode: 0644]
bindings-apr.cabal
cbits/helper_apr_user.c [new file with mode: 0644]

diff --git a/Bindings/APR/Tables.hsc b/Bindings/APR/Tables.hsc
new file mode 100644 (file)
index 0000000..78f88ab
--- /dev/null
@@ -0,0 +1,67 @@
+#include <bindings.dsl.h>
+#include <apr_tables.h>
+
+module Bindings.APR.Tables where
+#strict_import
+import Bindings.APR
+import Bindings.APR.Pools
+
+#opaque_t apr_table_t
+
+#starttype struct apr_array_header_t
+#  field pool    , Ptr <apr_pool_t>
+#  field elt_size, CInt
+#  field nelts   , CInt
+#  field nalloc  , CInt
+#  field elts    , Ptr CChar
+#stoptype
+
+#starttype struct apr_table_entry_t
+#  field key, Ptr CChar
+#  field val, Ptr CChar
+#  field key_checksum, <apr_uint32_t>
+#stoptype
+
+#ccall apr_table_elts    , Ptr <apr_table_t> -> IO (Ptr <apr_array_header_t>)
+
+#ccall apr_is_empty_table, Ptr <apr_table_t> -> IO CInt
+#ccall apr_is_empty_array, Ptr <apr_array_header_t> -> IO CInt
+
+#ccall apr_array_make    , Ptr <apr_pool_t> -> CInt -> CInt -> IO (Ptr <apr_array_header_t>)
+#ccall apr_array_push    , Ptr <apr_array_header_t> -> IO (Ptr ())
+
+-- It's impossible to wrap around APR_ARRAY_IDX and APR_ARRAY_PUSH as
+-- they take C types as their arguments.
+
+#ccall apr_array_pop     , Ptr <apr_array_header_t> -> IO (Ptr ())
+#ccall apr_array_clear   , Ptr <apr_array_header_t> -> IO ()
+#ccall apr_array_cat     , Ptr <apr_array_header_t> -> Ptr <apr_array_header_t> -> IO ()
+#ccall apr_array_copy    , Ptr <apr_pool_t> -> Ptr <apr_array_header_t> -> IO (Ptr <apr_array_header_t>)
+#ccall apr_array_copy_hdr, Ptr <apr_pool_t> -> Ptr <apr_array_header_t> -> IO (Ptr <apr_array_header_t>)
+#ccall apr_array_append  , Ptr <apr_pool_t> -> Ptr <apr_array_header_t> -> Ptr <apr_array_header_t> -> IO (Ptr <apr_array_header_t>)
+#ccall apr_array_pstrcat , Ptr <apr_pool_t> -> Ptr <apr_array_header_t> -> CChar -> IO (Ptr CChar)
+
+#ccall apr_table_make  , Ptr <apr_pool_t> -> CInt -> IO (Ptr <apr_table_t>)
+#ccall apr_table_copy  , Ptr <apr_pool_t> -> Ptr <apr_table_t> -> IO (Ptr <apr_table_t>)
+#ccall apr_table_clone , Ptr <apr_pool_t> -> Ptr <apr_table_t> -> IO (Ptr <apr_table_t>)
+#ccall apr_table_clear , Ptr <apr_table_t> -> IO ()
+#ccall apr_table_get   , Ptr <apr_table_t> -> Ptr CChar -> IO (Ptr CChar)
+#ccall apr_table_set   , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_setn  , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_unset , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_merge , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_mergen, Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_add   , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_addn  , Ptr <apr_table_t> -> Ptr CChar -> Ptr CChar -> IO ()
+#ccall apr_table_overlay, Ptr <apr_pool_t> -> Ptr <apr_table_t> -> Ptr <apr_table_t> -> IO (Ptr <apr_table_t>)
+
+#callback apr_table_do_callback_fn_t, Ptr () -> Ptr CChar -> Ptr CChar -> IO CInt
+
+-- It's impossible to wrap around apr_table_do and apr_table_vdo as
+-- they take varargs.
+
+#num APR_OVERLAP_TABLES_SET
+#num APR_OVERLAP_TABLES_MERGE
+
+#ccall apr_table_overlap , Ptr <apr_table_t> -> Ptr <apr_table_t> -> CUInt -> IO ()
+#ccall apr_table_compress, Ptr <apr_table_t> -> CUInt -> IO ()
diff --git a/Bindings/APR/User.hsc b/Bindings/APR/User.hsc
new file mode 100644 (file)
index 0000000..b4b229f
--- /dev/null
@@ -0,0 +1,24 @@
+#include <bindings.dsl.h>
+#include <apr_user.h>
+
+module Bindings.APR.User where
+#strict_import
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+
+#integral_t apr_uid_t
+#integral_t apr_gid_t
+
+#if APR_HAS_USER
+
+#  ccall   apr_uid_current     , Ptr <apr_uid_t> -> Ptr <apr_gid_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  ccall   apr_uid_name_get    , Ptr (Ptr CChar) -> <apr_uid_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  ccall   apr_uid_get         , Ptr <apr_uid_t> -> Ptr <apr_gid_t> -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  ccall   apr_uid_homepath_get, Ptr (Ptr CChar) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  cinline apr_uid_compare     , <apr_uid_t> -> <apr_uid_t> -> IO <apr_status_t>
+
+#  ccall   apr_gid_name_get    , Ptr (Ptr CChar) -> <apr_gid_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  ccall   apr_gid_get         , Ptr <apr_gid_t> -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#  cinline apr_gid_compare     , <apr_gid_t> -> <apr_gid_t> -> IO <apr_status_t>
+
+#endif
\ No newline at end of file
index 7ef774c6f015505a11de056bca7ce5fa6fffb7aa..4bb86d54664a4e8e94ce36c747c3a35341799ddf 100644 (file)
@@ -38,13 +38,16 @@ Library
         Bindings.APR.ErrNo
         Bindings.APR.Pools
         Bindings.APR.Proc.Mutex
+        Bindings.APR.Tables
         Bindings.APR.Thread.Mutex
         Bindings.APR.Thread.RWLock
+        Bindings.APR.User
 
     C-Sources:
 --        cbits/helper_apr_anylock.c
         cbits/helper_apr_errno.c
         cbits/helper_apr_pools.c
+        cbits/helper_apr_user.c
 
     Extensions:
         ForeignFunctionInterface
diff --git a/cbits/helper_apr_user.c b/cbits/helper_apr_user.c
new file mode 100644 (file)
index 0000000..a94eceb
--- /dev/null
@@ -0,0 +1,5 @@
+#include <bindings.cmacros.h>
+#include <apr_user.h>
+
+BC_INLINE2(apr_uid_compare, apr_uid_t, apr_uid_t, apr_status_t)
+BC_INLINE2(apr_gid_compare, apr_gid_t, apr_gid_t, apr_status_t)