Mercurial > hg > nginx-ranges
comparison src/http/ngx_http_variables.c @ 120:e85dca77c46a NGINX_0_3_7
nginx 0.3.7
*) Feature: the "access_log" supports the "buffer=" parameter.
*) Bugfix: nginx could not be built on platforms different from i386,
amd64, sparc и ppc; bug appeared in 0.3.2.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 27 Oct 2005 00:00:00 +0400 |
parents | 644a7935144b |
children | d25a1d6034f1 |
comparison
equal
deleted
inserted
replaced
119:85abc07cafba | 120:e85dca77c46a |
---|---|
34 ngx_http_variable_request_filename(ngx_http_request_t *r, uintptr_t data); | 34 ngx_http_variable_request_filename(ngx_http_request_t *r, uintptr_t data); |
35 static ngx_http_variable_value_t * | 35 static ngx_http_variable_value_t * |
36 ngx_http_variable_request_method(ngx_http_request_t *r, uintptr_t data); | 36 ngx_http_variable_request_method(ngx_http_request_t *r, uintptr_t data); |
37 static ngx_http_variable_value_t * | 37 static ngx_http_variable_value_t * |
38 ngx_http_variable_remote_user(ngx_http_request_t *r, uintptr_t data); | 38 ngx_http_variable_remote_user(ngx_http_request_t *r, uintptr_t data); |
39 static ngx_http_variable_value_t * | |
40 ngx_http_variable_sent(ngx_http_request_t *r, uintptr_t data); | |
39 | 41 |
40 | 42 |
41 /* | 43 /* |
42 * TODO: | 44 * TODO: |
43 * Apache CGI: AUTH_TYPE, PATH_INFO (null), PATH_TRANSLATED | 45 * Apache CGI: AUTH_TYPE, PATH_INFO (null), PATH_TRANSLATED |
44 * REMOTE_HOST (null), REMOTE_IDENT (null), | 46 * REMOTE_HOST (null), REMOTE_IDENT (null), |
45 * SERVER_SOFTWARE | 47 * SERVER_SOFTWARE |
46 * | 48 * |
47 * Apache SSI: DATE_GMT, DOCUMENT_NAME, LAST_MODIFIED, | 49 * Apache SSI: DOCUMENT_NAME, LAST_MODIFIED, USER_NAME (file owner) |
48 * USER_NAME (file owner) | |
49 */ | 50 */ |
50 | 51 |
51 static ngx_http_variable_t ngx_http_core_variables[] = { | 52 static ngx_http_variable_t ngx_http_core_variables[] = { |
52 | 53 |
53 { ngx_string("http_host"), ngx_http_variable_header, | 54 { ngx_string("http_host"), ngx_http_variable_header, |
113 offsetof(ngx_http_request_t, server_name), 0, 0 }, | 114 offsetof(ngx_http_request_t, server_name), 0, 0 }, |
114 | 115 |
115 { ngx_string("request_method"), ngx_http_variable_request_method, 0, 0, 0 }, | 116 { ngx_string("request_method"), ngx_http_variable_request_method, 0, 0, 0 }, |
116 | 117 |
117 { ngx_string("remote_user"), ngx_http_variable_remote_user, 0, 0, 0 }, | 118 { ngx_string("remote_user"), ngx_http_variable_remote_user, 0, 0, 0 }, |
119 | |
120 { ngx_string("sent"), ngx_http_variable_sent, 0, 0, 0 }, | |
121 | |
122 { ngx_string("apache_sent"), ngx_http_variable_sent, 1, 0, 0 }, | |
118 | 123 |
119 { ngx_null_string, NULL, 0, 0, 0 } | 124 { ngx_null_string, NULL, 0, 0, 0 } |
120 }; | 125 }; |
121 | 126 |
122 | 127 |
697 | 702 |
698 return vv; | 703 return vv; |
699 } | 704 } |
700 | 705 |
701 | 706 |
707 static ngx_http_variable_value_t * | |
708 ngx_http_variable_sent(ngx_http_request_t *r, uintptr_t data) | |
709 { | |
710 off_t sent; | |
711 u_char *p; | |
712 ngx_http_variable_value_t *vv; | |
713 | |
714 vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t)); | |
715 if (vv == NULL) { | |
716 return NULL; | |
717 } | |
718 | |
719 sent = r->connection->sent; | |
720 | |
721 if (data) { | |
722 sent -= r->header_size; | |
723 | |
724 if (sent < 0) { | |
725 sent = 0; | |
726 } | |
727 } | |
728 | |
729 p = ngx_palloc(r->pool, NGX_OFF_T_LEN); | |
730 if (p == NULL) { | |
731 return NULL; | |
732 } | |
733 | |
734 vv->value = 0; | |
735 vv->text.len = ngx_sprintf(p, "%O", sent) - p; | |
736 vv->text.data = p; | |
737 | |
738 return vv; | |
739 } | |
740 | |
741 | |
702 ngx_int_t | 742 ngx_int_t |
703 ngx_http_variables_add_core_vars(ngx_conf_t *cf) | 743 ngx_http_variables_add_core_vars(ngx_conf_t *cf) |
704 { | 744 { |
705 ngx_http_variable_t *v, *cv; | 745 ngx_http_variable_t *v, *cv; |
706 ngx_http_core_main_conf_t *cmcf; | 746 ngx_http_core_main_conf_t *cmcf; |