00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
#ifndef APR_FILE_IO_H
00017
#define APR_FILE_IO_H
00018
00024
#include "apr.h"
00025
#include "apr_pools.h"
00026
#include "apr_time.h"
00027
#include "apr_errno.h"
00028
#include "apr_file_info.h"
00029
#include "apr_inherit.h"
00030
00031 #define APR_WANT_STDIO
00032 #define APR_WANT_IOVEC
00033
#include "apr_want.h"
00034
00035
#ifdef __cplusplus
00036
extern "C" {
00037
#endif
00038
00050
00051
00052
00053 #define APR_READ 0x00001
00054 #define APR_WRITE 0x00002
00055 #define APR_CREATE 0x00004
00056 #define APR_APPEND 0x00008
00057 #define APR_TRUNCATE 0x00010
00058 #define APR_BINARY 0x00020
00059 #define APR_EXCL 0x00040
00061 #define APR_BUFFERED 0x00080
00062 #define APR_DELONCLOSE 0x00100
00063 #define APR_XTHREAD 0x00200
00065 #define APR_SHARELOCK 0x00400
00068 #define APR_FILE_NOCLEANUP 0x00800
00070 #define APR_SENDFILE_ENABLED 0x01000
00072 #define APR_LARGEFILE 0x04000
00093
00094
00095 #define APR_SET SEEK_SET
00096
00097 #define APR_CUR SEEK_CUR
00098
00099 #define APR_END SEEK_END
00100
00107
00108 #define APR_FILE_ATTR_READONLY 0x01
00109 #define APR_FILE_ATTR_EXECUTABLE 0x02
00110 #define APR_FILE_ATTR_HIDDEN 0x04
00114 typedef apr_uint32_t apr_fileattrs_t;
00115
00117 typedef int apr_seek_where_t;
00118
00122 typedef struct apr_file_t apr_file_t;
00123
00124
00130 #define APR_FLOCK_SHARED 1
00136 #define APR_FLOCK_EXCLUSIVE 2
00141 #define APR_FLOCK_TYPEMASK 0x000F
00142 #define APR_FLOCK_NONBLOCK 0x0010
00181
APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new_file, const char *fname,
00182
apr_int32_t flag,
apr_fileperms_t perm,
00183
apr_pool_t *cont);
00184
00189
APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file);
00190
00197 APR_DECLARE(apr_status_t) apr_file_remove(const
char *path, apr_pool_t *cont);
00198
00207 APR_DECLARE(apr_status_t) apr_file_rename(const
char *from_path,
00208 const
char *to_path,
00209 apr_pool_t *pool);
00210
00223 APR_DECLARE(apr_status_t) apr_file_copy(const
char *from_path,
00224 const
char *to_path,
00225 apr_fileperms_t perms,
00226 apr_pool_t *pool);
00227
00239 APR_DECLARE(apr_status_t) apr_file_append(const
char *from_path,
00240 const
char *to_path,
00241 apr_fileperms_t perms,
00242 apr_pool_t *pool);
00243
00249 APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr);
00250
00266 APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile,
00267 apr_pool_t *cont);
00268
00284 APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile,
00285 apr_pool_t *cont);
00286
00302 APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile,
00303 apr_pool_t *cont);
00304
00322 APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile,
void *buf,
00323 apr_size_t *nbytes);
00324
00340 APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const
void *buf,
00341 apr_size_t *nbytes);
00342
00358 APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile,
00359 const struct iovec *vec,
00360 apr_size_t nvec, apr_size_t *nbytes);
00361
00381 APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile,
void *buf,
00382 apr_size_t nbytes,
00383 apr_size_t *bytes_read);
00384
00403 APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, const
void *buf,
00404 apr_size_t nbytes,
00405 apr_size_t *bytes_written);
00406
00412 APR_DECLARE(apr_status_t) apr_file_putc(
char ch, apr_file_t *thefile);
00413
00419 APR_DECLARE(apr_status_t) apr_file_getc(
char *ch, apr_file_t *thefile);
00420
00426 APR_DECLARE(apr_status_t) apr_file_ungetc(
char ch, apr_file_t *thefile);
00427
00435 APR_DECLARE(apr_status_t) apr_file_gets(
char *str,
int len, apr_file_t *thefile);
00436
00442 APR_DECLARE(apr_status_t) apr_file_puts(const
char *str, apr_file_t *thefile);
00443
00448 APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile);
00449
00457 APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file,
00458 apr_file_t *old_file,
00459 apr_pool_t *p);
00460
00469 APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file,
00470 apr_file_t *old_file,
00471 apr_pool_t *p);
00472
00484 APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file,
00485 apr_file_t *old_file,
00486 apr_pool_t *p);
00487
00501 APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile,
00502 apr_seek_where_t where,
00503 apr_off_t *offset);
00504
00511 APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out,
00512 apr_pool_t *cont);
00513
00520 APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const
char *filename,
00521 apr_fileperms_t perm,
00522 apr_pool_t *cont);
00523
00529 APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe,
00530
apr_interval_time_t *timeout);
00531
00538 APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe,
00539 apr_interval_time_t timeout);
00540
00552 APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile,
int type);
00553
00558 APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile);
00559
00567 APR_DECLARE(apr_status_t) apr_file_name_get(const
char **new_path,
00568 apr_file_t *thefile);
00569
00576 APR_DECLARE(apr_status_t) apr_file_data_get(
void **data, const
char *key,
00577 apr_file_t *file);
00578
00586 APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file,
void *data,
00587 const
char *key,
00588 apr_status_t (*cleanup)(
void *));
00589
00597 APR_DECLARE_NONSTD(
int) apr_file_printf(apr_file_t *fptr,
00598 const
char *format, ...)
00599 __attribute__((format(printf,2,3)));
00600
00611 APR_DECLARE(apr_status_t) apr_file_perms_set(const
char *fname,
00612 apr_fileperms_t perms);
00613
00632 APR_DECLARE(apr_status_t) apr_file_attrs_set(const
char *fname,
00633
apr_fileattrs_t attributes,
00634 apr_fileattrs_t attr_mask,
00635 apr_pool_t *cont);
00636
00645 APR_DECLARE(apr_status_t) apr_file_mtime_set(const
char *fname,
00646 apr_time_t mtime,
00647 apr_pool_t *pool);
00648
00655 APR_DECLARE(apr_status_t) apr_dir_make(const
char *path, apr_fileperms_t perm,
00656 apr_pool_t *cont);
00657
00665 APR_DECLARE(apr_status_t) apr_dir_make_recursive(const
char *path,
00666 apr_fileperms_t perm,
00667 apr_pool_t *pool);
00668
00674 APR_DECLARE(apr_status_t) apr_dir_remove(const
char *path, apr_pool_t *cont);
00675
00682 APR_DECLARE(apr_status_t) apr_file_info_get(
apr_finfo_t *finfo,
00683 apr_int32_t wanted,
00684 apr_file_t *thefile);
00685
00686
00692 APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset);
00693
00699 APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f);
00700
00704 APR_POOL_DECLARE_ACCESSOR(file);
00705
00710 APR_DECLARE_INHERIT_SET(file);
00711
00713 APR_DECLARE(
void) apr_file_set_inherit(apr_file_t *file);
00714
00718 APR_DECLARE_INHERIT_UNSET(file);
00719
00721 APR_DECLARE(
void) apr_file_unset_inherit(apr_file_t *file);
00722
00739 APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp,
char *templ,
00740 apr_int32_t flags, apr_pool_t *p);
00741
00742
00755 APR_DECLARE(apr_status_t) apr_temp_dir_get(const
char **temp_dir,
00756 apr_pool_t *p);
00757
00760 #ifdef __cplusplus
00761 }
00762 #endif
00763
00764 #endif