#ifndef _NGX_FILES_H_INCLUDED_
#define _NGX_FILES_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
ngx_fd_t;
ngx_file_info_t;
ngx_file_uniq_t;
ngx_file_mapping_t;
ngx_dir_t;
ngx_glob_t;
#define NGX_INVALID_FILE …
#define NGX_FILE_ERROR …
#ifdef __CYGWIN__
#ifndef NGX_HAVE_CASELESS_FILESYSTEM
#define NGX_HAVE_CASELESS_FILESYSTEM …
#endif
#define ngx_open_file …
#else
#define ngx_open_file(name, mode, create, access) …
#endif
#define ngx_open_file_n …
#define NGX_FILE_RDONLY …
#define NGX_FILE_WRONLY …
#define NGX_FILE_RDWR …
#define NGX_FILE_CREATE_OR_OPEN …
#define NGX_FILE_OPEN …
#define NGX_FILE_TRUNCATE …
#define NGX_FILE_APPEND …
#define NGX_FILE_NONBLOCK …
#if (NGX_HAVE_OPENAT)
#define NGX_FILE_NOFOLLOW …
#if defined(O_DIRECTORY)
#define NGX_FILE_DIRECTORY …
#else
#define NGX_FILE_DIRECTORY …
#endif
#if defined(O_SEARCH)
#define NGX_FILE_SEARCH …
#elif defined(O_EXEC)
#define NGX_FILE_SEARCH …
#elif (NGX_HAVE_O_PATH)
#define NGX_FILE_SEARCH …
#else
#define NGX_FILE_SEARCH …
#endif
#endif
#define NGX_FILE_DEFAULT_ACCESS …
#define NGX_FILE_OWNER_ACCESS …
#define ngx_close_file …
#define ngx_close_file_n …
#define ngx_delete_file(name) …
#define ngx_delete_file_n …
ngx_fd_t ngx_open_tempfile(u_char *name, ngx_uint_t persistent,
ngx_uint_t access);
#define ngx_open_tempfile_n …
ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset);
#if (NGX_HAVE_PREAD)
#define ngx_read_file_n …
#else
#define ngx_read_file_n …
#endif
ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size,
off_t offset);
ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
off_t offset, ngx_pool_t *pool);
#define ngx_read_fd …
#define ngx_read_fd_n …
static ngx_inline ssize_t
ngx_write_fd(ngx_fd_t fd, void *buf, size_t n)
{ … }
#define ngx_write_fd_n …
#define ngx_write_console …
#define ngx_linefeed(p) …
#define NGX_LINEFEED_SIZE …
#define NGX_LINEFEED …
#define ngx_rename_file(o, n) …
#define ngx_rename_file_n …
#define ngx_change_file_access(n, a) …
#define ngx_change_file_access_n …
ngx_int_t ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s);
#define ngx_set_file_time_n …
#define ngx_file_info(file, sb) …
#define ngx_file_info_n …
#define ngx_fd_info(fd, sb) …
#define ngx_fd_info_n …
#define ngx_link_info(file, sb) …
#define ngx_link_info_n …
#define ngx_is_dir(sb) …
#define ngx_is_file(sb) …
#define ngx_is_link(sb) …
#define ngx_is_exec(sb) …
#define ngx_file_access(sb) …
#define ngx_file_size(sb) …
#define ngx_file_fs_size(sb) …
#define ngx_file_mtime(sb) …
#define ngx_file_uniq(sb) …
ngx_int_t ngx_create_file_mapping(ngx_file_mapping_t *fm);
void ngx_close_file_mapping(ngx_file_mapping_t *fm);
#define ngx_realpath(p, r) …
#define ngx_realpath_n …
#define ngx_getcwd(buf, size) …
#define ngx_getcwd_n …
#define ngx_path_separator(c) …
#if defined(PATH_MAX)
#define NGX_HAVE_MAX_PATH …
#define NGX_MAX_PATH …
#else
#define NGX_MAX_PATH …
#endif
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
#define ngx_open_dir_n …
#define ngx_close_dir(d) …
#define ngx_close_dir_n …
ngx_int_t ngx_read_dir(ngx_dir_t *dir);
#define ngx_read_dir_n …
#define ngx_create_dir(name, access) …
#define ngx_create_dir_n …
#define ngx_delete_dir(name) …
#define ngx_delete_dir_n …
#define ngx_dir_access(a) …
#define ngx_de_name(dir) …
#if (NGX_HAVE_D_NAMLEN)
#define ngx_de_namelen …
#else
#define ngx_de_namelen(dir) …
#endif
static ngx_inline ngx_int_t
ngx_de_info(u_char *name, ngx_dir_t *dir)
{ … }
#define ngx_de_info_n …
#define ngx_de_link_info(name, dir) …
#define ngx_de_link_info_n …
#if (NGX_HAVE_D_TYPE)
#define ngx_de_is_dir(dir) …
#define ngx_de_is_file(dir) …
#define ngx_de_is_link(dir) …
#else
#define ngx_de_is_dir …
#define ngx_de_is_file …
#define ngx_de_is_link …
#endif
#define ngx_de_access(dir) …
#define ngx_de_size(dir) …
#define ngx_de_fs_size(dir) …
#define ngx_de_mtime(dir) …
ngx_int_t ngx_open_glob(ngx_glob_t *gl);
#define ngx_open_glob_n …
ngx_int_t ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name);
void ngx_close_glob(ngx_glob_t *gl);
ngx_err_t ngx_trylock_fd(ngx_fd_t fd);
ngx_err_t ngx_lock_fd(ngx_fd_t fd);
ngx_err_t ngx_unlock_fd(ngx_fd_t fd);
#define ngx_trylock_fd_n …
#define ngx_lock_fd_n …
#define ngx_unlock_fd_n …
#if (NGX_HAVE_F_READAHEAD)
#define NGX_HAVE_READ_AHEAD …
#define ngx_read_ahead …
#define ngx_read_ahead_n …
#elif (NGX_HAVE_POSIX_FADVISE)
#define NGX_HAVE_READ_AHEAD …
ngx_int_t ngx_read_ahead(ngx_fd_t fd, size_t n);
#define ngx_read_ahead_n …
#else
#define ngx_read_ahead …
#define ngx_read_ahead_n …
#endif
#if (NGX_HAVE_O_DIRECT)
ngx_int_t ngx_directio_on(ngx_fd_t fd);
#define ngx_directio_on_n …
ngx_int_t ngx_directio_off(ngx_fd_t fd);
#define ngx_directio_off_n …
#elif (NGX_HAVE_F_NOCACHE)
#define ngx_directio_on …
#define ngx_directio_on_n …
#elif (NGX_HAVE_DIRECTIO)
#define ngx_directio_on …
#define ngx_directio_on_n …
#else
#define ngx_directio_on …
#define ngx_directio_on_n …
#endif
size_t ngx_fs_bsize(u_char *name);
off_t ngx_fs_available(u_char *name);
#if (NGX_HAVE_OPENAT)
#define ngx_openat_file(fd, name, mode, create, access) …
#define ngx_openat_file_n …
#define ngx_file_at_info(fd, name, sb, flag) …
#define ngx_file_at_info_n …
#define NGX_AT_FDCWD …
#endif
#define ngx_stdout …
#define ngx_stderr …
#define ngx_set_stderr(fd) …
#define ngx_set_stderr_n …
#if (NGX_HAVE_FILE_AIO)
ngx_int_t ngx_file_aio_init(ngx_file_t *file, ngx_pool_t *pool);
ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size,
off_t offset, ngx_pool_t *pool);
extern ngx_uint_t ngx_file_aio;
#endif
#if (NGX_THREADS)
ssize_t ngx_thread_read(ngx_file_t *file, u_char *buf, size_t size,
off_t offset, ngx_pool_t *pool);
ssize_t ngx_thread_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl,
off_t offset, ngx_pool_t *pool);
#endif
#endif