mirror of
https://github.com/nginx/nginx.git
synced 2025-06-28 10:10:39 +08:00
Win32: removed NGX_DIR_MASK concept.
Previous interface of ngx_open_dir() assumed that passed directory name has a room for NGX_DIR_MASK at the end (NGX_DIR_MASK_LEN bytes). While all direct users of ngx_dir_open() followed this interface, this also implied similar requirements for indirect uses - in particular, via ngx_walk_tree(). Currently none of ngx_walk_tree() uses provides appropriate space, and fixing this does not look like a right way to go. Instead, ngx_dir_open() interface was changed to not require any additional space and use appropriate allocations instead.
This commit is contained in:
parent
499bb2655e
commit
aa741f8727
@ -1017,13 +1017,13 @@ ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree)
|
|||||||
|
|
||||||
file.len = tree->len + 1 + len;
|
file.len = tree->len + 1 + len;
|
||||||
|
|
||||||
if (file.len + NGX_DIR_MASK_LEN > buf.len) {
|
if (file.len > buf.len) {
|
||||||
|
|
||||||
if (buf.len) {
|
if (buf.len) {
|
||||||
ngx_free(buf.data);
|
ngx_free(buf.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.len = tree->len + 1 + len + NGX_DIR_MASK_LEN;
|
buf.len = tree->len + 1 + len;
|
||||||
|
|
||||||
buf.data = ngx_alloc(buf.len + 1, ctx->log);
|
buf.data = ngx_alloc(buf.len + 1, ctx->log);
|
||||||
if (buf.data == NULL) {
|
if (buf.data == NULL) {
|
||||||
|
@ -186,8 +186,6 @@ ngx_http_autoindex_handler(ngx_http_request_t *r)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NGX_DIR_MASK_LEN is lesser than NGX_HTTP_AUTOINDEX_PREALLOCATE */
|
|
||||||
|
|
||||||
last = ngx_http_map_uri_to_path(r, &path, &root,
|
last = ngx_http_map_uri_to_path(r, &path, &root,
|
||||||
NGX_HTTP_AUTOINDEX_PREALLOCATE);
|
NGX_HTTP_AUTOINDEX_PREALLOCATE);
|
||||||
if (last == NULL) {
|
if (last == NULL) {
|
||||||
|
@ -98,7 +98,7 @@ ngx_http_random_index_handler(ngx_http_request_t *r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if (NGX_HAVE_D_TYPE)
|
#if (NGX_HAVE_D_TYPE)
|
||||||
len = NGX_DIR_MASK_LEN;
|
len = 0;
|
||||||
#else
|
#else
|
||||||
len = NGX_HTTP_RANDOM_INDEX_PREALLOCATE;
|
len = NGX_HTTP_RANDOM_INDEX_PREALLOCATE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -213,9 +213,6 @@ void ngx_close_file_mapping(ngx_file_mapping_t *fm);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define NGX_DIR_MASK_LEN 0
|
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
|
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
|
||||||
#define ngx_open_dir_n "opendir()"
|
#define ngx_open_dir_n "opendir()"
|
||||||
|
|
||||||
|
@ -427,16 +427,31 @@ ngx_realpath(u_char *path, u_char *resolved)
|
|||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
|
ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
|
||||||
{
|
{
|
||||||
ngx_cpystrn(name->data + name->len, NGX_DIR_MASK, NGX_DIR_MASK_LEN + 1);
|
u_char *pattern, *p;
|
||||||
|
ngx_err_t err;
|
||||||
|
|
||||||
dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
|
pattern = malloc(name->len + 3);
|
||||||
|
if (pattern == NULL) {
|
||||||
name->data[name->len] = '\0';
|
|
||||||
|
|
||||||
if (dir->dir == INVALID_HANDLE_VALUE) {
|
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p = ngx_cpymem(pattern, name->data, name->len);
|
||||||
|
|
||||||
|
*p++ = '/';
|
||||||
|
*p++ = '*';
|
||||||
|
*p = '\0';
|
||||||
|
|
||||||
|
dir->dir = FindFirstFile((const char *) pattern, &dir->finddata);
|
||||||
|
|
||||||
|
if (dir->dir == INVALID_HANDLE_VALUE) {
|
||||||
|
err = ngx_errno;
|
||||||
|
ngx_free(pattern);
|
||||||
|
ngx_set_errno(err);
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_free(pattern);
|
||||||
|
|
||||||
dir->valid_info = 1;
|
dir->valid_info = 1;
|
||||||
dir->ready = 1;
|
dir->ready = 1;
|
||||||
|
|
||||||
|
@ -181,9 +181,6 @@ u_char *ngx_realpath(u_char *path, u_char *resolved);
|
|||||||
#define NGX_HAVE_MAX_PATH 1
|
#define NGX_HAVE_MAX_PATH 1
|
||||||
#define NGX_MAX_PATH MAX_PATH
|
#define NGX_MAX_PATH MAX_PATH
|
||||||
|
|
||||||
#define NGX_DIR_MASK (u_char *) "/*"
|
|
||||||
#define NGX_DIR_MASK_LEN 2
|
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
|
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
|
||||||
#define ngx_open_dir_n "FindFirstFile()"
|
#define ngx_open_dir_n "FindFirstFile()"
|
||||||
|
Loading…
Reference in New Issue
Block a user