blob: 641ccfa0b0d3d0cc6b242c85307a05a31382d672 [file] [log] [blame]
Igor Sysoeva58e3ca2002-09-02 14:48:24 +00001#ifndef _NGX_FILES_H_INCLUDED_
2#define _NGX_FILES_H_INCLUDED_
Igor Sysoev2b542382002-08-20 14:48:28 +00003
4
Igor Sysoev86de4cb2003-01-30 07:28:09 +00005#include <ngx_config.h>
Igor Sysoeva5362982004-03-04 07:04:55 +00006#include <ngx_core.h>
Igor Sysoev86de4cb2003-01-30 07:28:09 +00007
8
Igor Sysoev42feecb2002-12-15 06:25:09 +00009#define NGX_INVALID_FILE -1
10#define NGX_FILE_ERROR -1
11
Igor Sysoev2b542382002-08-20 14:48:28 +000012
13
Igor Sysoev7578ec92003-06-02 15:24:30 +000014#define ngx_open_file(name, access, create) \
15 open(name, access|create, 0644)
Igor Sysoev83661a92002-08-23 16:14:30 +000016#define ngx_open_file_n "open()"
17
Igor Sysoev7578ec92003-06-02 15:24:30 +000018#define NGX_FILE_RDONLY O_RDONLY
19#define NGX_FILE_RDWR O_RDWR
20#define NGX_FILE_CREATE_OR_OPEN O_CREAT
21#define NGX_FILE_OPEN 0
22#define NGX_FILE_APPEND O_APPEND
23
24
Igor Sysoevb0869052002-12-10 18:05:12 +000025#define ngx_close_file close
26#define ngx_close_file_n "close()"
27
Igor Sysoev7578ec92003-06-02 15:24:30 +000028
Igor Sysoev297c0482003-11-14 16:52:04 +000029#define ngx_delete_file unlink
30#define ngx_delete_file_n "unlink()"
31
32
Igor Sysoevfd675862003-04-11 16:01:14 +000033#define ngx_open_tempfile(name, persistent) \
Igor Sysoev9e4920b2003-04-14 17:04:58 +000034 open(name, O_CREAT|O_EXCL|O_RDWR, 0600)
Igor Sysoevfd675862003-04-11 16:01:14 +000035#define ngx_open_tempfile_n "open()"
36
Igor Sysoev7578ec92003-06-02 15:24:30 +000037
Igor Sysoev86de4cb2003-01-30 07:28:09 +000038ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
Igor Sysoev83661a92002-08-23 16:14:30 +000039#define ngx_read_file_n "read()"
Igor Sysoev2b542382002-08-20 14:48:28 +000040
Igor Sysoev2b542382002-08-20 14:48:28 +000041
Igor Sysoevfd675862003-04-11 16:01:14 +000042ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
43
44ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
45 off_t offset, ngx_pool_t *pool);
46
47
Igor Sysoevf2e676a2003-11-16 21:49:42 +000048#define ngx_rename_file rename
Igor Sysoev65977492003-11-02 22:56:18 +000049#define ngx_rename_file_n "rename"
50
51
Igor Sysoevf2e676a2003-11-16 21:49:42 +000052#define ngx_file_info(file, sb) stat(file, sb)
53#define ngx_file_info_n "stat()"
54
55#define ngx_fd_info(fd, sb) fstat(fd, sb)
56#define ngx_fd_info_n "fstat()"
57
58#define ngx_is_dir(sb) (S_ISDIR((sb)->st_mode))
59#define ngx_is_file(sb) (S_ISREG((sb)->st_mode))
60#define ngx_file_size(sb) (sb)->st_size
61#define ngx_file_mtime(sb) (sb)->st_mtime
62#define ngx_file_uniq(sb) (sb)->st_ino
63
64
65#define NGX_DIR_MASK_LEN 0
66
67
68int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
Igor Sysoev297c0482003-11-14 16:52:04 +000069#define ngx_open_dir_n "opendir()"
70
71
Igor Sysoevf2e676a2003-11-16 21:49:42 +000072#define ngx_close_dir(d) closedir((d)->dir)
73#define ngx_close_dir_n "closedir()"
74
75
76#define ngx_read_dir(d) \
77 (((d)->de = readdir((d)->dir)) ? NGX_OK : NGX_ERROR)
Igor Sysoev297c0482003-11-14 16:52:04 +000078#define ngx_read_dir_n "readdir()"
79
80
Igor Sysoeva8fa0a62003-11-25 20:44:56 +000081#define ngx_create_dir(name) mkdir(name, 0700)
Igor Sysoevf2e676a2003-11-16 21:49:42 +000082#define ngx_create_dir_n "mkdir()"
Igor Sysoevfd675862003-04-11 16:01:14 +000083
Igor Sysoev2b542382002-08-20 14:48:28 +000084
Igor Sysoev297c0482003-11-14 16:52:04 +000085#define ngx_delete_dir rmdir
86#define ngx_delete_dir_n "rmdir()"
87
88
Igor Sysoevf2e676a2003-11-16 21:49:42 +000089#define ngx_de_name(dir) (dir)->de->d_name
90#ifdef __FreeBSD__
91#define ngx_de_namelen(dir) (dir)->de->d_namlen
92#else
93#define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name)
94#endif
95#define ngx_de_info(name, dir) stat(name, &(dir)->info)
96#define ngx_de_info_n "stat()"
97#define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
98#define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))
99#define ngx_de_size(dir) (dir)->info.st_size
100#define ngx_de_mtime(dir) (dir)->info.st_mtime
Igor Sysoev2b542382002-08-20 14:48:28 +0000101
102
Igor Sysoeva58e3ca2002-09-02 14:48:24 +0000103#endif /* _NGX_FILES_H_INCLUDED_ */