/** * Merge dir config * * update config and merge */ void *merge_dir_conf(apr_pool_t *pool, void *base, void *add) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ apachelog_cfg *config = (apachelog_cfg *) base; apachelog_cfg *add_config = (apachelog_cfg *) add; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if (!config) { config = (apachelog_cfg *) create_dir_conf(pool, "Init Configuration"); } if (add_config) { if (add_config->service_name) { memset(config->service_name, 0, SERVICE_LEN); strncpy(config->service_name, add_config->service_name, SERVICE_LEN); } if (add_config->service_url) { memset(config->service_url, 0, SERVICE_URL_LEN); strncpy(config->service_url, add_config->service_url, SERVICE_URL_LEN); } if (add_config->target_method) { memset(config->target_method, 0, TARGET_METHOD_LEN); strncpy(config->target_method, add_config->target_method, TARGET_METHOD_LEN); } } return config; }
void *merge_dir_conf(apr_pool_t *pool, void *BASE, void *ADD) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ secuip_dir_config *base = (secuip_dir_config *) BASE; secuip_dir_config *add = (secuip_dir_config *) ADD; secuip_dir_config *dir_conf = (secuip_dir_config *) create_dir_conf(pool, "Merged configuration"); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if (add->enabled != 1) { //dir_conf->enabled = base->enabled; dir_conf->enabled = 1; dir_conf->duration = base->duration; dir_conf->max_call_count = base->max_call_count; dir_conf->block_time = base->block_time; dir_conf->block_response_code = base->block_response_code; return dir_conf; } //dir_conf->enabled = add->enabled; dir_conf->enabled = 1; dir_conf->duration = add->duration; dir_conf->max_call_count = add->max_call_count; dir_conf->block_time = add->block_time; dir_conf->block_response_code = add->block_response_code; return dir_conf; }