comparison src/os/unix/ngx_files.c @ 110:dad2fe8ecf08 NGINX_0_3_2

nginx 0.3.2 *) Feature: the Sun Studio 10 C compiler support. *) Feature: the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", and "fastcgi_upstream_fail_timeout" directives.
author Igor Sysoev <http://sysoev.ru>
date Wed, 12 Oct 2005 00:00:00 +0400
parents 72eb30262aac
children df17fbafec8f
comparison
equal deleted inserted replaced
109:97da525033a1 110:dad2fe8ecf08
6 6
7 #include <ngx_config.h> 7 #include <ngx_config.h>
8 #include <ngx_core.h> 8 #include <ngx_core.h>
9 9
10 10
11 ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset) 11 ssize_t
12 { 12 ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
13 ssize_t n; 13 {
14 ssize_t n;
14 15
15 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0, 16 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0,
16 "read: %d, %p, %uz, %O", file->fd, buf, size, offset); 17 "read: %d, %p, %uz, %O", file->fd, buf, size, offset);
17 18
18 #if (NGX_HAVE_PREAD) 19 #if (NGX_HAVE_PREAD)
51 52
52 return n; 53 return n;
53 } 54 }
54 55
55 56
56 ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset) 57 ssize_t
57 { 58 ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
58 ssize_t n; 59 {
60 ssize_t n;
59 61
60 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0, 62 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0,
61 "write: %d, %p, %uz, %O", file->fd, buf, size, offset); 63 "write: %d, %p, %uz, %O", file->fd, buf, size, offset);
62 64
63 #if (NGX_HAVE_PWRITE) 65 #if (NGX_HAVE_PWRITE)
107 109
108 return n; 110 return n;
109 } 111 }
110 112
111 113
112 ngx_fd_t ngx_open_tempfile(u_char *name, ngx_uint_t persistent) 114 ngx_fd_t
115 ngx_open_tempfile(u_char *name, ngx_uint_t persistent)
113 { 116 {
114 ngx_fd_t fd; 117 ngx_fd_t fd;
115 118
116 fd = open((const char *) name, O_CREAT|O_EXCL|O_RDWR, 0600); 119 fd = open((const char *) name, O_CREAT|O_EXCL|O_RDWR, 0600);
117 120
123 } 126 }
124 127
125 128
126 #define NGX_IOVS 8 129 #define NGX_IOVS 8
127 130
128 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl, 131 ssize_t
129 off_t offset, ngx_pool_t *pool) 132 ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl, off_t offset,
133 ngx_pool_t *pool)
130 { 134 {
131 u_char *prev; 135 u_char *prev;
132 size_t size; 136 size_t size;
133 ssize_t n; 137 ssize_t n;
134 ngx_array_t vec; 138 ngx_array_t vec;
214 218
215 return n; 219 return n;
216 } 220 }
217 221
218 222
219 ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) 223 ngx_int_t
224 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
220 { 225 {
221 dir->dir = opendir((const char *) name->data); 226 dir->dir = opendir((const char *) name->data);
222 227
223 if (dir->dir == NULL) { 228 if (dir->dir == NULL) {
224 return NGX_ERROR; 229 return NGX_ERROR;
226 231
227 dir->valid_info = 0; 232 dir->valid_info = 0;
228 233
229 return NGX_OK; 234 return NGX_OK;
230 } 235 }
236
237
238 ngx_int_t
239 ngx_lock_file(ngx_file_t *file)
240 {
241 ngx_err_t err;
242 struct flock fl;
243
244 fl.l_whence = SEEK_SET;
245 fl.l_len = 0;
246 fl.l_pid = 0;
247 fl.l_type = F_WRLCK;
248 fl.l_start = 0;
249
250 if (fcntl(file->fd, F_SETLK, &fl) == -1) {
251 err = ngx_errno;
252
253 if (err == NGX_EAGAIN) {
254 return NGX_BUSY;
255 }
256
257 ngx_log_error(NGX_LOG_ALERT, file->log, err,
258 "fcntl(%s, F_SETLK, F_WRLCK) failed", file->name.data);
259
260 return NGX_ERROR;
261 }
262
263 return NGX_OK;
264 }
265
266
267 ngx_int_t
268 ngx_unlock_file(ngx_file_t *file)
269 {
270 ngx_err_t err;
271 struct flock fl;
272
273 fl.l_whence = SEEK_SET;
274 fl.l_len = 0;
275 fl.l_pid = 0;
276 fl.l_type = F_UNLCK;
277 fl.l_start = 0;
278
279 if (fcntl(file->fd, F_SETLK, &fl) == -1) {
280 err = ngx_errno;
281
282 if (err == NGX_EAGAIN) {
283 return NGX_BUSY;
284 }
285
286 ngx_log_error(NGX_LOG_ALERT, file->log, err,
287 "fcntl(%s, F_SETLK, F_UNLCK) failed", file->name.data);
288
289 return NGX_ERROR;
290 }
291
292 return NGX_OK;
293 }