Mercurial > hg > nginx-quic
comparison src/os/unix/ngx_files.c @ 290:87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 16 Mar 2004 07:10:12 +0000 |
parents | 0ba4821f4460 |
children | 00c5660d2707 |
comparison
equal
deleted
inserted
replaced
289:0750faf8d7e3 | 290:87e73f067470 |
---|---|
1 | 1 |
2 #include <ngx_config.h> | 2 #include <ngx_config.h> |
3 #include <ngx_core.h> | 3 #include <ngx_core.h> |
4 | 4 |
5 | 5 |
6 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) | 6 ssize_t ngx_read_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset) |
7 { | 7 { |
8 ssize_t n; | 8 ssize_t n; |
9 | 9 |
10 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0, | 10 ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0, |
11 "read: %d, %X, %d, " OFF_T_FMT, file->fd, buf, size, offset); | 11 "read: %d, %X, %d, " OFF_T_FMT, file->fd, buf, size, offset); |
46 | 46 |
47 return n; | 47 return n; |
48 } | 48 } |
49 | 49 |
50 | 50 |
51 ssize_t ngx_write_file(ngx_file_t *file, char *buf, size_t size, off_t offset) | 51 ssize_t ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset) |
52 { | 52 { |
53 ssize_t n; | 53 ssize_t n; |
54 | 54 |
55 #if (HAVE_PWRITE) | 55 #if (HAVE_PWRITE) |
56 | 56 |
102 | 102 |
103 | 103 |
104 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl, | 104 ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl, |
105 off_t offset, ngx_pool_t *pool) | 105 off_t offset, ngx_pool_t *pool) |
106 { | 106 { |
107 char *prev; | 107 u_char *prev; |
108 size_t size; | 108 size_t size; |
109 ssize_t n; | 109 ssize_t n; |
110 struct iovec *iov; | 110 struct iovec *iov; |
111 ngx_err_t err; | 111 ngx_err_t err; |
112 ngx_array_t io; | 112 ngx_array_t io; |
131 if (prev == cl->hunk->pos) { | 131 if (prev == cl->hunk->pos) { |
132 iov->iov_len += cl->hunk->last - cl->hunk->pos; | 132 iov->iov_len += cl->hunk->last - cl->hunk->pos; |
133 | 133 |
134 } else { | 134 } else { |
135 ngx_test_null(iov, ngx_push_array(&io), NGX_ERROR); | 135 ngx_test_null(iov, ngx_push_array(&io), NGX_ERROR); |
136 iov->iov_base = cl->hunk->pos; | 136 iov->iov_base = (void *) cl->hunk->pos; |
137 iov->iov_len = cl->hunk->last - cl->hunk->pos; | 137 iov->iov_len = cl->hunk->last - cl->hunk->pos; |
138 } | 138 } |
139 | 139 |
140 size += cl->hunk->last - cl->hunk->pos; | 140 size += cl->hunk->last - cl->hunk->pos; |
141 prev = cl->hunk->last; | 141 prev = cl->hunk->last; |
144 | 144 |
145 /* use pwrite() if there's the only iovec buffer */ | 145 /* use pwrite() if there's the only iovec buffer */ |
146 | 146 |
147 if (io.nelts == 1) { | 147 if (io.nelts == 1) { |
148 iov = io.elts; | 148 iov = io.elts; |
149 return ngx_write_file(file, iov[0].iov_base, iov[0].iov_len, offset); | 149 return ngx_write_file(file, (u_char *) iov[0].iov_base, iov[0].iov_len, |
150 offset); | |
150 } | 151 } |
151 | 152 |
152 if (file->sys_offset != offset) { | 153 if (file->sys_offset != offset) { |
153 if (lseek(file->fd, offset, SEEK_SET) == -1) { | 154 if (lseek(file->fd, offset, SEEK_SET) == -1) { |
154 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); | 155 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); |
178 } | 179 } |
179 | 180 |
180 | 181 |
181 int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) | 182 int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) |
182 { | 183 { |
183 dir->dir = opendir(name->data); | 184 dir->dir = opendir((const char *) name->data); |
184 | 185 |
185 if (dir->dir == NULL) { | 186 if (dir->dir == NULL) { |
186 return NGX_ERROR; | 187 return NGX_ERROR; |
187 } | 188 } |
188 | 189 |