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