Mercurial > hg > nginx-quic
comparison src/os/win32/ngx_files.c @ 186:c1f3a3c7c5db
nginx-0.0.1-2003-11-17-00:49:42 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 16 Nov 2003 21:49:42 +0000 |
parents | d5f50cefc322 |
children | 7c7183b3ea8b |
comparison
equal
deleted
inserted
replaced
185:d5f50cefc322 | 186:c1f3a3c7c5db |
---|---|
161 | 161 |
162 return total; | 162 return total; |
163 } | 163 } |
164 | 164 |
165 | 165 |
166 int ngx_rename_file(ngx_str_t *from, ngx_str_t *to, ngx_pool_t *pool) | 166 int ngx_win32_rename_file(ngx_str_t *from, ngx_str_t *to, ngx_pool_t *pool) |
167 { | 167 { |
168 int rc, collision; | 168 int rc, collision; |
169 u_int num; | 169 u_int num; |
170 char *name; | 170 char *name; |
171 ngx_err_t err; | 171 |
172 | 172 if (!(name = ngx_palloc(pool, to->len + 1 + 10 + 1 + sizeof("DELETE")))) { |
173 name = ngx_palloc(pool, to->len + 1 + 10 + 1 + sizeof("DELETE")); | 173 return NGX_ERROR; |
174 } | |
175 | |
174 ngx_memcpy(name, to->data, to->len); | 176 ngx_memcpy(name, to->data, to->len); |
175 | 177 |
176 collision = 0; | 178 collision = 0; |
177 | 179 |
178 /* mutex_lock() (per cache or single ?) */ | 180 /* mutex_lock() (per cache or single ?) */ |
182 | 184 |
183 ngx_snprintf(name + to->len, 1 + 10 + 1 + sizeof("DELETE"), | 185 ngx_snprintf(name + to->len, 1 + 10 + 1 + sizeof("DELETE"), |
184 ".%010u.DELETE", num); | 186 ".%010u.DELETE", num); |
185 | 187 |
186 if (MoveFile(to->data, name) == 0) { | 188 if (MoveFile(to->data, name) == 0) { |
187 err = ngx_errno; | |
188 if (err == NGX_ENOENT || err == NGX_ENOTDIR) { | |
189 return NGX_ERROR; | |
190 } | |
191 | |
192 collision = 1; | 189 collision = 1; |
193 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, | 190 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, |
194 "MoveFile() failed"); | 191 "MoveFile() failed"); |
195 } | 192 } |
196 | 193 |
197 } while (collision); | 194 } while (collision); |
195 | |
196 if (MoveFile(from->data, to->data) == 0) { | |
197 rc = NGX_ERROR; | |
198 | |
199 } else { | |
200 rc = NGX_OK; | |
201 } | |
198 | 202 |
199 if (ngx_win32_version >= NGX_WIN_NT) { | 203 if (ngx_win32_version >= NGX_WIN_NT) { |
200 if (DeleteFile(name) == 0) { | 204 if (DeleteFile(name) == 0) { |
201 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, | 205 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, |
202 "DeleteFile() failed"); | 206 "DeleteFile() failed"); |
203 } | 207 } |
204 } | |
205 | |
206 if (MoveFile(from->data, to->data) == 0) { | |
207 rc = NGX_ERROR; | |
208 | 208 |
209 } else { | 209 } else { |
210 rc = NGX_OK; | 210 /* TODO: Win9X: update the open files table */ |
211 } | 211 } |
212 | 212 |
213 if (rc == NGX_ERROR) { | 213 if (rc == NGX_ERROR) { |
214 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, "MoveFile() failed"); | 214 ngx_log_error(NGX_LOG_ERR, pool->log, ngx_errno, "MoveFile() failed"); |
215 } | 215 } |
218 | 218 |
219 return rc; | 219 return rc; |
220 } | 220 } |
221 | 221 |
222 | 222 |
223 int ngx_file_type(char *file, ngx_file_info_t *sb) | 223 #if 0 |
224 | |
225 int ngx_file_info(char *file, ngx_file_info_t *sb) | |
224 { | 226 { |
225 WIN32_FILE_ATTRIBUTE_DATA fa; | 227 WIN32_FILE_ATTRIBUTE_DATA fa; |
226 | 228 |
227 /* NT4 and Win98 */ | 229 /* NT4 and Win98 */ |
228 | 230 |
238 sb->nFileSizeLow = fa.nFileSizeLow; | 240 sb->nFileSizeLow = fa.nFileSizeLow; |
239 | 241 |
240 return NGX_OK; | 242 return NGX_OK; |
241 } | 243 } |
242 | 244 |
243 | 245 #endif |
244 #if 0 | 246 |
245 | 247 |
246 /* Win95 */ | 248 int ngx_file_info(char *file, ngx_file_info_t *sb) |
247 | 249 { |
248 int ngx_file_type(char *file, ngx_file_info_t *sb) | 250 /* Win95 */ |
249 { | 251 |
250 sb->dwFileAttributes = GetFileAttributes(file); | 252 sb->dwFileAttributes = GetFileAttributes(file); |
251 | 253 |
252 if (sb->dwFileAttributes == INVALID_FILE_ATTRIBUTES) { | 254 if (sb->dwFileAttributes == INVALID_FILE_ATTRIBUTES) { |
253 return NGX_ERROR; | 255 return NGX_ERROR; |
254 } | 256 } |
255 | 257 |
256 return NGX_OK; | 258 return NGX_OK; |
257 } | 259 } |
258 | 260 |
259 #endif | 261 |
262 int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) | |
263 { | |
264 ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1); | |
265 | |
266 dir->dir = FindFirstFile(name->data, &dir->fd); | |
267 | |
268 if (dir->dir == INVALID_HANDLE_VALUE) { | |
269 return NGX_ERROR; | |
270 } | |
271 | |
272 dir->info_valid = 1; | |
273 dir->ready = 1; | |
274 | |
275 return NGX_OK; | |
276 } | |
277 | |
278 | |
279 int ngx_read_dir(ngx_dir_t *dir) | |
280 { | |
281 if (dir->ready) { | |
282 dir->ready = 0; | |
283 return NGX_OK; | |
284 } | |
285 | |
286 if (FindNextFile(dir->dir, &dir->fd) == 0) { | |
287 return NGX_ERROR; | |
288 } | |
289 | |
290 return NGX_OK; | |
291 } | |
260 | 292 |
261 | 293 |
262 int ngx_file_append_mode(ngx_fd_t fd) | 294 int ngx_file_append_mode(ngx_fd_t fd) |
263 { | 295 { |
264 if (SetFilePointer(fd, 0, NULL, FILE_END) == INVALID_SET_FILE_POINTER) { | 296 if (SetFilePointer(fd, 0, NULL, FILE_END) == INVALID_SET_FILE_POINTER) { |