# HG changeset patch # User Maxim Dounin <mdou...@mdounin.ru> # Date 1673548916 -10800 # Thu Jan 12 21:41:56 2023 +0300 # Node ID 7cf820c46860796cff91f53a5d2db669bb5b5a6c # Parent d05c0adf5890aecc68ce8906ef19ca07502ed071 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. diff -r d05c0adf5890 -r 7cf820c46860 src/os/win32/ngx_files.c --- a/src/os/win32/ngx_files.c Thu Jan 12 21:41:39 2023 +0300 +++ b/src/os/win32/ngx_files.c Thu Jan 12 21:41:56 2023 +0300 @@ -428,6 +428,30 @@ ngx_realpath(u_char *path, u_char *resol } +size_t +ngx_getcwd(u_char *buf, size_t size) +{ + u_char *p; + size_t n; + u_short utf16[NGX_MAX_PATH]; + + n = GetCurrentDirectoryW(NGX_MAX_PATH, utf16); + + if (n == 0) { + return 0; + } + + p = ngx_utf16_to_utf8(buf, utf16, &size, NULL); + + if (p != buf) { + ngx_free(p); + return 0; + } + + return size - 1; +} + + ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir) { diff -r d05c0adf5890 -r 7cf820c46860 src/os/win32/ngx_files.h --- a/src/os/win32/ngx_files.h Thu Jan 12 21:41:39 2023 +0300 +++ b/src/os/win32/ngx_files.h Thu Jan 12 21:41:56 2023 +0300 @@ -178,8 +178,12 @@ void ngx_close_file_mapping(ngx_file_map u_char *ngx_realpath(u_char *path, u_char *resolved); #define ngx_realpath_n "" -#define ngx_getcwd(buf, size) GetCurrentDirectory(size, (char *) buf) + + +size_t ngx_getcwd(u_char *buf, size_t size); #define ngx_getcwd_n "GetCurrentDirectory()" + + #define ngx_path_separator(c) ((c) == '/' || (c) == '\\') #define NGX_HAVE_MAX_PATH 1 _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel