Skip to content

Commit cd2e1fb

Browse files
committed
nginx: rebase patch
would not be compatible with versions before 1.15.8
1 parent 9519ab5 commit cd2e1fb

File tree

1 file changed

+36
-32
lines changed

1 file changed

+36
-32
lines changed
Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,63 @@
1-
From f20ec74dfef1ad0e2792a33bef9173679398c3c8 Mon Sep 17 00:00:00 2001
1+
From 3e6a8cbee0f585286940120a0e3feec9fe3bad7a Mon Sep 17 00:00:00 2001
22
From: myfreeer <myfreeer@users.noreply.github.com>
3-
Date: Fri, 20 Jul 2018 14:10:25 +0800
3+
Date: Sun, 30 Dec 2018 20:40:21 +0800
44
Subject: [PATCH] win32: force utf-8 encoding in ngx_dir_t
55

66
---
7-
src/os/win32/ngx_files.c | 29 +++++++++++++++++++++++++++--
7+
src/os/win32/ngx_files.c | 27 ++++++++++++++++++++++-----
88
src/os/win32/ngx_files.h | 8 +++++---
9-
2 files changed, 32 insertions(+), 5 deletions(-)
9+
2 files changed, 27 insertions(+), 8 deletions(-)
1010

1111
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
12-
index 55d7f76..bb3960a 100644
12+
index 0b131b5..f2d07e1 100644
1313
--- a/src/os/win32/ngx_files.c
1414
+++ b/src/os/win32/ngx_files.c
15-
@@ -427,19 +427,39 @@ ngx_realpath(u_char *path, u_char *resolved)
16-
ngx_int_t
17-
ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
15+
@@ -429,6 +429,9 @@ ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
1816
{
17+
u_char *pattern, *p;
18+
ngx_err_t err;
1919
+ size_t len;
2020
+ u_short *u;
2121
+ u_short utf16[NGX_UTF16_BUFLEN];
22-
ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1);
2322

24-
- dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
23+
pattern = malloc(name->len + 3);
24+
if (pattern == NULL) {
25+
@@ -436,21 +439,30 @@ ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
26+
}
27+
28+
p = ngx_cpymem(pattern, name->data, name->len);
29+
-
30+
*p++ = '/';
31+
*p++ = '*';
32+
*p = '\0';
33+
34+
- dir->dir = FindFirstFile((const char *) pattern, &dir->finddata);
2535
+ len = NGX_UTF16_BUFLEN;
26-
+ u = ngx_utf8_to_utf16(utf16, name->data, &len);
27-
+
36+
+ u = ngx_utf8_to_utf16(utf16, pattern, &len);
37+
+ ngx_free(pattern);
2838
+ if (u == NULL) {
2939
+ return NGX_ERROR;
3040
+ }
31-
+
32-
+ dir->dir = FindFirstFileW((LPCWSTR) u, &dir->finddata);
33-
34-
name->data[name->len] = '\0';
3541

42+
+ dir->dir = FindFirstFileW((LPCWSTR) u, &dir->finddata);
43+
+ if (u != utf16) {
44+
+ ngx_free(u);
45+
+ }
3646
if (dir->dir == INVALID_HANDLE_VALUE) {
37-
+ if (u != utf16) {
38-
+ ngx_free(u);
39-
+ }
47+
err = ngx_errno;
48+
- ngx_free(pattern);
49+
ngx_set_errno(err);
4050
return NGX_ERROR;
4151
}
4252

53+
- ngx_free(pattern);
4354
+ dir->utf8_length = WideCharToMultiByte(CP_UTF8, 0, dir->finddata.cFileName, -1, NULL, 0, NULL, NULL);
4455
+ dir->utf8 = calloc(dir->utf8_length, sizeof(char));
4556
+ WideCharToMultiByte(CP_UTF8, 0, dir->finddata.cFileName, -1, dir->utf8, dir->utf8_length, NULL, NULL);
46-
+
57+
4758
dir->valid_info = 1;
4859
dir->ready = 1;
49-
50-
+ if (u != utf16) {
51-
+ ngx_free(u);
52-
+ }
53-
return NGX_OK;
54-
}
55-
56-
@@ -452,8 +472,12 @@ ngx_read_dir(ngx_dir_t *dir)
60+
@@ -467,8 +479,12 @@ ngx_read_dir(ngx_dir_t *dir)
5761
return NGX_OK;
5862
}
5963

@@ -67,7 +71,7 @@ index 55d7f76..bb3960a 100644
6771
return NGX_OK;
6872
}
6973

70-
@@ -464,6 +488,7 @@ ngx_read_dir(ngx_dir_t *dir)
74+
@@ -479,6 +495,7 @@ ngx_read_dir(ngx_dir_t *dir)
7175
ngx_int_t
7276
ngx_close_dir(ngx_dir_t *dir)
7377
{
@@ -76,7 +80,7 @@ index 55d7f76..bb3960a 100644
7680
return NGX_ERROR;
7781
}
7882
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h
79-
index 895daea..da98307 100644
83+
index 6eb720e..57bfe7e 100644
8084
--- a/src/os/win32/ngx_files.h
8185
+++ b/src/os/win32/ngx_files.h
8286
@@ -30,7 +30,9 @@ typedef struct {
@@ -90,7 +94,7 @@ index 895daea..da98307 100644
9094

9195
unsigned valid_info:1;
9296
unsigned type:1;
93-
@@ -208,8 +210,8 @@ ngx_int_t ngx_close_dir(ngx_dir_t *dir);
97+
@@ -205,8 +207,8 @@ ngx_int_t ngx_close_dir(ngx_dir_t *dir);
9498
#define ngx_dir_access(a) (a)
9599

96100

@@ -102,5 +106,5 @@ index 895daea..da98307 100644
102106
ngx_int_t ngx_de_info(u_char *name, ngx_dir_t *dir);
103107
#define ngx_de_info_n "dummy()"
104108
--
105-
2.18.0
109+
2.19.1
106110

0 commit comments

Comments
 (0)