Win32: non-ASCII directory names support in ngx_delete_dir().
This makes it possible to delete directories with non-ASCII characters when using the dav module (ticket #1433).
This commit is contained in:
parent
c77dd27fb0
commit
82fba427a0
|
@ -613,6 +613,42 @@ failed:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ngx_int_t
|
||||||
|
ngx_delete_dir(u_char *name)
|
||||||
|
{
|
||||||
|
long rc;
|
||||||
|
size_t len;
|
||||||
|
u_short *u;
|
||||||
|
ngx_err_t err;
|
||||||
|
u_short utf16[NGX_UTF16_BUFLEN];
|
||||||
|
|
||||||
|
len = NGX_UTF16_BUFLEN;
|
||||||
|
u = ngx_utf8_to_utf16(utf16, name, &len, 0);
|
||||||
|
|
||||||
|
if (u == NULL) {
|
||||||
|
return NGX_FILE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = NGX_FILE_ERROR;
|
||||||
|
|
||||||
|
if (ngx_win32_check_filename(u, len, 0) != NGX_OK) {
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = RemoveDirectoryW(u);
|
||||||
|
|
||||||
|
failed:
|
||||||
|
|
||||||
|
if (u != utf16) {
|
||||||
|
err = ngx_errno;
|
||||||
|
ngx_free(u);
|
||||||
|
ngx_set_errno(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_open_glob(ngx_glob_t *gl)
|
ngx_open_glob(ngx_glob_t *gl)
|
||||||
{
|
{
|
||||||
|
|
|
@ -206,7 +206,7 @@ ngx_int_t ngx_create_dir(u_char *name, ngx_uint_t access);
|
||||||
#define ngx_create_dir_n "CreateDirectory()"
|
#define ngx_create_dir_n "CreateDirectory()"
|
||||||
|
|
||||||
|
|
||||||
#define ngx_delete_dir(name) RemoveDirectory((const char *) name)
|
ngx_int_t ngx_delete_dir(u_char *name);
|
||||||
#define ngx_delete_dir_n "RemoveDirectory()"
|
#define ngx_delete_dir_n "RemoveDirectory()"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue