comparison src/os/win32/ngx_files.c @ 8132:8ea2e052feb4

Win32: non-ASCII directory names support in ngx_getcwd(). This makes it possible to start nginx without a prefix explicitly set in a directory with non-ASCII characters in it.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Feb 2023 20:49:44 +0300
parents 751f79bd802c
children e0f385521c79
comparison
equal deleted inserted replaced
8131:751f79bd802c 8132:8ea2e052feb4
424 u_char * 424 u_char *
425 ngx_realpath(u_char *path, u_char *resolved) 425 ngx_realpath(u_char *path, u_char *resolved)
426 { 426 {
427 /* STUB */ 427 /* STUB */
428 return path; 428 return path;
429 }
430
431
432 size_t
433 ngx_getcwd(u_char *buf, size_t size)
434 {
435 u_char *p;
436 size_t n;
437 u_short utf16[NGX_MAX_PATH];
438
439 n = GetCurrentDirectoryW(NGX_MAX_PATH, utf16);
440
441 if (n == 0) {
442 return 0;
443 }
444
445 if (n > NGX_MAX_PATH) {
446 ngx_set_errno(ERROR_INSUFFICIENT_BUFFER);
447 return 0;
448 }
449
450 p = ngx_utf16_to_utf8(buf, utf16, &size, NULL);
451
452 if (p == NULL) {
453 return 0;
454 }
455
456 if (p != buf) {
457 ngx_free(p);
458 ngx_set_errno(ERROR_INSUFFICIENT_BUFFER);
459 return 0;
460 }
461
462 return size - 1;
429 } 463 }
430 464
431 465
432 ngx_int_t 466 ngx_int_t
433 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) 467 ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)