求助skyeye源码中的一个问题!
在skyeye1.2.9中定义了一个全局变量:static skyeye_option_t* skyeye_option_list;
skyeye利用函数register_option把一些函数注册到该链表中,比如:
register_option("mem_bank", do_mem_bank_option, "");
可以多次利用register_option来把多个函数注册到skyeye_option_list中。
对于skyeye_option_list我有个疑问,skyeye是在哪里,怎样利用skyeye_option_list来完成
do_mem_bank_option等已经注册函数的调用的?
这个问题一直得不到解决,望请指教。谢谢!:) 在parse_line_formatted函数,如一下代码,对于配置文件的每一个选项,调用此函数,进行字符串比较。看看是否符合注册的sop中的name变量。然后调用sop中的相应的函数进行解析.
skyeye_option_t *sop;
//int len = sizeof (skyeye_options) / sizeof (skyeye_option_t);
int retval = 0;
if(skyeye_option_list == NULL)
return 0;
sop = skyeye_option_list;
if (num_params < 1)
return 0;
while(sop != NULL){
if (!strncmp (sop->option_name, params, MAX_OPTION_NAME)) {
if (retval = sop->do_option (sop, num_params - 1,
¶ms) < 0) {
fprintf (stderr,
"\"%s\" option parameter error!\n",
params);
return retval;
}
else
return retval;
}
sop = sop->next;
}
fprintf (stderr, "Unkonw option: %s\n", params);
return -1; 嗯,已明白。多谢管理员指点。:)
页:
[1]