Mercurial > hg > nginx-quic
comparison src/os/win32/ngx_files.c @ 2945:87da6664fb49 stable-0.7
merge r2897, r2898, r2899, r2901, r2902, r2904, r2905, r2906, r2907,
r2909, r2910, r2922, r2923, r2924, r2925, r2929:
various win32 fixes:
*) use no-threads for Unix builds only
*) Win32 returns ERROR_PATH_NOT_FOUND instead of ERROR_FILE_NOT_FOUND
*) add trailing zero to a file name in ngx_win32_rename_file()
*) fix logging in ngx_win32_rename_file()
*) allow shared memory segments more than 4G
*) fix memory leak in successful case
*) log shared memory name in failure case
*) test that zone has the same addresses in different processes
*) add drive letter for Win32 root path
*) log GetExitCodeProcess()'s errno
*) test premature process termination
*) fix debug logging
*) exit if no workers could not be started
*) do not quit old workers if no new workers could not be started
*) a signaller process should stop configuration processing just after
it is able to get pid file, this allows to not open log files, etc.
*) win32 master process had aready closed listening sockets
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 15 Jun 2009 09:48:15 +0000 |
parents | 4bd7825fab80 |
children | 5795b2710eef |
comparison
equal
deleted
inserted
replaced
2944:f892042956e3 | 2945:87da6664fb49 |
---|---|
267 /* mutex_lock() (per cache or single ?) */ | 267 /* mutex_lock() (per cache or single ?) */ |
268 | 268 |
269 for ( ;; ) { | 269 for ( ;; ) { |
270 num = ngx_next_temp_number(collision); | 270 num = ngx_next_temp_number(collision); |
271 | 271 |
272 ngx_sprintf(name + to->len, ".%0muA.DELETE", num); | 272 ngx_sprintf(name + to->len, ".%0muA.DELETE%Z", num); |
273 | 273 |
274 if (MoveFile((const char *) to->data, (const char *) name) != 0) { | 274 if (MoveFile((const char *) to->data, (const char *) name) != 0) { |
275 break; | 275 break; |
276 } | 276 } |
277 | 277 |
278 collision = 1; | 278 collision = 1; |
279 | 279 |
280 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, "MoveFile() failed"); | 280 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, |
281 "MoveFile() \"%s\" to \"%s\" failed", to->data, name); | |
281 } | 282 } |
282 | 283 |
283 if (MoveFile((const char *) from->data, (const char *) to->data) == 0) { | 284 if (MoveFile((const char *) from->data, (const char *) to->data) == 0) { |
284 rc = NGX_ERROR; | 285 rc = NGX_ERROR; |
285 | 286 |
286 } else { | 287 } else { |
287 rc = NGX_OK; | 288 rc = NGX_OK; |
288 } | 289 } |
289 | 290 |
290 if (DeleteFile((const char *) name) == 0) { | 291 if (DeleteFile((const char *) name) == 0) { |
291 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, "DeleteFile() failed"); | 292 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, |
293 "DeleteFile() \"%s\" failed", name); | |
292 } | 294 } |
293 | 295 |
294 if (rc == NGX_ERROR) { | 296 if (rc == NGX_ERROR) { |
295 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, "MoveFile() failed"); | 297 ngx_log_error(NGX_LOG_CRIT, log, ngx_errno, |
298 "MoveFile() \"%s\" to \"%s\" failed", | |
299 from->data, to->data); | |
296 } | 300 } |
297 | 301 |
298 /* mutex_unlock() */ | 302 /* mutex_unlock() */ |
299 | 303 |
300 ngx_free(name); | 304 ngx_free(name); |