file.len = tree->len + 1 + len;
- if (file.len + NGX_DIR_MASK_LEN > buf.len) {
+ if (file.len > buf.len) {
if (buf.len) {
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);
if (buf.data == NULL) {
return rc;
}
- /* NGX_DIR_MASK_LEN is lesser than NGX_HTTP_AUTOINDEX_PREALLOCATE */
-
last = ngx_http_map_uri_to_path(r, &path, &root,
NGX_HTTP_AUTOINDEX_PREALLOCATE);
if (last == NULL) {
}
#if (NGX_HAVE_D_TYPE)
- len = NGX_DIR_MASK_LEN;
+ len = 0;
#else
len = NGX_HTTP_RANDOM_INDEX_PREALLOCATE;
#endif
#endif
-#define NGX_DIR_MASK_LEN 0
-
-
ngx_int_t ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
#define ngx_open_dir_n "opendir()"
ngx_int_t
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;
+
+ pattern = malloc(name->len + 3);
+ if (pattern == NULL) {
+ return NGX_ERROR;
+ }
- dir->dir = FindFirstFile((const char *) name->data, &dir->finddata);
+ p = ngx_cpymem(pattern, name->data, name->len);
- name->data[name->len] = '\0';
+ *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->ready = 1;
#define NGX_HAVE_MAX_PATH 1
#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);
#define ngx_open_dir_n "FindFirstFile()"