--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_file_io.h>
+
+module Bindings.APR.File.IO where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.File.Info
+import Bindings.APR.File.Types
+import Bindings.APR.Pools
+import Bindings.APR.Time
+import Bindings.APR.Want
+
+#num APR_FOPEN_READ
+#num APR_FOPEN_WRITE
+#num APR_FOPEN_CREATE
+#num APR_FOPEN_APPEND
+#num APR_FOPEN_TRUNCATE
+#num APR_FOPEN_BINARY
+#num APR_FOPEN_EXCL
+#num APR_FOPEN_BUFFERED
+#num APR_FOPEN_DELONCLOSE
+#num APR_FOPEN_XTHREAD
+#num APR_FOPEN_SHARELOCK
+#num APR_FOPEN_NOCLEANUP
+#num APR_FOPEN_SENDFILE_ENABLED
+#num APR_FOPEN_LARGEFILE
+#num APR_FOPEN_SPARSE
+
+#num APR_READ
+#num APR_WRITE
+#num APR_CREATE
+#num APR_APPEND
+#num APR_TRUNCATE
+#num APR_BINARY
+#num APR_EXCL
+#num APR_BUFFERED
+#num APR_DELONCLOSE
+#num APR_XTHREAD
+#num APR_SHARELOCK
+#num APR_FILE_NOCLEANUP
+#num APR_SENDFILE_ENABLED
+#num APR_LARGEFILE
+
+#num APR_SET
+#num APR_CUR
+#num APR_END
+
+#num APR_FILE_ATTR_READONLY
+#num APR_FILE_ATTR_EXECUTABLE
+#num APR_FILE_ATTR_HIDDEN
+
+#num APR_MAX_IOVEC_SIZE
+
+#integral_t apr_fileattrs_t
+#integral_t apr_seek_where_t
+
+#num APR_FLOCK_SHARED
+#num APR_FLOCK_EXCLUSIVE
+#num APR_FLOCK_TYPEMASK
+#num APR_FLOCK_NONBLOCK
+
+#ccall apr_file_open , Ptr (Ptr <apr_file_t>) -> Ptr CChar -> <apr_int32_t> -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_close , Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_remove, Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_rename, Ptr CChar -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_copy , Ptr CChar -> Ptr CChar -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_append, Ptr CChar -> Ptr CChar -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_eof , Ptr <apr_file_t> -> IO <apr_status_t>
+
+#ccall apr_file_open_stderr, Ptr (Ptr <apr_file_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_open_stdout, Ptr (Ptr <apr_file_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_open_stdin , Ptr (Ptr <apr_file_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+
+#ccall apr_file_open_flags_stderr, Ptr (Ptr <apr_file_t>) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_open_flags_stdout, Ptr (Ptr <apr_file_t>) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_open_flags_stdin , Ptr (Ptr <apr_file_t>) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+
+#ccall apr_file_read , Ptr <apr_file_t> -> Ptr () -> Ptr <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_write , Ptr <apr_file_t> -> Ptr () -> Ptr <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_writev , Ptr <apr_file_t> -> Ptr <iovec> -> <apr_size_t> -> Ptr <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_read_full , Ptr <apr_file_t> -> Ptr () -> <apr_size_t> -> Ptr <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_write_full , Ptr <apr_file_t> -> Ptr () -> <apr_size_t> -> Ptr <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_writev_full, Ptr <apr_file_t> -> Ptr <iovec> -> <apr_size_t> -> Ptr <apr_size_t> -> IO <apr_status_t>
+
+#ccall apr_file_putc , CChar -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_getc , CChar -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_ungetc , CChar -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_gets , Ptr CChar -> CInt -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_puts , Ptr CChar -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_flush , Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_dup , Ptr (Ptr <apr_file_t>) -> Ptr <apr_file_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_dup2 , Ptr <apr_file_t> -> Ptr <apr_file_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_setaside, Ptr (Ptr <apr_file_t>) -> Ptr <apr_file_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_buffer_set , Ptr <apr_file_t> -> Ptr CChar -> <apr_size_t> -> IO <apr_status_t>
+#ccall apr_file_buffer_size_get , Ptr <apr_size_t> -> IO <apr_size_t>
+#ccall apr_file_seek , Ptr <apr_file_t> -> <apr_seek_where_t> -> Ptr <apr_off_t> -> IO <apr_status_t>
+#ccall apr_file_pipe_create , Ptr (Ptr <apr_file_t>) -> Ptr (Ptr <apr_file_t>) -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_pipe_create_ex , Ptr (Ptr <apr_file_t>) -> Ptr (Ptr <apr_file_t>) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_namedpipe_create, Ptr CChar -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_pipe_timeout_get, Ptr <apr_file_t> -> Ptr <apr_interval_time_t> -> IO <apr_status_t>
+#ccall apr_file_pipe_timeout_set, Ptr <apr_file_t> -> <apr_interval_time_t> -> IO <apr_status_t>
+#ccall apr_file_lock , Ptr <apr_file_t> -> CInt -> IO <apr_status_t>
+#ccall apr_file_unlock , Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_name_get , Ptr (Ptr CChar) -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_data_get , Ptr (Ptr ()) -> Ptr CChar -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_data_set , Ptr <apr_file_t> -> Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO <apr_status_t>) -> IO <apr_status_t>
+-- apr_file_printf can't be wrapped as it takes varargs.
+#ccall apr_file_perms_set, Ptr CChar -> <apr_fileperms_t> -> IO <apr_status_t>
+#ccall apr_file_attrs_set, Ptr CChar -> <apr_fileattrs_t> -> <apr_fileattrs_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_mtime_set, Ptr CChar -> <apr_time_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_dir_make , Ptr CChar -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_dir_make_recursive, Ptr CChar -> <apr_fileperms_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_dir_remove , Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_file_info_get , Ptr <apr_finfo_t> -> <apr_int32_t> -> Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_trunc , Ptr <apr_file_t> -> <apr_off_t> -> IO <apr_status_t>
+#ccall apr_file_flags_get, Ptr <apr_file_t> -> IO <apr_int32_t>
+
+#ccall apr_file_pool_get , Ptr <apr_file_t> -> IO (Ptr <apr_pool_t>)
+#ccall apr_file_inherit_set , Ptr <apr_file_t> -> IO <apr_status_t>
+#ccall apr_file_inherit_unset, Ptr <apr_file_t> -> IO <apr_status_t>
--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_file_info.h>
+
+module Bindings.APR.File.Info where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.File.Types
+import Bindings.APR.Pools
+import Bindings.APR.Tables
+import Bindings.APR.Time
+import Bindings.APR.User
+
+#integral_t apr_filetype_e
+#num APR_NOFILE
+#num APR_REG
+#num APR_DIR
+#num APR_CHR
+#num APR_BLK
+#num APR_PIPE
+#num APR_LNK
+#num APR_SOCK
+#num APR_UNKFILE
+
+#num APR_FPROT_USETID
+#num APR_FPROT_UREAD
+#num APR_FPROT_UWRITE
+#num APR_FPROT_UEXECUTE
+
+#num APR_FPROT_GSETID
+#num APR_FPROT_GREAD
+#num APR_FPROT_GWRITE
+#num APR_FPROT_GEXECUTE
+
+#num APR_FPROT_WSTICKY
+#num APR_FPROT_WREAD
+#num APR_FPROT_WWRITE
+#num APR_FPROT_WEXECUTE
+
+#num APR_FPROT_OS_DEFAULT
+#num APR_FPROT_FILE_SOURCE_PERMS
+
+#num APR_USETID
+#num APR_UREAD
+#num APR_UWRITE
+#num APR_UEXECUTE
+#num APR_GSETID
+#num APR_GREAD
+#num APR_GWRITE
+#num APR_GEXECUTE
+#num APR_WSTICKY
+#num APR_WREAD
+#num APR_WWRITE
+#num APR_WEXECUTE
+#num APR_OS_DEFAULT
+#num APR_FILE_SOURCE_PERMS
+
+#opaque_t apr_dir_t
+#integral_t apr_fileperms_t
+#integral_t apr_dev_t
+
+#num APR_FINFO_LINK
+#num APR_FINFO_MTIME
+#num APR_FINFO_CTIME
+#num APR_FINFO_ATIME
+#num APR_FINFO_SIZE
+#num APR_FINFO_CSIZE
+#num APR_FINFO_DEV
+#num APR_FINFO_INODE
+#num APR_FINFO_TYPE
+#num APR_FINFO_USER
+#num APR_FINFO_GROUP
+#num APR_FINFO_UPROT
+#num APR_FINFO_GPROT
+#num APR_FINFO_WPROT
+#num APR_FINFO_ICASE
+#num APR_FINFO_NAME
+
+#num APR_FINFO_MIN
+#num APR_FINFO_IDENT
+#num APR_FINFO_OWNER
+#num APR_FINFO_PROT
+#num APR_FINFO_NORM
+#num APR_FINFO_DIRENT
+
+#starttype struct apr_finfo_t
+# field pool , Ptr <apr_pool_t>
+# field valid , <apr_int32_t>
+# field protection, <apr_fileperms_t>
+# field filetype , <apr_filetype_e>
+# field user , <apr_uid_t>
+# field group , <apr_gid_t>
+# field inode , <apr_ino_t>
+# field device , <apr_dev_t>
+# field nlink , <apr_int32_t>
+# field size , <apr_off_t>
+# field csize , <apr_off_t>
+# field atime , <apr_time_t>
+# field mtime , <apr_time_t>
+# field ctime , <apr_time_t>
+# field fname , Ptr CChar
+# field name , Ptr CChar
+# field filehand , Ptr <apr_file_t>
+#stoptype
+
+#ccall apr_stat , Ptr <apr_finfo_t> -> Ptr CChar -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_dir_open , Ptr (Ptr <apr_dir_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_dir_close , Ptr <apr_dir_t> -> IO <apr_status_t>
+#ccall apr_dir_read , Ptr <apr_finfo_t> -> <apr_int32_t> -> Ptr <apr_dir_t> -> IO <apr_status_t>
+#ccall apr_dir_rewind, Ptr <apr_dir_t> -> IO <apr_status_t>
+
+#num APR_FILEPATH_NOTABOVEROOT
+#num APR_FILEPATH_SECUREROOTTEST
+#num APR_FILEPATH_SECUREROOT
+#num APR_FILEPATH_NOTRELATIVE
+#num APR_FILEPATH_NOTABSOLUTE
+#num APR_FILEPATH_NATIVE
+#num APR_FILEPATH_TRUENAME
+
+#ccall apr_filepath_root , Ptr (Ptr CChar) -> Ptr (Ptr CChar) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_filepath_merge , Ptr (Ptr CChar) -> Ptr CChar -> Ptr CChar -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_filepath_list_split, Ptr (Ptr <apr_array_header_t>) -> Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_filepath_list_merge, Ptr (Ptr CChar) -> Ptr <apr_array_header_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_filepath_get , Ptr (Ptr CChar) -> <apr_int32_t> -> Ptr <apr_pool_t> -> IO <apr_status_t>
+#ccall apr_filepath_set , Ptr CChar -> Ptr <apr_pool_t> -> IO <apr_status_t>
+
+#num APR_FILEPATH_ENCODING_UNKNOWN
+#num APR_FILEPATH_ENCODING_LOCALE
+#num APR_FILEPATH_ENCODING_UTF8
+
+#ccall apr_filepath_encoding, Ptr CInt -> Ptr <apr_pool_t> -> IO <apr_status_t>
--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_file_io.h>
+
+module Bindings.APR.File.Types where
+#strict_import
+
+#opaque_t apr_file_t
--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_time.h>
+
+module Bindings.APR.Time where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.Pools
+
+-- Isn't there a better way than this?
+#pointer apr_month_snames
+#pointer apr_day_snames
+
+#integral_t apr_time_t
+#pointer APR_TIME_T_FMT
+
+#integral_t apr_interval_time_t
+#integral_t apr_short_interval_time_t
+
+#num APR_USEC_PER_SEC
+
+#cinline apr_time_sec , <apr_time_t> -> IO <apr_time_t>
+#cinline apr_time_usec, <apr_time_t> -> IO <apr_time_t>
+#cinline apr_time_msec, <apr_time_t> -> IO <apr_time_t>
+#cinline apr_time_as_msec , <apr_time_t> -> IO <apr_time_t>
+#cinline apr_time_from_sec, <apr_time_t> -> IO <apr_time_t>
+#cinline apr_time_make, <apr_time_t> -> <apr_time_t> -> IO <apr_time_t>
+
+#ccall apr_time_now, IO <apr_time_t>
+
+#starttype struct apr_time_exp_t
+# field tm_usec, <apr_int32_t>
+# field tm_sec , <apr_int32_t>
+# field tm_min , <apr_int32_t>
+# field tm_hour, <apr_int32_t>
+# field tm_mday, <apr_int32_t>
+# field tm_mon , <apr_int32_t>
+# field tm_year, <apr_int32_t>
+# field tm_wday, <apr_int32_t>
+# field tm_yday, <apr_int32_t>
+# field tm_isdst , <apr_int32_t>
+# field tm_gmtoff, <apr_int32_t>
+#stoptype
+
+#ccall apr_time_ansi_put, Ptr <apr_time_t> -> CTime -> IO <apr_status_t>
+
+#ccall apr_time_exp_tz , Ptr <apr_time_exp_t> -> <apr_time_t> -> <apr_int32_t> -> IO <apr_status_t>
+#ccall apr_time_exp_gmt, Ptr <apr_time_exp_t> -> <apr_time_t> -> IO <apr_status_t>
+#ccall apr_time_exp_lt , Ptr <apr_time_exp_t> -> <apr_time_t> -> IO <apr_status_t>
+#ccall apr_time_exp_get , Ptr <apr_time_t> -> Ptr <apr_time_exp_t> -> IO <apr_status_t>
+#ccall apr_time_exp_gmt_get, Ptr <apr_time_t> -> Ptr <apr_time_exp_t> -> IO <apr_status_t>
+
+#ccall apr_sleep, <apr_interval_time_t> -> IO ()
+
+#num APR_RFC822_DATE_LEN
+#ccall apr_rfc822_date, Ptr CChar -> <apr_time_t> -> IO <apr_status_t>
+
+#num APR_CTIME_LEN
+#ccall apr_ctime, Ptr CChar -> <apr_time_t> -> IO <apr_status_t>
+
+#ccall apr_strftime, Ptr CChar -> Ptr <apr_size_t> -> <apr_size_t> -> Ptr CChar -> Ptr <apr_time_exp_t> -> IO <apr_status_t>
+
+#ccall apr_time_clock_hires, Ptr <apr_pool_t> -> IO ()
--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_want.h>
+
+module Bindings.APR.Want where
+#strict_import
+
+#starttype struct iovec
+# field iov_base, Ptr CChar
+# field iov_len , CSize
+#stoptype
Bindings.APR.DSO
Bindings.APR.Env
Bindings.APR.ErrNo
+ Bindings.APR.File.IO
+ Bindings.APR.File.Info
+ Bindings.APR.File.Types
Bindings.APR.Pools
Bindings.APR.Proc.Mutex
Bindings.APR.Tables
Bindings.APR.Thread.Mutex
Bindings.APR.Thread.RWLock
+ Bindings.APR.Time
Bindings.APR.User
+ Bindings.APR.Want
C-Sources:
-- cbits/helper_apr_anylock.c
cbits/helper_apr_errno.c
cbits/helper_apr_pools.c
+ cbits/helper_apr_time.c
cbits/helper_apr_user.c
Extensions:
--- /dev/null
+#include <bindings.cmacros.h>
+#include <apr_time.h>
+
+BC_INLINE1(apr_time_sec , apr_time_t, apr_time_t)
+BC_INLINE1(apr_time_usec, apr_time_t, apr_time_t)
+BC_INLINE1(apr_time_msec, apr_time_t, apr_time_t)
+BC_INLINE1(apr_time_as_msec , apr_time_t, apr_time_t)
+BC_INLINE1(apr_time_from_sec, apr_time_t, apr_time_t)
+BC_INLINE2(apr_time_make, apr_time_t, apr_time_t, apr_time_t)