annotate src/os/unix/ngx_files.h @ 4500:9dfe02dd0f11

Added msleep() on reload to allow new processes to start. This is expected to ensure smoother operation on reload (and with less chance of listen queue overflows). Prodded by Igor Sysoev.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 28 Feb 2012 11:40:18 +0000
parents 569ea17767bf
children 8865fd1f3aa5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4283
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 336
diff changeset
7
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 6
diff changeset
8 #ifndef _NGX_FILES_H_INCLUDED_
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 6
diff changeset
9 #define _NGX_FILES_H_INCLUDED_
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
57
a499e0d1f16e nginx-0.0.1-2003-01-30-10:28:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
12 #include <ngx_config.h>
278
0ba4821f4460 nginx-0.0.2-2004-03-04-10:04:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 195
diff changeset
13 #include <ngx_core.h>
57
a499e0d1f16e nginx-0.0.1-2003-01-30-10:28:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
14
a499e0d1f16e nginx-0.0.1-2003-01-30-10:28:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 26
diff changeset
15
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
16 typedef int ngx_fd_t;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
17 typedef struct stat ngx_file_info_t;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
18 typedef ino_t ngx_file_uniq_t;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
19
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
20
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
21 typedef struct {
3651
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
22 u_char *name;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
23 size_t size;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
24 void *addr;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
25 ngx_fd_t fd;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
26 ngx_log_t *log;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
27 } ngx_file_mapping_t;
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
28
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
29
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
30 typedef struct {
2933
d24b1739cf9d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2769
diff changeset
31 DIR *dir;
d24b1739cf9d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2769
diff changeset
32 struct dirent *de;
d24b1739cf9d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2769
diff changeset
33 struct stat info;
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
34
2933
d24b1739cf9d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2769
diff changeset
35 unsigned type:8;
d24b1739cf9d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2769
diff changeset
36 unsigned valid_info:1;
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
37 } ngx_dir_t;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
38
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
39
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
40 typedef struct {
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
41 size_t n;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
42 glob_t pglob;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
43 u_char *pattern;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
44 ngx_log_t *log;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
45 ngx_uint_t test;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
46 } ngx_glob_t;
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
47
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
48
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
49 #define NGX_INVALID_FILE -1
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
50 #define NGX_FILE_ERROR -1
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
51
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53
1975
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
54 #ifdef __CYGWIN__
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
55
2126
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
56 #define NGX_HAVE_CASELESS_FILESYSTEM 1
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
57
1975
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
58 #define ngx_open_file(name, mode, create, access) \
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
59 open((const char *) name, mode|create|O_BINARY, access)
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
60
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
61 #else
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
62
1048
c4f666fc3a7e ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents: 1046
diff changeset
63 #define ngx_open_file(name, mode, create, access) \
c4f666fc3a7e ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents: 1046
diff changeset
64 open((const char *) name, mode|create, access)
1975
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
65
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
66 #endif
3ca17d430c9a Cygwin O_BINARY mode
Igor Sysoev <igor@sysoev.ru>
parents: 1089
diff changeset
67
5
62b1a364857c nginx-0.0.1-2002-08-23-20:14:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 3
diff changeset
68 #define ngx_open_file_n "open()"
62b1a364857c nginx-0.0.1-2002-08-23-20:14:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 3
diff changeset
69
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
70 #define NGX_FILE_RDONLY O_RDONLY
1054
836fe133b6d5 NGX_FILE_WRONLY
Igor Sysoev <igor@sysoev.ru>
parents: 1053
diff changeset
71 #define NGX_FILE_WRONLY O_WRONLY
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
72 #define NGX_FILE_RDWR O_RDWR
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
73 #define NGX_FILE_CREATE_OR_OPEN O_CREAT
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
74 #define NGX_FILE_OPEN 0
2686
9e0ae986b587 adopt NGX_FILE_TRUNCATE for win32
Igor Sysoev <igor@sysoev.ru>
parents: 2629
diff changeset
75 #define NGX_FILE_TRUNCATE O_CREAT|O_TRUNC
2629
367b29612a00 Win32 appends synchronized if only FILE_APPEND_DATA and SYNCHRONIZE are set
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
76 #define NGX_FILE_APPEND O_WRONLY|O_APPEND
3497
ac281bc4c187 use non-blocking open() not to hang on FIFO files, etc.
Igor Sysoev <igor@sysoev.ru>
parents: 3322
diff changeset
77 #define NGX_FILE_NONBLOCK O_NONBLOCK
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
78
4475
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
79 #if (NGX_HAVE_OPENAT)
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
80 #define NGX_FILE_NOFOLLOW O_NOFOLLOW
4488
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
81
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
82 #if defined(O_DIRECTORY)
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
83 #define NGX_FILE_DIRECTORY O_DIRECTORY
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
84 #else
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
85 #define NGX_FILE_DIRECTORY 0
4475
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
86 #endif
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
87
4488
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
88 #if defined(O_SEARCH)
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
89 #define NGX_FILE_SEARCH O_SEARCH|NGX_FILE_DIRECTORY
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
90
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
91 #elif defined(O_EXEC)
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
92 #define NGX_FILE_SEARCH O_EXEC|NGX_FILE_DIRECTORY
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
93
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
94 #else
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
95 #define NGX_FILE_SEARCH O_RDONLY|NGX_FILE_DIRECTORY
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
96 #endif
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
97
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
98 #endif /* NGX_HAVE_OPENAT */
d33ce8cd0d70 Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4485
diff changeset
99
1048
c4f666fc3a7e ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents: 1046
diff changeset
100 #define NGX_FILE_DEFAULT_ACCESS 0644
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2550
diff changeset
101 #define NGX_FILE_OWNER_ACCESS 0600
1048
c4f666fc3a7e ngx_open_file(name, access, create) > ngx_open_file(name, mode, create, access)
Igor Sysoev <igor@sysoev.ru>
parents: 1046
diff changeset
102
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
103
24
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 8
diff changeset
104 #define ngx_close_file close
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 8
diff changeset
105 #define ngx_close_file_n "close()"
77c7629a2627 nginx-0.0.1-2002-12-10-21:05:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 8
diff changeset
106
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
107
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
108 #define ngx_delete_file(name) unlink((const char *) name)
185
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
109 #define ngx_delete_file_n "unlink()"
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
110
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
111
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
112 ngx_fd_t ngx_open_tempfile(u_char *name, ngx_uint_t persistent,
1046
bb139aba3199 rename mode to access
Igor Sysoev <igor@sysoev.ru>
parents: 735
diff changeset
113 ngx_uint_t access);
74
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
114 #define ngx_open_tempfile_n "open()"
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
115
99
a059e1aa65d4 nginx-0.0.1-2003-06-02-19:24:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 75
diff changeset
116
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
117 ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset);
2180
61a09532e310 fix log message
Igor Sysoev <igor@sysoev.ru>
parents: 2143
diff changeset
118 #if (NGX_HAVE_PREAD)
61a09532e310 fix log message
Igor Sysoev <igor@sysoev.ru>
parents: 2143
diff changeset
119 #define ngx_read_file_n "pread()"
61a09532e310 fix log message
Igor Sysoev <igor@sysoev.ru>
parents: 2143
diff changeset
120 #else
5
62b1a364857c nginx-0.0.1-2002-08-23-20:14:30 import
Igor Sysoev <igor@sysoev.ru>
parents: 3
diff changeset
121 #define ngx_read_file_n "read()"
2180
61a09532e310 fix log message
Igor Sysoev <igor@sysoev.ru>
parents: 2143
diff changeset
122 #endif
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
124 ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
125 off_t offset);
74
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
126
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
127 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
128 off_t offset, ngx_pool_t *pool);
74
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
129
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
130
1055
0f692964f1b3 ngx_read_fd()
Igor Sysoev <igor@sysoev.ru>
parents: 1054
diff changeset
131 #define ngx_read_fd read
0f692964f1b3 ngx_read_fd()
Igor Sysoev <igor@sysoev.ru>
parents: 1054
diff changeset
132 #define ngx_read_fd_n "read()"
0f692964f1b3 ngx_read_fd()
Igor Sysoev <igor@sysoev.ru>
parents: 1054
diff changeset
133
2302
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
134 /*
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
135 * we use inlined function instead of simple #define
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
136 * because glibc 2.3 sets warn_unused_result attribute for write()
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
137 * and in this case gcc 4.3 ignores (void) cast
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
138 */
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
139 static ngx_inline ssize_t
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
140 ngx_write_fd(ngx_fd_t fd, void *buf, size_t n)
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
141 {
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
142 return write(fd, buf, n);
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
143 }
2abf14c952a2 compatibility with glibc 2.3, warn_unused_result attribute for write()
Igor Sysoev <igor@sysoev.ru>
parents: 2259
diff changeset
144
1055
0f692964f1b3 ngx_read_fd()
Igor Sysoev <igor@sysoev.ru>
parents: 1054
diff changeset
145 #define ngx_write_fd_n "write()"
0f692964f1b3 ngx_read_fd()
Igor Sysoev <igor@sysoev.ru>
parents: 1054
diff changeset
146
2769
9d986c4e796f introduce ngx_write_console() to support OEM code pages
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
147
9d986c4e796f introduce ngx_write_console() to support OEM code pages
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
148 #define ngx_write_console ngx_write_fd
9d986c4e796f introduce ngx_write_console() to support OEM code pages
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
149
9d986c4e796f introduce ngx_write_console() to support OEM code pages
Igor Sysoev <igor@sysoev.ru>
parents: 2758
diff changeset
150
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 497
diff changeset
151 #define ngx_linefeed(p) *p++ = LF;
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 497
diff changeset
152 #define NGX_LINEFEED_SIZE 1
4283
f72496073689 Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()
Igor Sysoev <igor@sysoev.ru>
parents: 3970
diff changeset
153 #define NGX_LINEFEED "\x0a"
571
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 497
diff changeset
154
458b6c3fea65 nginx-0.3.7-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 497
diff changeset
155
633
f971949ffb58 nginx-0.3.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
156 #define ngx_rename_file(o, n) rename((const char *) o, (const char *) n)
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
157 #define ngx_rename_file_n "rename()"
170
c42be4185301 nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
158
c42be4185301 nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
159
669
562806624c4a nginx-0.3.56-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
160 #define ngx_change_file_access(n, a) chmod((const char *) n, a)
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
161 #define ngx_change_file_access_n "chmod()"
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
162
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
163
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
164 ngx_int_t ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s);
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 669
diff changeset
165 #define ngx_set_file_time_n "utimes()"
669
562806624c4a nginx-0.3.56-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
166
562806624c4a nginx-0.3.56-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
167
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
168 #define ngx_file_info(file, sb) stat((const char *) file, sb)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
169 #define ngx_file_info_n "stat()"
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
170
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
171 #define ngx_fd_info(fd, sb) fstat(fd, sb)
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
172 #define ngx_fd_info_n "fstat()"
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
173
3501
423ff11e3018 use lstat() for WebDAV DELETE, COPY, and MOVE to handle symlinks
Igor Sysoev <igor@sysoev.ru>
parents: 3497
diff changeset
174 #define ngx_link_info(file, sb) lstat((const char *) file, sb)
423ff11e3018 use lstat() for WebDAV DELETE, COPY, and MOVE to handle symlinks
Igor Sysoev <igor@sysoev.ru>
parents: 3497
diff changeset
175 #define ngx_link_info_n "lstat()"
423ff11e3018 use lstat() for WebDAV DELETE, COPY, and MOVE to handle symlinks
Igor Sysoev <igor@sysoev.ru>
parents: 3497
diff changeset
176
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
177 #define ngx_is_dir(sb) (S_ISDIR((sb)->st_mode))
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
178 #define ngx_is_file(sb) (S_ISREG((sb)->st_mode))
669
562806624c4a nginx-0.3.56-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
179 #define ngx_is_link(sb) (S_ISLNK((sb)->st_mode))
3281
c5af9f73c664 fix "if (!-x ...)"
Igor Sysoev <igor@sysoev.ru>
parents: 3200
diff changeset
180 #define ngx_is_exec(sb) (((sb)->st_mode & S_IXUSR) == S_IXUSR)
1053
b9fa23cda4cc ngx_file_access() and ngx_de_access()
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
181 #define ngx_file_access(sb) ((sb)->st_mode & 0777)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
182 #define ngx_file_size(sb) (sb)->st_size
4498
569ea17767bf Workaround for fs_size on ZFS (ticket #46).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4488
diff changeset
183 #define ngx_file_fs_size(sb) ngx_max((sb)->st_size, (sb)->st_blocks * 512)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
184 #define ngx_file_mtime(sb) (sb)->st_mtime
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
185 #define ngx_file_uniq(sb) (sb)->st_ino
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
187
3651
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
188 ngx_int_t ngx_create_file_mapping(ngx_file_mapping_t *fm);
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
189 void ngx_close_file_mapping(ngx_file_mapping_t *fm);
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
190
515d50917016 ngx_create_file_mapping()
Igor Sysoev <igor@sysoev.ru>
parents: 3501
diff changeset
191
2126
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
192 #if (NGX_HAVE_CASELESS_FILESYSTEM)
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
193
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
194 #define ngx_filename_cmp(s1, s2, n) strncasecmp((char *) s1, (char *) s2, n)
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
195
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
196 #else
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
197
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
198 #define ngx_filename_cmp ngx_memcmp
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
199
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
200 #endif
5e954395a15e case insensitive file system location support provided by locale only
Igor Sysoev <igor@sysoev.ru>
parents: 1980
diff changeset
201
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
202
2259
0864138899f1 $realpath_root
Igor Sysoev <igor@sysoev.ru>
parents: 2248
diff changeset
203 #define ngx_realpath(p, r) realpath((char *) p, (char *) r)
0864138899f1 $realpath_root
Igor Sysoev <igor@sysoev.ru>
parents: 2248
diff changeset
204 #define ngx_realpath_n "realpath()"
2758
77264e0157ad -p and --prefix=
Igor Sysoev <igor@sysoev.ru>
parents: 2744
diff changeset
205 #define ngx_getcwd(buf, size) (getcwd((char *) buf, size) != NULL)
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
206 #define ngx_getcwd_n "getcwd()"
2744
e50a2faac31d ngx_path_separator()
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
207 #define ngx_path_separator(c) ((c) == '/')
e50a2faac31d ngx_path_separator()
Igor Sysoev <igor@sysoev.ru>
parents: 2743
diff changeset
208
336
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
209 #define NGX_MAX_PATH PATH_MAX
ca9a7f8c86da nginx-0.0.3-2004-05-18-19:29:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 333
diff changeset
210
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
211 #define NGX_DIR_MASK_LEN 0
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
212
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
213
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 457
diff changeset
214 ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
185
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
215 #define ngx_open_dir_n "opendir()"
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
216
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
217
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
218 #define ngx_close_dir(d) closedir((d)->dir)
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
219 #define ngx_close_dir_n "closedir()"
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
220
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
221
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
222 ngx_int_t ngx_read_dir(ngx_dir_t *dir);
185
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
223 #define ngx_read_dir_n "readdir()"
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
224
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
225
669
562806624c4a nginx-0.3.56-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 633
diff changeset
226 #define ngx_create_dir(name, access) mkdir((const char *) name, access)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
227 #define ngx_create_dir_n "mkdir()"
74
17ab1af8c3dd nginx-0.0.1-2003-04-11-20:01:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
228
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
229
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 278
diff changeset
230 #define ngx_delete_dir(name) rmdir((const char *) name)
185
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
231 #define ngx_delete_dir_n "rmdir()"
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
232
d5f50cefc322 nginx-0.0.1-2003-11-14-19:52:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 184
diff changeset
233
1089
b2e6eb425770 use ngx_dir_access() to enable search bits for directory
Igor Sysoev <igor@sysoev.ru>
parents: 1055
diff changeset
234 #define ngx_dir_access(a) (a | (a & 0444) >> 2)
b2e6eb425770 use ngx_dir_access() to enable search bits for directory
Igor Sysoev <igor@sysoev.ru>
parents: 1055
diff changeset
235
b2e6eb425770 use ngx_dir_access() to enable search bits for directory
Igor Sysoev <igor@sysoev.ru>
parents: 1055
diff changeset
236
457
ded1284520cc nginx-0.1.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
237 #define ngx_de_name(dir) ((u_char *) (dir)->de->d_name)
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
238 #if (NGX_HAVE_D_NAMLEN)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
239 #define ngx_de_namelen(dir) (dir)->de->d_namlen
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
240 #else
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
241 #define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name)
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
242 #endif
3200
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
243
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
244 static ngx_inline ngx_int_t
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
245 ngx_de_info(u_char *name, ngx_dir_t *dir)
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
246 {
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
247 dir->type = 0;
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
248 return stat((const char *) name, &dir->info);
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
249 }
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
250
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
251 #define ngx_de_info_n "stat()"
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
252 #define ngx_de_link_info(name, dir) lstat((const char *) name, &(dir)->info)
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
253 #define ngx_de_link_info_n "lstat()"
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
254
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
255 #if (NGX_HAVE_D_TYPE)
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
256
3200
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
257 /*
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
258 * some file systems (e.g. XFS on Linux and CD9660 on FreeBSD)
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
259 * do not set dirent.d_type
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
260 */
2550
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
261
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
262 #define ngx_de_is_dir(dir) \
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
263 (((dir)->type) ? ((dir)->type == DT_DIR) : (S_ISDIR((dir)->info.st_mode)))
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
264 #define ngx_de_is_file(dir) \
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
265 (((dir)->type) ? ((dir)->type == DT_REG) : (S_ISREG((dir)->info.st_mode)))
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
266 #define ngx_de_is_link(dir) \
3200
26784c34e8be *) reset cached dirent.d_type after stat()
Igor Sysoev <igor@sysoev.ru>
parents: 3178
diff changeset
267 (((dir)->type) ? ((dir)->type == DT_LNK) : (S_ISLNK((dir)->info.st_mode)))
2550
5e87ddb4764f XFS on Linux does not set dirent.d_type,
Igor Sysoev <igor@sysoev.ru>
parents: 2302
diff changeset
268
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
269 #else
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
270
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
271 #define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
272 #define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))
497
d7c90bb5ce83 nginx-0.1.23-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
273 #define ngx_de_is_link(dir) (S_ISLNK((dir)->info.st_mode))
2234
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
274
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
275 #endif
c7c319896bb4 *) autoconfigure struct dirent capabilities
Igor Sysoev <igor@sysoev.ru>
parents: 2232
diff changeset
276
1053
b9fa23cda4cc ngx_file_access() and ngx_de_access()
Igor Sysoev <igor@sysoev.ru>
parents: 1048
diff changeset
277 #define ngx_de_access(dir) (((dir)->info.st_mode) & 0777)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
278 #define ngx_de_size(dir) (dir)->info.st_size
4498
569ea17767bf Workaround for fs_size on ZFS (ticket #46).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4488
diff changeset
279 #define ngx_de_fs_size(dir) \
569ea17767bf Workaround for fs_size on ZFS (ticket #46).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4488
diff changeset
280 ngx_max((dir)->info.st_size, (dir)->info.st_blocks * 512)
186
c1f3a3c7c5db nginx-0.0.1-2003-11-17-00:49:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 185
diff changeset
281 #define ngx_de_mtime(dir) (dir)->info.st_mtime
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
282
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
283
727
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
284 ngx_int_t ngx_open_glob(ngx_glob_t *gl);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
285 #define ngx_open_glob_n "glob()"
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
286 ngx_int_t ngx_read_glob(ngx_glob_t *gl, ngx_str_t *name);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
287 void ngx_close_glob(ngx_glob_t *gl);
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
288
532d15ddbe68 glob support in include
Igor Sysoev <igor@sysoev.ru>
parents: 691
diff changeset
289
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
290 ngx_err_t ngx_trylock_fd(ngx_fd_t fd);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
291 ngx_err_t ngx_lock_fd(ngx_fd_t fd);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
292 ngx_err_t ngx_unlock_fd(ngx_fd_t fd);
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
293
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
294 #define ngx_trylock_fd_n "fcntl(F_SETLK, F_WRLCK)"
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
295 #define ngx_lock_fd_n "fcntl(F_SETLKW, F_WRLCK)"
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
296 #define ngx_unlock_fd_n "fcntl(F_SETLK, F_UNLCK)"
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
297
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 571
diff changeset
298
3178
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
299 #if (NGX_HAVE_F_READAHEAD)
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
300
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
301 #define NGX_HAVE_READ_AHEAD 1
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
302
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
303 #define ngx_read_ahead(fd, n) fcntl(fd, F_READAHEAD, (int) n)
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
304 #define ngx_read_ahead_n "fcntl(fd, F_READAHEAD)"
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
305
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
306 #elif (NGX_HAVE_POSIX_FADVISE)
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
307
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
308 #define NGX_HAVE_READ_AHEAD 1
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
309
3322
e19df6e65352 fix posix_fadvise() error handling
Igor Sysoev <igor@sysoev.ru>
parents: 3294
diff changeset
310 ngx_int_t ngx_read_ahead(ngx_fd_t fd, size_t n);
3178
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
311 #define ngx_read_ahead_n "posix_fadvise(POSIX_FADV_SEQUENTIAL)"
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
312
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
313 #else
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
314
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
315 #define ngx_read_ahead(fd, n) 0
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
316 #define ngx_read_ahead_n "ngx_read_ahead_n"
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
317
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
318 #endif
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
319
975f0558aab3 read_ahead
Igor Sysoev <igor@sysoev.ru>
parents: 3052
diff changeset
320
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
321 #if (NGX_HAVE_O_DIRECT)
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
322
2248
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
323 ngx_int_t ngx_directio_on(ngx_fd_t fd);
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
324 #define ngx_directio_on_n "fcntl(O_DIRECT)"
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
325
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
326 ngx_int_t ngx_directio_off(ngx_fd_t fd);
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
327 #define ngx_directio_off_n "fcntl(!O_DIRECT)"
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
328
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
329 #elif (NGX_HAVE_F_NOCACHE)
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
330
2248
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
331 #define ngx_directio_on(fd) fcntl(fd, F_NOCACHE, 1)
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
332 #define ngx_directio_on_n "fcntl(F_NOCACHE, 1)"
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
333
2143
56964e5b77db Solaris directio()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
334 #elif (NGX_HAVE_DIRECTIO)
56964e5b77db Solaris directio()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
335
2248
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
336 #define ngx_directio_on(fd) directio(fd, DIRECTIO_ON)
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
337 #define ngx_directio_on_n "directio(DIRECTIO_ON)"
2143
56964e5b77db Solaris directio()
Igor Sysoev <igor@sysoev.ru>
parents: 2129
diff changeset
338
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
339 #else
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
340
2248
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
341 #define ngx_directio_on(fd) 0
1adec90a0e46 disable directio for unaligned reads in Linux
Igor Sysoev <igor@sysoev.ru>
parents: 2234
diff changeset
342 #define ngx_directio_on_n "ngx_directio_on_n"
2129
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
343
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
344 #endif
25add486e7aa directio
Igor Sysoev <igor@sysoev.ru>
parents: 2126
diff changeset
345
2615
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
346 size_t ngx_fs_bsize(u_char *name);
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
347
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
348
4475
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
349 #if (NGX_HAVE_OPENAT)
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
350
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
351 #define ngx_openat_file(fd, name, mode, create, access) \
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
352 openat(fd, (const char *) name, mode|create, access)
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
353
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
354 #define ngx_openat_file_n "openat()"
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
355
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
356 #define ngx_file_at_info(fd, name, sb, flag) \
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
357 fstatat(fd, (const char *) name, sb, flag)
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
358
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
359 #define ngx_file_at_info_n "fstatat()"
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
360
4485
f7d131008e9c Disable symlinks: added explicit cast of AT_FDCWD (ticket #111).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4475
diff changeset
361 #define NGX_AT_FDCWD (ngx_fd_t) AT_FDCWD
f7d131008e9c Disable symlinks: added explicit cast of AT_FDCWD (ticket #111).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4475
diff changeset
362
4475
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
363 #endif
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
364
0b05acc045eb Added openat()/fstatat().
Andrey Belov <defan@nginx.com>
parents: 4412
diff changeset
365
2743
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
366 #define ngx_stderr STDERR_FILENO
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
367 #define ngx_set_stderr(fd) dup2(fd, STDERR_FILENO)
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
368 #define ngx_set_stderr_n "dup2(STDERR_FILENO)"
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
369
d8316f307b6a issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents: 2686
diff changeset
370
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
371 #if (NGX_HAVE_FILE_AIO)
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
372
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
373 ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size,
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
374 off_t offset, ngx_pool_t *pool);
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
375
3294
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3281
diff changeset
376 extern ngx_uint_t ngx_file_aio;
04cfc09b8b8d export aio presence knowledge to prevent using "aio sendfile",
Igor Sysoev <igor@sysoev.ru>
parents: 3281
diff changeset
377
3052
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
378 #endif
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
379
6060225e9261 FreeBSD and Linux AIO support
Igor Sysoev <igor@sysoev.ru>
parents: 2933
diff changeset
380
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 6
diff changeset
381 #endif /* _NGX_FILES_H_INCLUDED_ */