From 01c3e8477bab59fb6f6c23fcf98c4b7a1709e3f1 Mon Sep 17 00:00:00 2001 From: PHO Date: Sun, 8 Aug 2010 23:23:02 +0900 Subject: [PATCH] more bindings --- Bindings/APR/File/IO.hsc | 121 +++++++++++++++++++++++++++++++++ Bindings/APR/File/Info.hsc | 131 ++++++++++++++++++++++++++++++++++++ Bindings/APR/File/Types.hsc | 7 ++ Bindings/APR/Time.hsc | 63 +++++++++++++++++ Bindings/APR/Want.hsc | 10 +++ bindings-apr.cabal | 6 ++ cbits/helper_apr_time.c | 9 +++ 7 files changed, 347 insertions(+) create mode 100644 Bindings/APR/File/IO.hsc create mode 100644 Bindings/APR/File/Info.hsc create mode 100644 Bindings/APR/File/Types.hsc create mode 100644 Bindings/APR/Time.hsc create mode 100644 Bindings/APR/Want.hsc create mode 100644 cbits/helper_apr_time.c diff --git a/Bindings/APR/File/IO.hsc b/Bindings/APR/File/IO.hsc new file mode 100644 index 0000000..d476c7d --- /dev/null +++ b/Bindings/APR/File/IO.hsc @@ -0,0 +1,121 @@ +#include +#include + +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 ) -> Ptr CChar -> -> -> Ptr -> IO +#ccall apr_file_close , Ptr -> IO +#ccall apr_file_remove, Ptr CChar -> Ptr -> IO +#ccall apr_file_rename, Ptr CChar -> Ptr CChar -> Ptr -> IO +#ccall apr_file_copy , Ptr CChar -> Ptr CChar -> -> Ptr -> IO +#ccall apr_file_append, Ptr CChar -> Ptr CChar -> -> Ptr -> IO +#ccall apr_file_eof , Ptr -> IO + +#ccall apr_file_open_stderr, Ptr (Ptr ) -> Ptr -> IO +#ccall apr_file_open_stdout, Ptr (Ptr ) -> Ptr -> IO +#ccall apr_file_open_stdin , Ptr (Ptr ) -> Ptr -> IO + +#ccall apr_file_open_flags_stderr, Ptr (Ptr ) -> -> Ptr -> IO +#ccall apr_file_open_flags_stdout, Ptr (Ptr ) -> -> Ptr -> IO +#ccall apr_file_open_flags_stdin , Ptr (Ptr ) -> -> Ptr -> IO + +#ccall apr_file_read , Ptr -> Ptr () -> Ptr -> IO +#ccall apr_file_write , Ptr -> Ptr () -> Ptr -> IO +#ccall apr_file_writev , Ptr -> Ptr -> -> Ptr -> IO +#ccall apr_file_read_full , Ptr -> Ptr () -> -> Ptr -> IO +#ccall apr_file_write_full , Ptr -> Ptr () -> -> Ptr -> IO +#ccall apr_file_writev_full, Ptr -> Ptr -> -> Ptr -> IO + +#ccall apr_file_putc , CChar -> Ptr -> IO +#ccall apr_file_getc , CChar -> Ptr -> IO +#ccall apr_file_ungetc , CChar -> Ptr -> IO +#ccall apr_file_gets , Ptr CChar -> CInt -> Ptr -> IO +#ccall apr_file_puts , Ptr CChar -> Ptr -> IO +#ccall apr_file_flush , Ptr -> IO +#ccall apr_file_dup , Ptr (Ptr ) -> Ptr -> Ptr -> IO +#ccall apr_file_dup2 , Ptr -> Ptr -> Ptr -> IO +#ccall apr_file_setaside, Ptr (Ptr ) -> Ptr -> Ptr -> IO +#ccall apr_file_buffer_set , Ptr -> Ptr CChar -> -> IO +#ccall apr_file_buffer_size_get , Ptr -> IO +#ccall apr_file_seek , Ptr -> -> Ptr -> IO +#ccall apr_file_pipe_create , Ptr (Ptr ) -> Ptr (Ptr ) -> Ptr -> IO +#ccall apr_file_pipe_create_ex , Ptr (Ptr ) -> Ptr (Ptr ) -> -> Ptr -> IO +#ccall apr_file_namedpipe_create, Ptr CChar -> -> Ptr -> IO +#ccall apr_file_pipe_timeout_get, Ptr -> Ptr -> IO +#ccall apr_file_pipe_timeout_set, Ptr -> -> IO +#ccall apr_file_lock , Ptr -> CInt -> IO +#ccall apr_file_unlock , Ptr -> IO +#ccall apr_file_name_get , Ptr (Ptr CChar) -> Ptr -> IO +#ccall apr_file_data_get , Ptr (Ptr ()) -> Ptr CChar -> Ptr -> IO +#ccall apr_file_data_set , Ptr -> Ptr () -> Ptr CChar -> FunPtr (Ptr () -> IO ) -> IO +-- apr_file_printf can't be wrapped as it takes varargs. +#ccall apr_file_perms_set, Ptr CChar -> -> IO +#ccall apr_file_attrs_set, Ptr CChar -> -> -> Ptr -> IO +#ccall apr_file_mtime_set, Ptr CChar -> -> Ptr -> IO +#ccall apr_dir_make , Ptr CChar -> -> Ptr -> IO +#ccall apr_dir_make_recursive, Ptr CChar -> -> Ptr -> IO +#ccall apr_dir_remove , Ptr CChar -> Ptr -> IO +#ccall apr_file_info_get , Ptr -> -> Ptr -> IO +#ccall apr_file_trunc , Ptr -> -> IO +#ccall apr_file_flags_get, Ptr -> IO + +#ccall apr_file_pool_get , Ptr -> IO (Ptr ) +#ccall apr_file_inherit_set , Ptr -> IO +#ccall apr_file_inherit_unset, Ptr -> IO diff --git a/Bindings/APR/File/Info.hsc b/Bindings/APR/File/Info.hsc new file mode 100644 index 0000000..71b9f1b --- /dev/null +++ b/Bindings/APR/File/Info.hsc @@ -0,0 +1,131 @@ +#include +#include + +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 +# field valid , +# field protection, +# field filetype , +# field user , +# field group , +# field inode , +# field device , +# field nlink , +# field size , +# field csize , +# field atime , +# field mtime , +# field ctime , +# field fname , Ptr CChar +# field name , Ptr CChar +# field filehand , Ptr +#stoptype + +#ccall apr_stat , Ptr -> Ptr CChar -> -> Ptr -> IO +#ccall apr_dir_open , Ptr (Ptr ) -> Ptr CChar -> Ptr -> IO +#ccall apr_dir_close , Ptr -> IO +#ccall apr_dir_read , Ptr -> -> Ptr -> IO +#ccall apr_dir_rewind, Ptr -> IO + +#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) -> -> Ptr -> IO +#ccall apr_filepath_merge , Ptr (Ptr CChar) -> Ptr CChar -> Ptr CChar -> -> Ptr -> IO +#ccall apr_filepath_list_split, Ptr (Ptr ) -> Ptr CChar -> Ptr -> IO +#ccall apr_filepath_list_merge, Ptr (Ptr CChar) -> Ptr -> Ptr -> IO +#ccall apr_filepath_get , Ptr (Ptr CChar) -> -> Ptr -> IO +#ccall apr_filepath_set , Ptr CChar -> Ptr -> IO + +#num APR_FILEPATH_ENCODING_UNKNOWN +#num APR_FILEPATH_ENCODING_LOCALE +#num APR_FILEPATH_ENCODING_UTF8 + +#ccall apr_filepath_encoding, Ptr CInt -> Ptr -> IO diff --git a/Bindings/APR/File/Types.hsc b/Bindings/APR/File/Types.hsc new file mode 100644 index 0000000..23ab22e --- /dev/null +++ b/Bindings/APR/File/Types.hsc @@ -0,0 +1,7 @@ +#include +#include + +module Bindings.APR.File.Types where +#strict_import + +#opaque_t apr_file_t diff --git a/Bindings/APR/Time.hsc b/Bindings/APR/Time.hsc new file mode 100644 index 0000000..9c70322 --- /dev/null +++ b/Bindings/APR/Time.hsc @@ -0,0 +1,63 @@ +#include +#include + +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 , -> IO +#cinline apr_time_usec, -> IO +#cinline apr_time_msec, -> IO +#cinline apr_time_as_msec , -> IO +#cinline apr_time_from_sec, -> IO +#cinline apr_time_make, -> -> IO + +#ccall apr_time_now, IO + +#starttype struct apr_time_exp_t +# field tm_usec, +# field tm_sec , +# field tm_min , +# field tm_hour, +# field tm_mday, +# field tm_mon , +# field tm_year, +# field tm_wday, +# field tm_yday, +# field tm_isdst , +# field tm_gmtoff, +#stoptype + +#ccall apr_time_ansi_put, Ptr -> CTime -> IO + +#ccall apr_time_exp_tz , Ptr -> -> -> IO +#ccall apr_time_exp_gmt, Ptr -> -> IO +#ccall apr_time_exp_lt , Ptr -> -> IO +#ccall apr_time_exp_get , Ptr -> Ptr -> IO +#ccall apr_time_exp_gmt_get, Ptr -> Ptr -> IO + +#ccall apr_sleep, -> IO () + +#num APR_RFC822_DATE_LEN +#ccall apr_rfc822_date, Ptr CChar -> -> IO + +#num APR_CTIME_LEN +#ccall apr_ctime, Ptr CChar -> -> IO + +#ccall apr_strftime, Ptr CChar -> Ptr -> -> Ptr CChar -> Ptr -> IO + +#ccall apr_time_clock_hires, Ptr -> IO () diff --git a/Bindings/APR/Want.hsc b/Bindings/APR/Want.hsc new file mode 100644 index 0000000..9947e0a --- /dev/null +++ b/Bindings/APR/Want.hsc @@ -0,0 +1,10 @@ +#include +#include + +module Bindings.APR.Want where +#strict_import + +#starttype struct iovec +# field iov_base, Ptr CChar +# field iov_len , CSize +#stoptype diff --git a/bindings-apr.cabal b/bindings-apr.cabal index 4bb86d5..75436cd 100644 --- a/bindings-apr.cabal +++ b/bindings-apr.cabal @@ -36,17 +36,23 @@ Library 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: diff --git a/cbits/helper_apr_time.c b/cbits/helper_apr_time.c new file mode 100644 index 0000000..9c22ba6 --- /dev/null +++ b/cbits/helper_apr_time.c @@ -0,0 +1,9 @@ +#include +#include + +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) -- 2.40.0