Mercurial > hg > nginx-quic
comparison src/core/ngx_conf_file.c @ 84:fab4cb00fe5b
nginx-0.0.1-2003-05-06-21:03:16 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 May 2003 17:03:16 +0000 |
parents | a7e45c45a95c |
children | 674d333f4296 |
comparison
equal
deleted
inserted
replaced
83:a7e45c45a95c | 84:fab4cb00fe5b |
---|---|
439 value = (ngx_str_t *) cf->args->elts; | 439 value = (ngx_str_t *) cf->args->elts; |
440 | 440 |
441 len = value[1].len; | 441 len = value[1].len; |
442 last = value[1].data[len - 1]; | 442 last = value[1].data[len - 1]; |
443 | 443 |
444 if (last == 'K' || last == 'k') { | 444 switch (last) { |
445 case 'K': | |
446 case 'k': | |
445 len--; | 447 len--; |
446 scale = 1024; | 448 scale = 1024; |
447 | 449 break; |
448 } else if (last == 'M' || last == 'm') { | 450 |
451 case 'M': | |
452 case 'm': | |
449 len--; | 453 len--; |
450 scale = 1024 * 1024; | 454 scale = 1024 * 1024; |
451 | 455 break; |
452 } else { | 456 |
457 default: | |
453 scale = 1; | 458 scale = 1; |
454 } | 459 } |
455 | 460 |
456 size = ngx_atoi(value[1].data, len); | 461 size = ngx_atoi(value[1].data, len); |
457 if (size == NGX_ERROR) { | 462 if (size == NGX_ERROR) { |
458 return "value must be greater or equal to zero"; | 463 return "invalid value"; |
459 } | 464 } |
460 | 465 |
461 size *= scale; | 466 size *= scale; |
462 | 467 |
463 *(int *) (conf + cmd->offset) = size; | 468 *(int *) (conf + cmd->offset) = size; |
464 | 469 |
465 return NGX_CONF_OK; | 470 return NGX_CONF_OK; |
466 } | 471 } |
467 | 472 |
468 | 473 |
469 char *ngx_conf_set_time_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) | 474 char *ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) |
470 { | 475 { |
471 int size, len, scale; | 476 int size, total, len, scale, i; |
472 char last; | 477 u_int max; |
478 char last, *start; | |
473 ngx_str_t *value; | 479 ngx_str_t *value; |
474 | 480 |
475 value = (ngx_str_t *) cf->args->elts; | 481 value = (ngx_str_t *) cf->args->elts; |
476 | 482 start = value[1].data; |
477 len = value[1].len; | 483 len = 0; |
478 last = value[1].data[len - 1]; | 484 total = 0; |
479 | 485 |
480 if (last == 'm') { | 486 for (i = 0; /* void */ ; i++) { |
481 len--; | 487 |
482 scale = 1000 * 60; | 488 if (i < value[1].len) { |
483 | 489 if (value[1].data[i] != ' ') { |
484 } else if (last == 'h') { | 490 len++; |
485 len--; | 491 continue; |
486 scale = 1000 * 60 * 60; | 492 } |
487 | 493 |
488 } else if (last == 'd') { | 494 if (value[1].data[i] == ' ' && len == 0) { |
489 len--; | 495 start = &value[1].data[i + 1]; |
490 scale = 1000 * 60 * 60 * 24; | 496 continue; |
491 | 497 } |
492 } else if (last == 'w') { | 498 } |
493 len--; | 499 |
494 scale = 1000 * 60 * 60 * 24 * 7; | 500 if (len == 0) { |
495 | 501 break; |
496 #if 0 /* overflow */ | 502 } |
497 | 503 |
498 } else if (last == 'M') { | 504 last = value[1].data[i - 1]; |
499 len--; | 505 |
500 scale = 1000 * 60 * 60 * 24 * 30; | 506 switch (last) { |
501 | 507 case 'm': |
502 } else if (last == 'y') { | 508 len--; |
503 len--; | 509 max = 35791; |
504 scale = 1000 * 60 * 60 * 24 * 365; | 510 scale = 1000 * 60; |
505 | 511 break; |
506 #endif | 512 |
507 | 513 case 'h': |
508 } else if (last == 's') { | 514 len--; |
509 len--; | 515 max = 596; |
510 if (value[1].data[len - 1] == 'm') { | 516 scale = 1000 * 60 * 60; |
511 len--; | 517 break; |
518 | |
519 case 'd': | |
520 len--; | |
521 max = 24; | |
522 scale = 1000 * 60 * 60 * 24; | |
523 break; | |
524 | |
525 case 's': | |
526 len--; | |
527 if (value[1].data[i - 2] == 'm') { | |
528 len--; | |
529 max = 2147483647; | |
530 scale = 1; | |
531 break; | |
532 } | |
533 /* fall thru */ | |
534 | |
535 default: | |
536 max = 2147483; | |
537 scale = 1000; | |
538 } | |
539 | |
540 size = ngx_atoi(start, len); | |
541 if (size < 0) { | |
542 return "invalid value"; | |
543 } | |
544 | |
545 if ((u_int) size > max) { | |
546 return "value must be less than 597 hours"; | |
547 } | |
548 | |
549 total += size * scale; | |
550 | |
551 if (i >= value[1].len) { | |
552 break; | |
553 } | |
554 | |
555 len = 0; | |
556 start = &value[1].data[i + 1]; | |
557 } | |
558 | |
559 *(int *) (conf + cmd->offset) = total; | |
560 | |
561 return NGX_CONF_OK; | |
562 } | |
563 | |
564 | |
565 char *ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) | |
566 { | |
567 int size, total, len, scale, i; | |
568 u_int max; | |
569 char last, *start; | |
570 ngx_str_t *value; | |
571 | |
572 value = (ngx_str_t *) cf->args->elts; | |
573 start = value[1].data; | |
574 len = 0; | |
575 total = 0; | |
576 | |
577 for (i = 0; /* void */ ; i++) { | |
578 | |
579 if (i < value[1].len) { | |
580 if (value[1].data[i] != ' ') { | |
581 len++; | |
582 continue; | |
583 } | |
584 | |
585 if (value[1].data[i] == ' ' && len == 0) { | |
586 start = &value[1].data[i + 1]; | |
587 continue; | |
588 } | |
589 } | |
590 | |
591 if (len == 0) { | |
592 break; | |
593 } | |
594 | |
595 last = value[1].data[i - 1]; | |
596 | |
597 switch (last) { | |
598 case 'm': | |
599 len--; | |
600 max = 35791394; | |
601 scale = 60; | |
602 break; | |
603 | |
604 case 'h': | |
605 len--; | |
606 max = 596523; | |
607 scale = 60 * 60; | |
608 break; | |
609 | |
610 case 'd': | |
611 len--; | |
612 max = 24855; | |
613 scale = 60 * 60 * 24; | |
614 break; | |
615 | |
616 case 'w': | |
617 len--; | |
618 max = 3550; | |
619 scale = 60 * 60 * 24 * 7; | |
620 break; | |
621 | |
622 case 'M': | |
623 len--; | |
624 max = 828; | |
625 scale = 60 * 60 * 24 * 30; | |
626 break; | |
627 | |
628 case 'y': | |
629 len--; | |
630 max = 68; | |
631 scale = 60 * 60 * 24 * 365; | |
632 break; | |
633 | |
634 case 's': | |
635 len--; | |
636 /* fall thru */ | |
637 | |
638 default: | |
639 max = 2147483647; | |
512 scale = 1; | 640 scale = 1; |
513 | 641 } |
514 } else { | 642 |
515 scale = 1000; | 643 size = ngx_atoi(start, len); |
516 } | 644 if (size < 0) { |
517 | 645 return "invalid value"; |
518 } else { | 646 } |
519 scale = 1000; | 647 |
520 } | 648 if ((u_int) size > max) { |
521 | 649 return "value must be less than 68 years"; |
522 size = ngx_atoi(value[1].data, len); | 650 } |
523 if (size < 0) { | 651 |
524 return "value must be greater or equal to zero"; | 652 total += size * scale; |
525 } | 653 |
526 | 654 if (i >= value[1].len) { |
527 size *= scale; | 655 break; |
528 | 656 } |
529 *(int *) (conf + cmd->offset) = size; | 657 |
658 len = 0; | |
659 start = &value[1].data[i + 1]; | |
660 } | |
661 | |
662 *(int *) (conf + cmd->offset) = total; | |
530 | 663 |
531 return NGX_CONF_OK; | 664 return NGX_CONF_OK; |
532 } | 665 } |
533 | 666 |
667 | |
534 char *ngx_conf_unsupported(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) | 668 char *ngx_conf_unsupported(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) |
535 { | 669 { |
536 return "unsupported on this platform"; | 670 return "unsupported on this platform"; |
537 } | 671 } |