# HG changeset patch # User Matwey V. Kornilov <matwey.korni...@gmail.com> # Date 1486576729 -10800 # Wed Feb 08 20:58:49 2017 +0300 # Branch fsize # Node ID 35527b6bd4d84e41e030972b770e75ef583cf0f5 # Parent a682e88cdcddb04905814cdfacde3df9ebc2b48b SSI: Refactor ngx_http_ssi_date_gmt_local_variable
Introduce new function ngx_http_ssi_format_time. The function will be reused in the following commit. diff -r a682e88cdcdd -r 35527b6bd4d8 src/http/modules/ngx_http_ssi_filter_module.c --- a/src/http/modules/ngx_http_ssi_filter_module.c Fri Mar 10 12:02:53 2017 +0300 +++ b/src/http/modules/ngx_http_ssi_filter_module.c Wed Feb 08 20:58:49 2017 +0300 @@ -110,6 +110,8 @@ static ngx_int_t ngx_http_ssi_endblock(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx, ngx_str_t **params); +static ngx_int_t ngx_http_ssi_format_time(ngx_http_request_t *r, ngx_str_t *v, + time_t time, ngx_str_t *timefmt, uintptr_t gmt); static ngx_int_t ngx_http_ssi_date_gmt_local_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t gmt); @@ -2874,25 +2876,12 @@ static ngx_int_t -ngx_http_ssi_date_gmt_local_variable(ngx_http_request_t *r, - ngx_http_variable_value_t *v, uintptr_t gmt) +ngx_http_ssi_format_time(ngx_http_request_t *r, ngx_str_t *v, time_t time, + ngx_str_t *timefmt, uintptr_t gmt) { - time_t now; - ngx_http_ssi_ctx_t *ctx; - ngx_str_t *timefmt; struct tm tm; char buf[NGX_HTTP_SSI_DATE_LEN]; - v->valid = 1; - v->no_cacheable = 0; - v->not_found = 0; - - now = ngx_time(); - - ctx = ngx_http_get_module_ctx(r, ngx_http_ssi_filter_module); - - timefmt = ctx ? &ctx->timefmt : &ngx_http_ssi_timefmt; - if (timefmt->len == sizeof("%s") - 1 && timefmt->data[0] == '%' && timefmt->data[1] == 's') { @@ -2901,15 +2890,15 @@ return NGX_ERROR; } - v->len = ngx_sprintf(v->data, "%T", now) - v->data; + v->len = ngx_sprintf(v->data, "%T", time) - v->data; return NGX_OK; } if (gmt) { - ngx_libc_gmtime(now, &tm); + ngx_libc_gmtime(time, &tm); } else { - ngx_libc_localtime(now, &tm); + ngx_libc_localtime(time, &tm); } v->len = strftime(buf, NGX_HTTP_SSI_DATE_LEN, @@ -2930,6 +2919,36 @@ static ngx_int_t +ngx_http_ssi_date_gmt_local_variable(ngx_http_request_t *r, + ngx_http_variable_value_t *v, uintptr_t gmt) +{ + time_t now; + ngx_http_ssi_ctx_t *ctx; + ngx_str_t *timefmt; + ngx_str_t timestr; + + v->valid = 1; + v->no_cacheable = 0; + v->not_found = 0; + + now = ngx_time(); + + ctx = ngx_http_get_module_ctx(r, ngx_http_ssi_filter_module); + + timefmt = ctx ? &ctx->timefmt : &ngx_http_ssi_timefmt; + + if (ngx_http_ssi_format_time(r, ×tr, now, timefmt, gmt) != NGX_OK) { + return NGX_ERROR; + } + + v->data = timestr.data; + v->len = timestr.len; + + return NGX_OK; +} + + +static ngx_int_t ngx_http_ssi_preconfiguration(ngx_conf_t *cf) { ngx_int_t rc; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel