//{/'title/':/'int cfg_fill(rule_entry *rentry_list, cfg_desc *desc_table)//n/{//n//t//tint dt_index = 0;//n//t//trule_entry *entry = NULL;//n//t//trule_var *var = NULL;//n//n//t//tif (!rentry_list || !desc_table)//n//t//t//tgoto err;//n//n//t//twhile (1)//n//t//t/{//n//t//t//tif (!(desc_table[dt_index].key_name)[0] || !desc_table[dt_index].addr || desc_table[dt_index].maxlen == 0)//n//t//t//t/{//n//t//t//t//tbreak;//n//t//t//t/}//n//n//t//t//t// 如果entry_title为空,表示将仅在rentry_list指向的rule_entry结构里查找//n//t//t//tif (desc_table[dt_index].entry_title[0])//n//t//t//t/{//n//t//t//t//tentry = search_nocase_rule_entry_list(&rentry_list, desc_table[dt_index].entry_title);//n//n//t//t//t//tif (!entry)//n//t//t//t//t/{//n//t//t//t//t//tdesc_table[dt_index].valid = 0;//n//t//t//t//t//tif (desc_table[dt_index].compulsive)//n//t//t//t//t//t/{//n//t//t//t//t//t//tN_FPRINTF(stderr, /'Config Error: Not found the keyname which SHOULD BE there! (%s:%s)//n/', desc_table[dt_index].entry_title, desc_table[dt_index].key_name);//n//t//t//t//t//t//t// goto err;//n//t//t//t//t//t/}//n//n//t//t//t//t//tgoto next;//n//t//t//t//t/}//n//t//t//t/}//n//t//t//telse//n//t//t//t//tentry = rentry_list;//n//n//t//t//tvar = search_var_nocase_in_rule_entry(entry, desc_table[dt_index].key_name);//n//t//t//tif (!var)//n//t//t//t/{//n//t//t//t//tdesc_table[dt_index].valid = 0;//n//n//t//t//t//tif (desc_table[dt_index].compulsive)//n//t//t//t//t/{//n//t//t//t//t//tN_FPRINTF(stderr, /'Config Error: Not found the keyname which SHOULD BE there!! (%s:%s)//n/', desc_table[dt_index].entry_title, desc_table[dt_index].key_name);//n//t//t//t//t//t// goto err;//n//t//t//t//t/}//n//n//t//t//t//tgoto next;//n//t//t//t/}//n//n//t//t//tif (cfg_conv_value(var->rv_valuep, desc_table[dt_index].addr, desc_table[dt_index].maxlen, desc_table[dt_index].type) < 0)//n//t//t//t/{//n//t//t//t//tdesc_table[dt_index].valid = 0;//n//n//t//t//t//tif (desc_table[dt_index].compulsive)//n//t//t//t//t/{//n//t//t//t//t//tN_FPRINTF(stderr, /'Config Error: cfg_fill: //'compulsive//' cfg_desc haven//'t been right//n/');//n#ifdef DEBUG//n//t//t//t//t//tcfg_print_desc(desc_table + dt_index);//n#endif//n//t//t//t//t//tgoto err;//n//t//t//t//t/}//n//t//t//t//telse//n//t//t//t//t/{//n//t//t//t//t//tN_FPRINTF(stderr, /'Config Error: cfg_fill: convert value error//n/');//n#ifdef DEBUG//n//t//t//t//t//tcfg_print_desc(desc_table + dt_index);//n#endif//n//t//t//t//t//tgoto next;//n//t//t//t//t/}//n//t//t//t/}//n//n//t//t//tdesc_table[dt_index].valid = 1;//n//n//t//tnext://n//t//t//tdt_index++;//n//t//t/}//n//n//t//treturn 0;//nerr://n//t//treturn -1;//n}//n

配置文件解析函数:cfg_fill() 的工作原理和实现

原文地址: https://www.cveoy.top/t/topic/pXZw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录