comparison src/os/unix/ngx_files.c @ 190:02a715e85df1

nginx-0.0.1-2003-11-19-00:34:08 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 18 Nov 2003 21:34:08 +0000
parents c1f3a3c7c5db
children 71ce40b3c37b
comparison
equal deleted inserted replaced
189:c966c09be66b 190:02a715e85df1
23 return NGX_ERROR; 23 return NGX_ERROR;
24 } 24 }
25 25
26 #else 26 #else
27 27
28 if (file->offset != offset) { 28 if (file->sys_offset != offset) {
29 if (lseek(file->fd, offset, SEEK_SET) == -1) { 29 if (lseek(file->fd, offset, SEEK_SET) == -1) {
30 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); 30 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
31 return NGX_ERROR; 31 return NGX_ERROR;
32 } 32 }
33 } 33 }
34 34
35 file->sys_offset = offset;
36
35 n = read(file->fd, buf, size); 37 n = read(file->fd, buf, size);
36 38
37 if (n == -1) { 39 if (n == -1) {
38 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "read() failed"); 40 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "read() failed");
39 return NGX_ERROR; 41 return NGX_ERROR;
40 } 42 }
43
44 file->sys_offset += n;
41 45
42 #endif 46 #endif
43 47
44 file->offset += n; 48 file->offset += n;
45 49
66 return NGX_ERROR; 70 return NGX_ERROR;
67 } 71 }
68 72
69 #else 73 #else
70 74
71 if (file->offset != offset) { 75 if (file->sys_offset != offset) {
72 if (lseek(file->fd, offset, SEEK_SET) == -1) { 76 if (lseek(file->fd, offset, SEEK_SET) == -1) {
73 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); 77 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
74 return NGX_ERROR; 78 return NGX_ERROR;
75 } 79 }
76 } 80 }
81
82 file->sys_offset = offset;
77 83
78 n = write(file->fd, buf, size); 84 n = write(file->fd, buf, size);
79 85
80 if (n == -1) { 86 if (n == -1) {
81 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "write() failed"); 87 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "write() failed");
85 if ((size_t) n != size) { 91 if ((size_t) n != size) {
86 ngx_log_error(NGX_LOG_CRIT, file->log, 0, 92 ngx_log_error(NGX_LOG_CRIT, file->log, 0,
87 "write() has written only %d of %d", n, size); 93 "write() has written only %d of %d", n, size);
88 return NGX_ERROR; 94 return NGX_ERROR;
89 } 95 }
96
97 file->sys_offset += n;
90 98
91 #endif 99 #endif
92 100
93 file->offset += n; 101 file->offset += n;
94 102
148 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed"); 156 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek() failed");
149 return NGX_ERROR; 157 return NGX_ERROR;
150 } 158 }
151 } 159 }
152 160
161 file->sys_offset = offset;
162
153 n = writev(file->fd, io.elts, io.nelts); 163 n = writev(file->fd, io.elts, io.nelts);
154 164
155 if (n == -1) { 165 if (n == -1) {
156 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "writev() failed"); 166 ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "writev() failed");
157 return NGX_ERROR; 167 return NGX_ERROR;
161 ngx_log_error(NGX_LOG_CRIT, file->log, 0, 171 ngx_log_error(NGX_LOG_CRIT, file->log, 0,
162 "writev() has written only %d of %d", n, size); 172 "writev() has written only %d of %d", n, size);
163 return NGX_ERROR; 173 return NGX_ERROR;
164 } 174 }
165 175
176 file->sys_offset += n;
166 file->offset += n; 177 file->offset += n;
167 178
168 return n; 179 return n;
169 } 180 }
170 181