Mercurial > hg > nginx-quic
comparison src/core/ngx_log.c @ 235:6bd5d25b6744
nginx-0.0.1-2004-01-21-19:38:54 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 21 Jan 2004 16:38:54 +0000 |
parents | cd71b95716b4 |
children | 86e473b5641e |
comparison
equal
deleted
inserted
replaced
234:cd71b95716b4 | 235:6bd5d25b6744 |
---|---|
1 | 1 |
2 #include <ngx_config.h> | 2 #include <ngx_config.h> |
3 #include <ngx_core.h> | 3 #include <ngx_core.h> |
4 | 4 |
5 | 5 |
6 ngx_inline static int ngx_log_is_full(ngx_log_t *log, char *errstr, size_t len); | |
6 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); | 7 static char *ngx_set_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
7 | 8 |
8 | 9 |
9 static ngx_str_t errlog_name = ngx_string("errlog"); | 10 static ngx_str_t errlog_name = ngx_string("errlog"); |
10 | 11 |
95 | 96 |
96 #endif | 97 #endif |
97 | 98 |
98 if (err) { | 99 if (err) { |
99 | 100 |
101 if (len > sizeof(errstr) - 50) { | |
102 /* leave a space for an error code */ | |
103 len = sizeof(errstr) - 50; | |
104 errstr[len++] = '.'; | |
105 errstr[len++] = '.'; | |
106 errstr[len++] = '.'; | |
107 } | |
108 | |
100 #if (WIN32) | 109 #if (WIN32) |
101 if ((unsigned) err >= 0x80000000) { | 110 if ((unsigned) err >= 0x80000000) { |
102 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, | 111 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, |
103 " (%X: ", err); | 112 " (%X: ", err); |
104 } else { | 113 } else { |
108 #else | 117 #else |
109 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, | 118 len += ngx_snprintf(errstr + len, sizeof(errstr) - len - 1, |
110 " (%d: ", err); | 119 " (%d: ", err); |
111 #endif | 120 #endif |
112 | 121 |
122 if (ngx_log_is_full(log, errstr, len)) { | |
123 return; | |
124 } | |
125 | |
113 len += ngx_strerror_r(err, errstr + len, sizeof(errstr) - len - 1); | 126 len += ngx_strerror_r(err, errstr + len, sizeof(errstr) - len - 1); |
114 if (len < sizeof(errstr) - 2) { | 127 |
115 errstr[len++] = ')'; | 128 if (ngx_log_is_full(log, errstr, len)) { |
116 } else { | 129 return; |
117 len = sizeof(errstr) - 2; | 130 } |
131 | |
132 errstr[len++] = ')'; | |
133 | |
134 if (ngx_log_is_full(log, errstr, len)) { | |
135 return; | |
136 } | |
137 | |
138 } else { | |
139 if (ngx_log_is_full(log, errstr, len)) { | |
140 return; | |
118 } | 141 } |
119 } | 142 } |
120 | 143 |
121 if (level != NGX_LOG_DEBUG && log->handler) { | 144 if (level != NGX_LOG_DEBUG && log->handler) { |
122 len += log->handler(log->data, errstr + len, sizeof(errstr) - len - 1); | 145 len += log->handler(log->data, errstr + len, sizeof(errstr) - len - 1); |
123 } | 146 |
124 | 147 if (ngx_log_is_full(log, errstr, len)) { |
125 if (len > sizeof(errstr) - 2) { | 148 return; |
126 len = sizeof(errstr) - 2; | 149 } |
127 } | 150 } |
128 | 151 |
129 #if (WIN32) | 152 #if (WIN32) |
130 | 153 |
131 errstr[len++] = CR; | 154 errstr[len++] = CR; |
136 | 159 |
137 errstr[len++] = LF; | 160 errstr[len++] = LF; |
138 write(log->file->fd, errstr, len); | 161 write(log->file->fd, errstr, len); |
139 | 162 |
140 #endif | 163 #endif |
164 } | |
165 | |
166 | |
167 ngx_inline static int ngx_log_is_full(ngx_log_t *log, char *errstr, size_t len) | |
168 { | |
169 #if (WIN32) | |
170 u_long written; | |
171 | |
172 if (len > MAX_ERROR_STR - 2) { | |
173 len = MAX_ERROR_STR - 2; | |
174 | |
175 errstr[len++] = CR; | |
176 errstr[len++] = LF; | |
177 WriteFile(log->file->fd, errstr, len, &written, NULL); | |
178 | |
179 return 1; | |
180 } | |
181 | |
182 #else | |
183 | |
184 if (len > MAX_ERROR_STR - 1) { | |
185 len = MAX_ERROR_STR - 1; | |
186 | |
187 errstr[len++] = LF; | |
188 write(log->file->fd, errstr, len); | |
189 | |
190 return 1; | |
191 } | |
192 | |
193 #endif | |
194 | |
195 return 0; | |
141 } | 196 } |
142 | 197 |
143 | 198 |
144 #if !(HAVE_VARIADIC_MACROS) | 199 #if !(HAVE_VARIADIC_MACROS) |
145 | 200 |