win32 ngx_file_info() utf8 support
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index d86b22b..e4c42c7 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -319,14 +319,26 @@
 ngx_int_t
 ngx_file_info(u_char *file, ngx_file_info_t *sb)
 {
-    WIN32_FILE_ATTRIBUTE_DATA  fa;
+    long                        rc;
+    u_short                    *u;
+    ngx_err_t                   err;
+    WIN32_FILE_ATTRIBUTE_DATA   fa;
+    u_short                     utf16[NGX_UTF16_BUFLEN];
 
-    /* NT4 and Win98 */
+    u = ngx_utf8_to_utf16(utf16, file, NGX_UTF16_BUFLEN);
 
-    if (GetFileAttributesEx((char *) file, GetFileExInfoStandard, &fa) == 0) {
+    if (u == NULL) {
         return NGX_FILE_ERROR;
     }
 
+    rc = GetFileAttributesExW(u, GetFileExInfoStandard, &fa);
+
+    if (u != utf16) {
+        err = ngx_errno;
+        ngx_free(u);
+        ngx_set_errno(err);
+    }
+
     sb->dwFileAttributes = fa.dwFileAttributes;
     sb->ftCreationTime = fa.ftCreationTime;
     sb->ftLastAccessTime = fa.ftLastAccessTime;
@@ -334,7 +346,7 @@
     sb->nFileSizeHigh = fa.nFileSizeHigh;
     sb->nFileSizeLow = fa.nFileSizeLow;
 
-    return ~NGX_FILE_ERROR;
+    return rc;
 }