Mercurial > hg > nginx
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) |