{"title":"int cfg_fill(rule_entry *rentry_list, cfg_desc *desc_table)\n{\n\tint dt_index = 0;\n\trule_entry *entry = NULL;\n\trule_var *var = NULL;\n\n\tif (!rentry_list || !desc_table)\n\t\tgoto err;\n\n\twhile (1)\n\t{\n\t\tif (!(desc_table[dt_index].key_name)[0] || !desc_table[dt_index].addr || desc_table[dt_index].maxlen == 0)\n\t\t{\n\t\t\tbreak;\n\t\t}\n\n\t\t// 如果entry_title为空,表示将仅在rentry_list指向的rule_entry结构里查找\n\t\tif (desc_table[dt_index].entry_title[0])\n\t\t{\n\t\t\tentry = search_nocase_rule_entry_list(&rentry_list, desc_table[dt_index].entry_title);\n\n\t\t\tif (!entry)\n\t\t\t{\n\t\t\t\tdesc_table[dt_index].valid = 0;\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\t\t}\n\t\telse\n\t\t\tentry = rentry_list;\n\n\t\tvar = search_var_nocase_in_rule_entry(entry, desc_table[dt_index].key_name);\n\t\tif (!var)\n\t\t{\n\t\t\tdesc_table[dt_index].valid = 0;\n\n\t\t\tif (desc_table[dt_index].compulsive)\n\t\t\t{\n\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// goto err;\n\t\t\t}\n\n\t\t\tgoto next;\n\t\t}\n\n\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{\n\t\t\tdesc_table[dt_index].valid = 0;\n\n\t\t\tif (desc_table[dt_index].compulsive)\n\t\t\t{\n\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\tcfg_print_desc(desc_table + dt_index);\n#endif\n\t\t\t\tgoto err;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tN_FPRINTF(stderr, "Config Error: cfg_fill: convert value error\n");\n#ifdef DEBUG\n\t\t\t\tcfg_print_desc(desc_table + dt_index);\n#endif\n\t\t\t\tgoto next;\n\t\t\t}\n\t\t}\n\n\t\tdesc_table[dt_index].valid = 1;\n\n\tnext:\n\t\tdt_index++;\n\t}\n\n\treturn 0;\nerr:\n\treturn -1;\n}\n

C语言代码:cfg_fill 函数解析及SEO优化

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

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