blob: 09fc856a4f86958ebcc0f2a85f4ad45f66c74ec5 [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 Sysoev2b542382002-08-20 14:48:28 +00006
Igor Sysoev86de4cb2003-01-30 07:28:09 +00007#include <ngx_types.h>
Igor Sysoevfd675862003-04-11 16:01:14 +00008#include <ngx_alloc.h>
9#include <ngx_hunk.h>
Igor Sysoev86de4cb2003-01-30 07:28:09 +000010#include <ngx_file.h>
11
12
Igor Sysoev42feecb2002-12-15 06:25:09 +000013#define NGX_INVALID_FILE -1
14#define NGX_FILE_ERROR -1
15
Igor Sysoev2b542382002-08-20 14:48:28 +000016
17
Igor Sysoev7578ec92003-06-02 15:24:30 +000018#define ngx_open_file(name, access, create) \
19 open(name, access|create, 0644)
Igor Sysoev83661a92002-08-23 16:14:30 +000020#define ngx_open_file_n "open()"
21
Igor Sysoev7578ec92003-06-02 15:24:30 +000022#define NGX_FILE_RDONLY O_RDONLY
23#define NGX_FILE_RDWR O_RDWR
24#define NGX_FILE_CREATE_OR_OPEN O_CREAT
25#define NGX_FILE_OPEN 0
26#define NGX_FILE_APPEND O_APPEND
27
28
Igor Sysoevb0869052002-12-10 18:05:12 +000029#define ngx_close_file close
30#define ngx_close_file_n "close()"
31
Igor Sysoev7578ec92003-06-02 15:24:30 +000032
Igor Sysoev297c0482003-11-14 16:52:04 +000033#define ngx_delete_file unlink
34#define ngx_delete_file_n "unlink()"
35
36
Igor Sysoevfd675862003-04-11 16:01:14 +000037#define ngx_open_tempfile(name, persistent) \
Igor Sysoev9e4920b2003-04-14 17:04:58 +000038 open(name, O_CREAT|O_EXCL|O_RDWR, 0600)
Igor Sysoevfd675862003-04-11 16:01:14 +000039#define ngx_open_tempfile_n "open()"
40
Igor Sysoev7578ec92003-06-02 15:24:30 +000041
Igor Sysoev86de4cb2003-01-30 07:28:09 +000042ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
Igor Sysoev83661a92002-08-23 16:14:30 +000043#define ngx_read_file_n "read()"
Igor Sysoev2b542382002-08-20 14:48:28 +000044
Igor Sysoev2b542382002-08-20 14:48:28 +000045
Igor Sysoevfd675862003-04-11 16:01:14 +000046ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
47
48ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
49 off_t offset, ngx_pool_t *pool);
50
51
Igor Sysoevf2e676a2003-11-16 21:49:42 +000052#define ngx_rename_file rename
Igor Sysoev65977492003-11-02 22:56:18 +000053#define ngx_rename_file_n "rename"
54
55
Igor Sysoevf2e676a2003-11-16 21:49:42 +000056#define ngx_file_info(file, sb) stat(file, sb)
57#define ngx_file_info_n "stat()"
58
59#define ngx_fd_info(fd, sb) fstat(fd, sb)
60#define ngx_fd_info_n "fstat()"
61
62#define ngx_is_dir(sb) (S_ISDIR((sb)->st_mode))
63#define ngx_is_file(sb) (S_ISREG((sb)->st_mode))
64#define ngx_file_size(sb) (sb)->st_size
65#define ngx_file_mtime(sb) (sb)->st_mtime
66#define ngx_file_uniq(sb) (sb)->st_ino
67
68
69#define NGX_DIR_MASK_LEN 0
70
71
72int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
Igor Sysoev297c0482003-11-14 16:52:04 +000073#define ngx_open_dir_n "opendir()"
74
75
Igor Sysoevf2e676a2003-11-16 21:49:42 +000076#define ngx_close_dir(d) closedir((d)->dir)
77#define ngx_close_dir_n "closedir()"
78
79
80#define ngx_read_dir(d) \
81 (((d)->de = readdir((d)->dir)) ? NGX_OK : NGX_ERROR)
Igor Sysoev297c0482003-11-14 16:52:04 +000082#define ngx_read_dir_n "readdir()"
83
84
Igor Sysoeva8fa0a62003-11-25 20:44:56 +000085#define ngx_create_dir(name) mkdir(name, 0700)
Igor Sysoevf2e676a2003-11-16 21:49:42 +000086#define ngx_create_dir_n "mkdir()"
Igor Sysoevfd675862003-04-11 16:01:14 +000087
Igor Sysoev2b542382002-08-20 14:48:28 +000088
Igor Sysoev297c0482003-11-14 16:52:04 +000089#define ngx_delete_dir rmdir
90#define ngx_delete_dir_n "rmdir()"
91
92
Igor Sysoevf2e676a2003-11-16 21:49:42 +000093#define ngx_de_name(dir) (dir)->de->d_name
94#ifdef __FreeBSD__
95#define ngx_de_namelen(dir) (dir)->de->d_namlen
96#else
97#define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name)
98#endif
99#define ngx_de_info(name, dir) stat(name, &(dir)->info)
100#define ngx_de_info_n "stat()"
101#define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
102#define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))
103#define ngx_de_size(dir) (dir)->info.st_size
104#define ngx_de_mtime(dir) (dir)->info.st_mtime
Igor Sysoev2b542382002-08-20 14:48:28 +0000105
106
Igor Sysoeva58e3ca2002-09-02 14:48:24 +0000107#endif /* _NGX_FILES_H_INCLUDED_ */