Changeset 441
- Timestamp:
- 07/11/2005 11:03:12 AM (3 years ago)
- Location:
- branches/lighttpd-1.3.x/src
- Files:
-
- 2 modified
-
mod_cml.h (modified) (2 diffs)
-
mod_cml_logic.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/lighttpd-1.3.x/src/mod_cml.h
r432 r441 61 61 62 62 buffer *basedir; 63 buffer *baseurl; 63 64 64 65 buffer *trigger_handler; … … 99 100 CACHE_FUNC_PROTO(f_memcache_get_string); 100 101 CACHE_FUNC_PROTO(f_memcache_get_long); 102 CACHE_FUNC_PROTO(f_http_request_get_param); 103 CACHE_FUNC_PROTO(f_crypto_md5); 101 104 102 105 #endif -
branches/lighttpd-1.3.x/src/mod_cml_logic.c
r432 r441 171 171 { "memcache.get_long", 1, f_memcache_get_long }, 172 172 #endif 173 { "http.get_parameter", 1, f_http_request_get_param }, 174 { "crypto.md5", 1, f_crypto_md5 }, 173 175 { NULL, 0, NULL }, 174 176 }; … … 392 394 } 393 395 394 int cache_ops_long( tnode *res, tnode *l, tnode *r) {396 int cache_ops_long(server *srv, tnode *res, tnode *l, tnode *r) { 395 397 if (!IS_LONG(l) || !IS_LONG(r)) { 396 398 return -1; … … 432 434 } 433 435 434 int cache_ops_string( tnode *res, tnode *l, tnode *r) {436 int cache_ops_string(server *srv, tnode *res, tnode *l, tnode *r) { 435 437 if (!IS_STRING(l) || !IS_STRING(r)) { 436 438 return -1; … … 448 450 449 451 break; 452 case EQ: 453 tnode_prepare_long(res); 454 455 VAL_LONG(res) = buffer_is_equal(VAL_STRING(l), VAL_STRING(r)); 456 457 res->value.type = T_NODE_VALUE_LONG; 458 res->op = UNSET; 459 460 break; 461 case NE: 462 tnode_prepare_long(res); 463 464 VAL_LONG(res) = !buffer_is_equal(VAL_STRING(l), VAL_STRING(r)); 465 466 res->value.type = T_NODE_VALUE_LONG; 467 res->op = UNSET; 468 469 break; 450 470 default: 451 471 return -1; 452 472 } 473 474 return 0; 475 } 476 477 int cache_print_tree(server *srv, connection *con, plugin_data *p, tnode *t, int indent) { 478 char s[255]; 479 size_t i; 480 481 for (i = 0; i < indent; i++) { 482 s[i] = ' '; 483 } 484 485 s[i] = '\0'; 486 487 if (IS_LONG(t)) log_error_write(srv, __FILE__, __LINE__, "ssd", s, "l:", VAL_LONG(t)); 488 if (IS_STRING(t)) log_error_write(srv, __FILE__, __LINE__, "ssb", s, "s:", VAL_STRING(t)); 489 490 491 if (t->l) { 492 log_error_write(srv, __FILE__, __LINE__, "ss", s, "left"); 493 cache_print_tree(srv, con, p, t->l, indent + 1); 494 } 495 496 if (t->r) { 497 log_error_write(srv, __FILE__, __LINE__, "ss", s, "right"); 498 cache_print_tree(srv, con, p, t->r, indent + 1); 499 } 500 453 501 454 502 return 0; … … 478 526 /* left and right are simple datatypes now */ 479 527 if (IS_LONG(t->l) && IS_LONG(t->r)) { 480 if (-1 == cache_ops_long(t, t->l, t->r)) { 481 fprintf(stderr, "%s.%d\n", __FILE__, __LINE__); 528 if (-1 == cache_ops_long(srv, t, t->l, t->r)) { 529 log_error_write(srv, __FILE__, __LINE__, "s", 530 "cache_ops_long failed"); 482 531 return -1; 483 532 } 484 533 } else if (IS_STRING(t->l) && IS_STRING(t->r)) { 485 if (-1 == cache_ops_string( t, t->l, t->r)) {534 if (-1 == cache_ops_string(srv, t, t->l, t->r)) { 486 535 log_error_write(srv, __FILE__, __LINE__, "s", 487 536 "cache_ops_string failed"); … … 489 538 } 490 539 } else { 491 log_error_write(srv, __FILE__, __LINE__, "s ",492 "typemismatch" );540 log_error_write(srv, __FILE__, __LINE__, "sdd", 541 "typemismatch", t->l->value.type, t->r->value.type); 493 542 494 543 return -1; … … 516 565 517 566 if (IS_LONG(t)) { 518 #if 0 519 fprintf(stderr, "eval: %s = %ld\n", p->trigger_if->ptr[i]->ptr, VAL_LONG(t)); 520 #endif 567 log_error_write(srv, __FILE__, __LINE__, "sbd", 568 "eval:", p->trigger_if->ptr[i], VAL_LONG(t)); 521 569 if (VAL_LONG(t) != 0) { 522 570 tnode_free(t); … … 525 573 } 526 574 } else if (IS_STRING(t)) { 527 #if 0 528 fprintf(stderr, "eval: %s = '%s'\n", p->trigger_if->ptr[i]->ptr, VAL_STRING(t)->ptr);529 #endif 575 log_error_write(srv, __FILE__, __LINE__, "sbb", 576 "eval:", p->trigger_if->ptr[i], VAL_STRING(t)); 577 530 578 if (VAL_STRING(t)->used > 1) { 531 579 tnode_free(t); … … 651 699 */ 652 700 653 buffer *b; 654 655 b = p->trigger_handler; 656 657 buffer_copy_string_buffer(b, p->basedir); 658 buffer_append_string(b, value); 701 buffer_copy_string(p->trigger_handler, value); 659 702 } else { 660 703 log_error_write(srv, __FILE__, __LINE__, "db", key_len, srv->tmp_buf); … … 685 728 686 729 /* rewrite filename */ 687 buffer_copy_string_buffer(con->physical.path, p->trigger_handler); 730 buffer_copy_string_buffer(con->uri.path, p->baseurl); 731 buffer_append_string_buffer(con->uri.path, p->trigger_handler); 732 733 buffer_copy_string_buffer(con->physical.path, p->basedir); 734 buffer_append_string_buffer(con->physical.path, p->trigger_handler); 688 735 689 736 chunkqueue_reset(con->write_queue);

