comparison src/http/ngx_http_variables.c @ 571:458b6c3fea65 release-0.3.7

nginx-0.3.7-RELEASE import *) Feature: the "access_log" supports the "buffer=" parameter. *) Bugfix: nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.3.2.
author Igor Sysoev <igor@sysoev.ru>
date Thu, 27 Oct 2005 15:46:13 +0000
parents 174f1e853e1e
children 58475592100c
comparison
equal deleted inserted replaced
570:2cdf120d8970 571:458b6c3fea65
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;