--- /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>