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