| 665 | const char *USAGE_LINE = "Usage: " PROGRAM_NAME " [-f logfile] [-o origin[,...]] [-O originfile] [-m minhits] [-binshv]"; |
| 666 | |
| 667 | void |
| 668 | CommandLineArgs::parse_arguments(const char **argv) |
| 669 | { |
| 670 | // process command-line arguments |
| 671 | process_args(&AppVersionInfo::get_version(), argument_descriptions, countof(argument_descriptions), argv, USAGE_LINE); |
| 672 | |
| 673 | // Process as "CGI" ? |
| 674 | if (strstr(argv[0], ".cgi") || cgi) { |
| 675 | char *query; |
| 676 | |
| 677 | json = 1; |
| 678 | cgi = 1; |
| 679 | |
| 680 | if (nullptr != (query = getenv("QUERY_STRING"))) { |
| 681 | char buffer[MAX_ORIG_STRING]; |
| 682 | char *tok, *sep_ptr, *val; |
| 683 | |
| 684 | ink_strlcpy(buffer, query, sizeof(buffer)); |
| 685 | unescapifyStr(buffer); |
| 686 | |
| 687 | for (tok = strtok_r(buffer, "&", &sep_ptr); tok != nullptr;) { |
| 688 | val = strchr(tok, '='); |
| 689 | if (val) { |
| 690 | *(val++) = '\0'; |
| 691 | if (0 == strncmp(tok, "origin_list", 11)) { |
| 692 | ink_strlcpy(origin_list, val, sizeof(origin_list)); |
| 693 | } else if (0 == strncmp(tok, "state_tag", 9)) { |
| 694 | ink_strlcpy(state_tag, val, sizeof(state_tag)); |
| 695 | } else if (0 == strncmp(tok, "max_origins", 11)) { |
| 696 | max_origins = strtol(val, nullptr, 10); |
| 697 | } else if (0 == strncmp(tok, "urls", 4)) { |
| 698 | urls = strtol(val, nullptr, 10); |
| 699 | } else if (0 == strncmp(tok, "show_urls", 9)) { |
| 700 | show_urls = strtol(val, nullptr, 10); |
| 701 | } else if (0 == strncmp(tok, "as_object", 9)) { |
| 702 | as_object = strtol(val, nullptr, 10); |
| 703 | } else if (0 == strncmp(tok, "min_hits", 8)) { |
| 704 | min_hits = strtol(val, nullptr, 10); |
| 705 | } else if (0 == strncmp(tok, "incremental", 11)) { |
| 706 | incremental = strtol(val, nullptr, 10); |
| 707 | } else { |
| 708 | // Unknown query arg. |
| 709 | } |
| 710 | } |
| 711 | |
| 712 | tok = strtok_r(nullptr, "&", &sep_ptr); |
| 713 | } |
| 714 | } |
| 715 | } |
| 716 | } |
| 717 | |
| 718 | // Enum for return code levels. |
| 719 | enum ExitLevel { |
no test coverage detected