| 612 | } core_opts_t; |
| 613 | |
| 614 | static void core_opts_merge(const ap_conf_vector_t *sec, core_opts_t *opts) |
| 615 | { |
| 616 | core_dir_config *this_dir = ap_get_core_module_config(sec); |
| 617 | |
| 618 | if (!this_dir) { |
| 619 | return; |
| 620 | } |
| 621 | |
| 622 | if (this_dir->opts & OPT_UNSET) { |
| 623 | opts->add = (opts->add & ~this_dir->opts_remove) |
| 624 | | this_dir->opts_add; |
| 625 | opts->remove = (opts->remove & ~this_dir->opts_add) |
| 626 | | this_dir->opts_remove; |
| 627 | opts->opts = (opts->opts & ~opts->remove) | opts->add; |
| 628 | } |
| 629 | else { |
| 630 | opts->opts = this_dir->opts; |
| 631 | opts->add = this_dir->opts_add; |
| 632 | opts->remove = this_dir->opts_remove; |
| 633 | } |
| 634 | |
| 635 | if (!(this_dir->override & OR_UNSET)) { |
| 636 | opts->override = this_dir->override; |
| 637 | opts->override_opts = this_dir->override_opts; |
| 638 | } |
| 639 | |
| 640 | if (this_dir->override_list != NULL) { |
| 641 | opts->override_list = this_dir->override_list; |
| 642 | } |
| 643 | } |
| 644 | |
| 645 | |
| 646 | /***************************************************************** |
no test coverage detected