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);