Changeset 527
- Timestamp:
- 12/19/06 11:50:38 (2 years ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/buffer.c (modified) (12 diffs)
- cherokee/trunk/cherokee/buffer.h (modified) (1 diff)
- cherokee/trunk/cherokee/connection.c (modified) (10 diffs)
- cherokee/trunk/cherokee/handler_file.c (modified) (8 diffs)
- cherokee/trunk/cherokee/server.c (modified) (2 diffs)
- cherokee/trunk/cherokee/util.c (modified) (3 diffs)
- cherokee/trunk/cherokee/util.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r526 r527 1 2006-12-19 A.D.F <adefacc@tin.it> 2 3 * cherokee/buffer.h: 4 - new function prototypes cherokee_buffer_add_*long*(). 5 6 * cherokee/buffer.c: 7 - changed value of REALLOC_EXTRA_SIZE 8 from 0 to 16; 9 - added new fast formatting function prototypes for numbers 10 (nice to have as a counterpart of string copies): 11 - cherokee_buffer_add_long10(); 12 - cherokee_buffer_add_ulong10(); 13 - cherokee_buffer_add_ullong10(); 14 - cherokee_buffer_add_ulong16(); 15 - cherokee_buffer_add_ullong16(); 16 - reverted your last change in 17 cherokee_buffer_read_from_fd() PRINT_ERROR(...FMT_OFFSET...) 18 because size_t is not an off_t 19 (in most systems size_t is always an unsigned int 20 or even an uint32_t); 21 22 NOTE: I guess that, sooner or later, 23 we will have to change the type of len and size 24 fields of cherokee_buffer_t, from int to size_t 25 (lot of code to review, maybe it's a 0.7 thing). 26 27 * cherokee/util.h: 28 - removed references to cherokee_weekdays[] and 29 cherokee_months[]; 30 31 * cherokee/util.c: 32 - removed arrays cherokee_weekdays[] and 33 cherokee_months[] (see dtm.c); 34 - minor space reformatting; 35 36 * cherokee/server.c: 37 - replaced cherokee_weekdays[] and cherokee_months[] 38 with the equivalent cherokee_dtm_wday_name() 39 and cherokee_dtm_month_name(); 40 41 * cherokee/connection.c: 42 - added a call to cherokee_buffer_ensure_size(header_buffer, 384) 43 before the call to "add_headers" function callback; 44 - added a few other cherokee_buffer_ensure_size() and 45 cherokee_buffer_ensure_addlen(); 46 47 * cherokee/handler_file.c: 48 - replaced Etag: with ETag:; 49 - added a call to cherokee_dtm_gmttm2str(); 50 - replaced a few simple cherokee_buffer_add_va() 51 with single calls to cherokee_buffer_add*(). 52 1 53 2006-12-17 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 54 cherokee/trunk/cherokee/buffer.c
r526 r527 42 42 43 43 44 #define REALLOC_EXTRA_SIZE 0 45 #define TO_HEX(c) (c > 9 ? c+'a'-10 : c+'0') 44 #define REALLOC_EXTRA_SIZE 16 45 #define IOS_NUMBUF 64 /* I/O size of digits buffer */ 46 47 #define TO_HEX(c) ((c) > 9 ? (c) + 'a' - 10 : (c) + '0') 46 48 47 49 … … 144 146 145 147 148 static ret_t 149 realloc_inc_bufsize (cherokee_buffer_t *buf, size_t incsize) 150 { 151 char *pbuf; 152 size_t newsize = buf->size + incsize + REALLOC_EXTRA_SIZE + 1; 153 154 pbuf = (char *) realloc(buf->buf, newsize); 155 if (unlikely (pbuf == NULL)) 156 return ret_nomem; 157 buf->buf = pbuf; 158 buf->size = (int) newsize; 159 160 return ret_ok; 161 } 162 163 164 static ret_t 165 realloc_new_bufsize (cherokee_buffer_t *buf, size_t newsize) 166 { 167 char *pbuf; 168 newsize += REALLOC_EXTRA_SIZE + 1; 169 170 pbuf = (char *) realloc(buf->buf, newsize); 171 if (unlikely (pbuf == NULL)) 172 return ret_nomem; 173 buf->buf = pbuf; 174 buf->size = (int) newsize; 175 176 return ret_ok; 177 } 178 179 146 180 ret_t 147 181 cherokee_buffer_add (cherokee_buffer_t *buf, char *txt, size_t size) … … 155 189 */ 156 190 if (free < (size+1)) { 157 char *pbuf; 158 int newsize = buf->size + size - free + REALLOC_EXTRA_SIZE + 1; 159 pbuf = (char *) realloc(buf->buf, newsize); 160 if (unlikely (pbuf == NULL)) 191 if (unlikely (realloc_inc_bufsize(buf, size - free)) != ret_ok) 161 192 return ret_nomem; 162 buf->buf = pbuf;163 buf->size = newsize;164 193 } 165 194 … … 182 211 183 212 213 ret_t 214 cherokee_buffer_add_long10 (cherokee_buffer_t *buf, clong_t lNum) 215 { 216 unsigned long ulNum = (unsigned long) lNum; 217 uint flgNeg = 0; 218 int newlen = 0; 219 size_t i = (IOS_NUMBUF - 1); 220 char szOutBuf[IOS_NUMBUF]; 221 222 if (lNum < 0L) { 223 flgNeg = 1; 224 ulNum = -ulNum; 225 } 226 227 szOutBuf[i] = '\0'; 228 229 /* Convert number to string 230 */ 231 do { 232 szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 233 } 234 while ((ulNum /= 10) != 0); 235 236 /* Set sign in any case 237 */ 238 szOutBuf[--i] = '-'; 239 i += (flgNeg ^ 1); 240 241 /* Verify free space in buffer and if needed then enlarge it. 242 */ 243 newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 244 if (unlikely( newlen >= buf->size )) { 245 if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 246 return ret_nomem; 247 } 248 249 /* Copy including '\0' 250 */ 251 strcpy (buf->buf + buf->len, &szOutBuf[i]); 252 253 buf->len = newlen; 254 255 return ret_ok; 256 } 257 258 259 ret_t 260 cherokee_buffer_add_ulong10 (cherokee_buffer_t *buf, culong_t culNum) 261 { 262 unsigned long ulNum = culNum; 263 int newlen = 0; 264 size_t i = (IOS_NUMBUF - 1); 265 char szOutBuf[IOS_NUMBUF]; 266 267 szOutBuf[i] = '\0'; 268 269 /* Convert number to string 270 */ 271 do { 272 szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 273 } 274 while ((ulNum /= 10) != 0); 275 276 /* Verify free space in buffer and if needed then enlarge it. 277 */ 278 newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 279 if (unlikely( newlen >= buf->size )) { 280 if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 281 return ret_nomem; 282 } 283 284 /* Copy including '\0' 285 */ 286 strcpy (buf->buf + buf->len, &szOutBuf[i]); 287 288 buf->len = newlen; 289 290 return ret_ok; 291 } 292 293 294 ret_t 295 cherokee_buffer_add_ullong10 (cherokee_buffer_t *buf, cullong_t culNum) 296 { 297 unsigned long long ulNum = culNum; 298 int newlen = 0; 299 size_t i = (IOS_NUMBUF - 1); 300 char szOutBuf[IOS_NUMBUF]; 301 302 szOutBuf[i] = '\0'; 303 304 /* Convert number to string 305 */ 306 do { 307 szOutBuf[--i] = (char) ((ulNum % 10) + '0'); 308 } 309 while ((ulNum /= 10) != 0); 310 311 /* Verify free space in buffer and if needed then enlarge it. 312 */ 313 newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 314 if (unlikely( newlen >= buf->size )) { 315 if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 316 return ret_nomem; 317 } 318 319 /* Copy including '\0' 320 */ 321 strcpy (buf->buf + buf->len, &szOutBuf[i]); 322 323 buf->len = newlen; 324 325 return ret_ok; 326 } 327 328 329 /* 330 ** Add a number in hexadecimal format to (buf). 331 */ 332 ret_t 333 cherokee_buffer_add_ulong16 (cherokee_buffer_t *buf, culong_t culNum) 334 { 335 unsigned long ulNum = culNum; 336 size_t i = (IOS_NUMBUF - 1); 337 int ival = 0; 338 int newlen = 0; 339 char szOutBuf[IOS_NUMBUF]; 340 341 szOutBuf[i] = '\0'; 342 343 /* Convert number to string 344 */ 345 do { 346 ival = (int) (ulNum & 0xF); 347 szOutBuf[--i] = (char) TO_HEX(ival); 348 } 349 while ((ulNum >>= 4) != 0); 350 351 /* Verify free space in buffer and if needed then enlarge it. 352 */ 353 newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 354 if (unlikely( newlen >= buf->size )) { 355 if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 356 return ret_nomem; 357 } 358 359 /* Copy including '\0' 360 */ 361 strcpy (buf->buf + buf->len, &szOutBuf[i]); 362 363 buf->len = newlen; 364 365 return ret_ok; 366 } 367 368 369 /* 370 ** Add a number in hexadecimal format to (buf). 371 */ 372 ret_t 373 cherokee_buffer_add_ullong16 (cherokee_buffer_t *buf, cullong_t culNum) 374 { 375 unsigned long long ulNum = culNum; 376 size_t i = (IOS_NUMBUF - 1); 377 int ival = 0; 378 int newlen = 0; 379 char szOutBuf[IOS_NUMBUF]; 380 381 szOutBuf[i] = '\0'; 382 383 /* Convert number to string 384 */ 385 do { 386 ival = (int) (ulNum & 0xF); 387 szOutBuf[--i] = (char) TO_HEX(ival); 388 } 389 while ((ulNum >>= 4) != 0); 390 391 /* Verify free space in buffer and if needed then enlarge it. 392 */ 393 newlen = buf->len + (int) ((IOS_NUMBUF - 1) - i); 394 if (unlikely( newlen >= buf->size )) { 395 if (unlikely (realloc_new_bufsize(buf, newlen)) != ret_ok) 396 return ret_nomem; 397 } 398 399 /* Copy including '\0' 400 */ 401 strcpy (buf->buf + buf->len, &szOutBuf[i]); 402 403 buf->len = newlen; 404 405 return ret_ok; 406 } 407 408 184 409 ret_t 185 410 cherokee_buffer_add_va_fixed (cherokee_buffer_t *buf, char *format, ...) … … 189 414 190 415 va_start (ap, format); 191 len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, ap);416 len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, ap); 192 417 va_end (ap); 193 418 … … 212 437 cherokee_buffer_ensure_size (buf, buf->len + estimated_length + 2); 213 438 214 len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, args2);439 len = vsnprintf (buf->buf + buf->len, buf->size - buf->len - 1, format, args2); 215 440 216 441 #if 0 … … 253 478 */ 254 479 if (free < (num+1)) { 255 char *pbuf; 256 int newsize = buf->size + num - free + REALLOC_EXTRA_SIZE + 1; 257 pbuf = (char *) realloc(buf->buf, newsize); 258 if (unlikely (pbuf == NULL)) 480 if (unlikely (realloc_inc_bufsize(buf, num - free)) != ret_ok) 259 481 return ret_nomem; 260 buf->buf = pbuf;261 buf->size = newsize;262 482 } 263 483 … … 279 499 */ 280 500 if (free < (size+1)) { 281 char *pbuf; 282 int newsize = buf->size + size - free + REALLOC_EXTRA_SIZE + 1; 283 pbuf = (char *) realloc(buf->buf, newsize); 284 if (unlikely (pbuf == NULL)) 501 if (unlikely (realloc_inc_bufsize(buf, size - free)) != ret_ok) 285 502 return ret_nomem; 286 buf->buf = pbuf;287 buf->size = newsize;288 503 } 289 504 … … 334 549 335 550 551 /* 552 * Ensure there is enough (addlen) free space left in the buffer. 553 */ 336 554 ret_t 337 555 cherokee_buffer_ensure_addlen (cherokee_buffer_t *buf, size_t addlen) 338 556 { 339 if (addlen < 0)340 return ret_error;341 342 557 if (buf->len + addlen < buf->size) 343 558 return ret_ok; … … 609 824 } 610 825 611 PRINT_ERROR ("ERROR: read(%d, " FMT_OFFSET ",..) -> errno=%d '%s'\n", fd, size, errno, strerror(errno));826 PRINT_ERROR ("ERROR: read(%d, %u,..) -> errno=%d '%s'\n", fd, size, errno, strerror(errno)); 612 827 return ret_error; 613 828 } … … 1028 1243 int tmp; 1029 1244 1030 tmp = ( digest[i] >> 4) & 0xf;1245 tmp = ((digest[i] >> 4) & 0xf); 1031 1246 buf->buf[i*2] = TO_HEX(tmp); 1032 1247 1033 tmp = digest[i] & 0xf;1248 tmp = (digest[i] & 0xf); 1034 1249 buf->buf[(i*2)+1] = TO_HEX(tmp); 1035 1250 } … … 1085 1300 cherokee_buffer_t encoded = CHEROKEE_BUF_INIT; 1086 1301 1087 cherokee_buffer_ensure_size (&encoded, (SHA1_DIGEST_SIZE * 2) + 1);1302 cherokee_buffer_ensure_size (&encoded, (SHA1_DIGEST_SIZE * 2) + 1); 1088 1303 1089 1304 cherokee_buffer_encode_sha1 (buf, &encoded); cherokee/trunk/cherokee/buffer.h
r514 r527 64 64 65 65 ret_t cherokee_buffer_add (cherokee_buffer_t *buf, char *txt, size_t size); 66 ret_t cherokee_buffer_add_long10 (cherokee_buffer_t *buf, clong_t lNum); 67 ret_t cherokee_buffer_add_ulong10 (cherokee_buffer_t *buf, culong_t ulNum); 68 ret_t cherokee_buffer_add_ullong10 (cherokee_buffer_t *buf, cullong_t ulNum); 69 ret_t cherokee_buffer_add_ulong16 (cherokee_buffer_t *buf, culong_t ulNum); 70 ret_t cherokee_buffer_add_ullong16 (cherokee_buffer_t *buf, cullong_t ulNum); 66 71 ret_t cherokee_buffer_add_va (cherokee_buffer_t *buf, char *format, ...); 67 72 ret_t cherokee_buffer_add_va_fixed (cherokee_buffer_t *buf, char *format, ...); cherokee/trunk/cherokee/connection.c
r526 r527 265 265 cherokee_buffer_escape_set_ref (conn->request_escape, &conn->request); 266 266 267 #ifdef CHEROKEE_EMBEDDED 267 268 cherokee_buffer_mrproper (&conn->request_original); 269 #else 270 cherokee_buffer_clean (&conn->request_original); 271 #endif 268 272 cherokee_buffer_mrproper (&conn->encoder_buffer); 269 273 … … 413 417 */ 414 418 if (conn->auth_type & http_auth_basic) { 415 cherokee_buffer_ensure_ size(buffer, 31 + conn->realm_ref->len + 4);419 cherokee_buffer_ensure_addlen (buffer, 31 + conn->realm_ref->len + 4); 416 420 cherokee_buffer_add_str (buffer, "WWW-Authenticate: Basic realm=\""); 417 421 cherokee_buffer_add_buffer (buffer, conn->realm_ref); … … 426 430 /* Realm 427 431 */ 428 cherokee_buffer_ensure_ size(buffer, 32 + conn->realm_ref->len + 4);432 cherokee_buffer_ensure_addlen (buffer, 32 + conn->realm_ref->len + 4); 429 433 cherokee_buffer_add_str (buffer, "WWW-Authenticate: Digest realm=\""); 430 434 cherokee_buffer_add_buffer (buffer, conn->realm_ref); … … 449 453 build_response_header (cherokee_connection_t *conn, cherokee_buffer_t *buffer) 450 454 { 451 /* Build the response header 455 /* Build the response header. 452 456 */ 453 457 cherokee_buffer_clean (buffer); … … 499 503 /* Authentication 500 504 */ 501 if ((conn->realm_ref != NULL) && (conn->error_code == http_unauthorized)) 502 { 505 if ((conn->realm_ref != NULL) && (conn->error_code == http_unauthorized)) { 503 506 build_response_header__authenticate (conn, buffer); 504 507 } … … 540 543 /* Try to get the headers from the handler 541 544 */ 545 cherokee_buffer_ensure_size (&(conn->header_buffer), 384); 542 546 ret = cherokee_handler_add_headers (conn->handler, &conn->header_buffer); 543 547 switch (ret) { … … 560 564 } 561 565 } 562 566 563 567 /* Add the server headers 564 568 */ … … 1543 1547 (strcmp (conn->request.buf, conn->web_directory.buf) == 0)) 1544 1548 { 1545 cherokee_buffer_ensure_size (&conn->redirect, conn->request.len + 1);1549 cherokee_buffer_ensure_size (&conn->redirect, conn->request.len + 4); 1546 1550 cherokee_buffer_add_buffer (&conn->redirect, &conn->request); 1547 1551 cherokee_buffer_add (&conn->redirect, "/", 1); … … 1857 1861 conn->local_directory.buf); 1858 1862 1859 /* If the connection is keep-alive , have a look at the1860 * handler to see ifsupports it.1863 /* If the connection is keep-alive 1864 * then verify whether the handler supports it. 1861 1865 */ 1862 1866 if ((HANDLER_SUPPORT_LENGTH(conn->handler) == 0) && … … 1864 1868 conn->keepalive = 0; 1865 1869 } 1866 1867 /* Ensure the space for writ ting1870 1871 /* Ensure the space for writing 1868 1872 */ 1869 1873 cherokee_buffer_ensure_size (&conn->buffer, DEFAULT_READ_SIZE+1); cherokee/trunk/cherokee/handler_file.c
r495 r527 166 166 167 167 req_time = cherokee_dtm_str2time (header); 168 if ( req_time == -1) {168 if (unlikely (req_time == DTM_TIME_EVAL)) { 169 169 cherokee_logger_write_string ( 170 170 CONN_VSRV(conn)->logger, 171 171 "Warning: Unparseable time '%s'", 172 172 header); 173 } 174 *end = tmp; /* restore */ 175 176 if (req_time == -1) { 173 /* restore end of line */ 174 *end = tmp; 177 175 return ret_ok; 178 176 } 177 /* restore end of line */ 178 *end = tmp; 179 179 180 180 /* The file is cached in the client … … 198 198 int tmp_len; 199 199 CHEROKEE_TEMP(tmp,100); 200 200 201 201 has_etag = true; 202 203 tmp_len = snprintf (tmp, tmp_size, "%lx=" FMT_OFFSET_HEX, fhdl->info->st_mtime, fhdl->info->st_size); 202 203 tmp_len = snprintf (tmp, tmp_size, "%lx=" FMT_OFFSET_HEX, 204 fhdl->info->st_mtime, fhdl->info->st_size); 204 205 205 206 if ((header_len == tmp_len) && 206 (strncmp (header, tmp, tmp_len) == 0)) 207 { 207 (strncmp (header, tmp, tmp_len) == 0)) { 208 208 not_modified_etag = true; 209 209 } … … 237 237 238 238 req_time = cherokee_dtm_str2time (header); 239 if ( req_time == -1) {239 if (unlikely (req_time == DTM_TIME_EVAL)) { 240 240 cherokee_logger_write_string ( 241 241 CONN_VSRV(conn)->logger, 242 242 "Warning: Unparseable time '%s'", 243 243 header); 244 *end = tmp; 245 return ret_ok; 244 246 } 245 247 *end = tmp; 246 247 if (req_time == -1) {248 return ret_ok;249 }250 248 251 249 /* If the entity tag given in the If-Range header … … 544 542 { 545 543 ret_t ret; 546 off_t length; 547 struct tm modified_tm; 544 size_t szlen = 0; 545 off_t content_length = 0; 546 struct tm modified_tm = { 0 }; 547 char bufstr[DTM_SIZE_GMTTM_STR]; 548 548 cherokee_connection_t *conn = HANDLER_CONN(fhdl); 549 549 550 /* E tag550 /* ETag: 551 551 */ 552 552 if (conn->header.version >= http_version_11) { 553 cherokee_buffer_add_va (buffer, "E tag: %lx=" FMT_OFFSET_HEX CRLF, fhdl->info->st_mtime, fhdl->info->st_size);553 cherokee_buffer_add_va (buffer, "ETag: %lx=" FMT_OFFSET_HEX CRLF, fhdl->info->st_mtime, fhdl->info->st_size); 554 554 } 555 555 … … 558 558 cherokee_gmtime (&fhdl->info->st_mtime, &modified_tm); 559 559 560 cherokee_buffer_add_va (buffer, 561 "Last-Modified: %s, %02d %s %d %02d:%02d:%02d GMT"CRLF, 562 cherokee_weekdays[modified_tm.tm_wday], 563 modified_tm.tm_mday, 564 cherokee_months[modified_tm.tm_mon], 565 modified_tm.tm_year + 1900, 566 modified_tm.tm_hour, 567 modified_tm.tm_min, 568 modified_tm.tm_sec); 560 szlen = cherokee_dtm_gmttm2str(bufstr, DTM_SIZE_GMTTM_STR, &modified_tm); 561 562 cherokee_buffer_add_str(buffer, "Last-Modified: "); 563 cherokee_buffer_add (buffer, bufstr, szlen); 564 cherokee_buffer_add_str(buffer, CRLF); 569 565 570 566 #ifndef CHEROKEE_EMBEDDED … … 583 579 ret = cherokee_mime_entry_get_maxage (fhdl->mime, &maxage); 584 580 if (ret == ret_ok) { 585 cherokee_buffer_add_va (buffer, "Cache-Control: max-age=%u"CRLF, maxage); 581 cherokee_buffer_add_str (buffer, "Cache-Control: max-age="); 582 cherokee_buffer_add_ulong10(buffer, (culong_t) maxage); 583 cherokee_buffer_add_str (buffer, CRLF); 586 584 } 587 585 } … … 601 599 /* We stat()'ed the file in the handler constructor 602 600 */ 603 length = conn->range_end - conn->range_start;604 if (unlikely ( length < 0))605 length = 0;601 content_length = conn->range_end - conn->range_start; 602 if (unlikely (content_length < 0)) 603 content_length = 0; 606 604 607 605 if (conn->encoder == NULL) { … … 614 612 fhdl->info->st_size); 615 613 } 616 617 cherokee_buffer_add_va (buffer, "Content-Length: " FMT_OFFSET CRLF, length);614 615 cherokee_buffer_add_va (buffer, "Content-Length: " FMT_OFFSET CRLF, content_length); 618 616 619 617 } else { 620 /* Can't use Keep-alive w/o "Content-length:", so 618 /* Can't use Keep-alive w/o "Content-length:", so disable it. 621 619 */ 622 620 conn->keepalive = 0; cherokee/trunk/cherokee/server.c
r526 r527 80 80 #include "mime.h" 81 81 #include "util.h" 82 #include "dtm.h" 82 83 #include "fdpoll.h" 83 84 #include "fdpoll-protected.h" … … 1095 1096 cherokee_buffer_clean (&srv->bogo_now_string); 1096 1097 cherokee_buffer_add_va_fixed (&srv->bogo_now_string, 1097 "%s, %02d %s %d %02d:%02d:%02d GMT%c%d",1098 cherokee_weekdays[srv->bogo_now_tm.tm_wday],1099 srv->bogo_now_tm.tm_mday,1100 cherokee_months[srv->bogo_now_tm.tm_mon],1101 srv->bogo_now_tm.tm_year + 1900,1102 srv->bogo_now_tm.tm_hour,1103 srv->bogo_now_tm.tm_min,1104 srv->bogo_now_tm.tm_sec,1105 sign, offset);1098 "%s, %02d %s %d %02d:%02d:%02d GMT%c%d", 1099 cherokee_dtm_wday_name(srv->bogo_now_tm.tm_wday), 1100 srv->bogo_now_tm.tm_mday, 1101 cherokee_dtm_month_name(srv->bogo_now_tm.tm_mon), 1102 srv->bogo_now_tm.tm_year + 1900, 1103 srv->bogo_now_tm.tm_hour, 1104 srv->bogo_now_tm.tm_min, 1105 srv->bogo_now_tm.tm_sec, 1106 sign, offset); 1106 1107 1107 1108 CHEROKEE_RWLOCK_UNLOCK (&srv->bogo_now_mutex); /* 2.- release */ cherokee/trunk/cherokee/util.c
r526 r527 85 85 #define ENTRIES "util" 86 86 87 88 87 const char *cherokee_version = PACKAGE_VERSION; 89 const char *cherokee_months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",90 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};91 const char *cherokee_weekdays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};92 88 93 89 … … 548 544 549 545 550 #define LEN_NUM(base) \551 do { \546 #define LEN_NUM(base) \ 547 do { \ 552 548 ul /= base; \ 553 549 len++; \ 554 550 } while (ul > 0); \ 555 len++ ;551 len++ 556 552 557 553 … … 571 567 case 's': 572 568 p = va_arg(ap, char *); 573 len += strlen (p ? p: "(null)");569 len += strlen (p ? p : "(null)"); 574 570 break; 575 571 case 'd': cherokee/trunk/cherokee/util.h
r493 r527 66 66 /* Some global information 67 67 */ 68 const extern char *cherokee_months[];69 const extern char *cherokee_weekdays[];70 68 71 69 /* System