int config_insert_values_global(server *srv, array *ca, const config_values_t cv[], config_scope_type_t scope) { size_t i; data_unset *du; for (i = 0; cv[i].key; i++) { data_string *touched; if (NULL == (du = array_get_element(ca, cv[i].key))) { /* no found */ continue; } /* touched */ touched = data_string_init(); buffer_copy_string_len(touched->value, CONST_STR_LEN("")); buffer_copy_buffer(touched->key, du->key); array_insert_unique(srv->config_touched, (data_unset *)touched); } return config_insert_values_internal(srv, ca, cv, scope); }
//该函数用于逐个记录那些被转换了的配置信息(记录在srv->config_touched中) int config_insert_values_global(server *srv, array *ca, const config_values_t cv[]) { size_t i; data_unset *du; //对将要被转换的配置值逐个判断以记录被使用了的配置项 for (i = 0; cv[i].key; i++) { data_string *touched; if (NULL == (du = array_get_element(ca, cv[i].key))) { /* no found */ //配置文件里没有对其的配置项 continue; } /* touched */ //有配置 touched = data_string_init(); buffer_copy_string_len(touched->value, CONST_STR_LEN("")); //并不关心其配置值 buffer_copy_string_buffer(touched->key, du->key); //获取其配置项的Key array_insert_unique(srv->config_touched, (data_unset *)touched); //记录被使用的配置项 } return config_insert_values_internal(srv, ca, cv); //调用函数config_insert_values_internal()获取配置值 }