mirror of
https://github.com/nginx/nginx.git
synced 2025-08-01 02:56:15 +08:00
add size, access, and mtime to ngx_walk_tree()
This commit is contained in:
parent
da7281a6da
commit
f5a359bdec
@ -445,8 +445,8 @@ ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree)
|
|||||||
|
|
||||||
prev = ctx->data;
|
prev = ctx->data;
|
||||||
|
|
||||||
if (ctx->size) {
|
if (ctx->alloc) {
|
||||||
data = ngx_alloc(ctx->size, ctx->log);
|
data = ngx_alloc(ctx->alloc, ctx->log);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@ -529,6 +529,10 @@ ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree)
|
|||||||
ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0,
|
||||||
"tree file \"%s\"", file.data);
|
"tree file \"%s\"", file.data);
|
||||||
|
|
||||||
|
ctx->size = ngx_de_size(&dir);
|
||||||
|
ctx->access = ngx_de_access(&dir);
|
||||||
|
ctx->mtime = ngx_de_mtime(&dir);
|
||||||
|
|
||||||
if (ctx->file_handler(ctx, &file) == NGX_ABORT) {
|
if (ctx->file_handler(ctx, &file) == NGX_ABORT) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@ -538,6 +542,9 @@ ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree)
|
|||||||
ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_CORE, ctx->log, 0,
|
||||||
"tree enter dir \"%s\"", file.data);
|
"tree enter dir \"%s\"", file.data);
|
||||||
|
|
||||||
|
ctx->access = ngx_de_access(&dir);
|
||||||
|
ctx->mtime = ngx_de_mtime(&dir);
|
||||||
|
|
||||||
if (ctx->pre_tree_handler(ctx, &file) == NGX_ABORT) {
|
if (ctx->pre_tree_handler(ctx, &file) == NGX_ABORT) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@ -546,6 +553,9 @@ ngx_walk_tree(ngx_tree_ctx_t *ctx, ngx_str_t *tree)
|
|||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx->access = ngx_de_access(&dir);
|
||||||
|
ctx->mtime = ngx_de_mtime(&dir);
|
||||||
|
|
||||||
if (ctx->post_tree_handler(ctx, &file) == NGX_ABORT) {
|
if (ctx->post_tree_handler(ctx, &file) == NGX_ABORT) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
@ -571,7 +581,7 @@ done:
|
|||||||
ngx_free(buf.data);
|
ngx_free(buf.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->data) {
|
if (ctx->alloc) {
|
||||||
ngx_free(ctx->data);
|
ngx_free(ctx->data);
|
||||||
ctx->data = prev;
|
ctx->data = prev;
|
||||||
}
|
}
|
||||||
|
@ -58,18 +58,23 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct ngx_tree_ctx_s ngx_tree_ctx_t;
|
typedef struct ngx_tree_ctx_s ngx_tree_ctx_t;
|
||||||
|
|
||||||
typedef ngx_int_t (*ngx_tree_init_handler_pt) (ngx_tree_ctx_t *ctx,
|
typedef ngx_int_t (*ngx_tree_init_handler_pt) (void *ctx, void *prev);
|
||||||
ngx_tree_ctx_t *prev);
|
|
||||||
typedef ngx_int_t (*ngx_tree_handler_pt) (ngx_tree_ctx_t *ctx, ngx_str_t *name);
|
typedef ngx_int_t (*ngx_tree_handler_pt) (ngx_tree_ctx_t *ctx, ngx_str_t *name);
|
||||||
|
|
||||||
struct ngx_tree_ctx_s {
|
struct ngx_tree_ctx_s {
|
||||||
|
off_t size;
|
||||||
|
ngx_uint_t access;
|
||||||
|
time_t mtime;
|
||||||
|
|
||||||
ngx_tree_init_handler_pt init_handler;
|
ngx_tree_init_handler_pt init_handler;
|
||||||
ngx_tree_handler_pt file_handler;
|
ngx_tree_handler_pt file_handler;
|
||||||
ngx_tree_handler_pt pre_tree_handler;
|
ngx_tree_handler_pt pre_tree_handler;
|
||||||
ngx_tree_handler_pt post_tree_handler;
|
ngx_tree_handler_pt post_tree_handler;
|
||||||
ngx_tree_handler_pt spec_handler;
|
ngx_tree_handler_pt spec_handler;
|
||||||
|
|
||||||
void *data;
|
void *data;
|
||||||
size_t size;
|
size_t alloc;
|
||||||
|
|
||||||
ngx_log_t *log;
|
ngx_log_t *log;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,8 +19,7 @@ typedef struct {
|
|||||||
|
|
||||||
|
|
||||||
static ngx_int_t ngx_http_dav_handler(ngx_http_request_t *r);
|
static ngx_int_t ngx_http_dav_handler(ngx_http_request_t *r);
|
||||||
static ngx_int_t ngx_http_dav_no_init(ngx_tree_ctx_t *ctx,
|
static ngx_int_t ngx_http_dav_no_init(void *ctx, void *prev);
|
||||||
ngx_tree_ctx_t *prev);
|
|
||||||
static ngx_int_t ngx_http_dav_noop(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
static ngx_int_t ngx_http_dav_noop(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
||||||
static ngx_int_t ngx_http_dav_delete_dir(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
static ngx_int_t ngx_http_dav_delete_dir(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
||||||
static ngx_int_t ngx_http_dav_delete_file(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
static ngx_int_t ngx_http_dav_delete_file(ngx_tree_ctx_t *ctx, ngx_str_t *path);
|
||||||
@ -190,7 +189,7 @@ ngx_http_dav_handler(ngx_http_request_t *r)
|
|||||||
tree.post_tree_handler = ngx_http_dav_delete_dir;
|
tree.post_tree_handler = ngx_http_dav_delete_dir;
|
||||||
tree.spec_handler = ngx_http_dav_delete_file;
|
tree.spec_handler = ngx_http_dav_delete_file;
|
||||||
tree.data = NULL;
|
tree.data = NULL;
|
||||||
tree.size = 0;
|
tree.alloc = 0;
|
||||||
tree.log = r->connection->log;
|
tree.log = r->connection->log;
|
||||||
|
|
||||||
if (ngx_walk_tree(&tree, &path) == NGX_OK) {
|
if (ngx_walk_tree(&tree, &path) == NGX_OK) {
|
||||||
@ -270,7 +269,7 @@ ngx_http_dav_handler(ngx_http_request_t *r)
|
|||||||
|
|
||||||
|
|
||||||
static ngx_int_t
|
static ngx_int_t
|
||||||
ngx_http_dav_no_init(ngx_tree_ctx_t *ctx, ngx_tree_ctx_t *prev)
|
ngx_http_dav_no_init(void *ctx, void *prev)
|
||||||
{
|
{
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user