配置文件的读取

  配置文件的读取是程序中必要部分,虽然不算复杂,但如果每次都写配置文件的分析提取代码也是件烦人的事。现在流行的配置文件格式有:ini,xml ,简单name-value对等格式,ACL库中实现了最简单的 name-value对格式的配置文件,该文件格式有点类似于 xinetd.conf 的格式,文件格式如下:

 

test.cf:

 

service myapp {

    my_addr = 127.0.0.1

    my_port = 80

    my_list = www.test1.com, www.test2.com, www.test3.com, \

                   www.test4.com, www.test5.com, www.test6.com

    ...

}

 

  其中的 "\"  是连接符,可以把折行的数据连接起来。

  下面的例子读取该配置文件并进行解析:

static int var_cfg_my_port;

static ACL_CFG_INT_TABLE __conf_int_tab[] = {
  /* 配置项名称, 配置项缺省值, 存储配置项值的地址, 保留字, 保留字 */
  { "my_port", 8080, &var_cfg_my_port, 0, 0 },
  { 0, 0 , 0, 0, 0 }
};

static char *var_cfg_my_addr;
static char *var_cfg_my_list;

static ACL_CFG_STR_TABLE __conf_str_tab[] = {
  /* 配置项名称, 配置项缺省值, 存储配置项值的地址 */
  { "my_addr", "192.168.0.1", &var_cfg_my_addr },
  { "my_list", "www.test.com", &var_cfg_my_list },
  { 0, 0, 0 }
};

static int var_cfg_my_check;

static ACL_CFG_BOOL_TABLE __conf_bool_tab[] = {
  /* 配置项名称, 配置项缺省值, 存储配置项值的地址 */
  { "my_check", 0, &var_cfg_my_check },
  { 0, 0, 0 }
};

void test(void)
{
  ACL_XINETD_CFG_PARSER *cfg;  // 配置解析对象

  cfg = acl_xinetd_cfg_load("test.cf");  // 读取并解析配置文件
  acl_xinetd_params_int_table(cfg, __conf_int_tab);  // 读取所有 int 类型的配置项
  acl_xinetd_params_str_table(cfg, __conf_str_tab);  // 读取所有字符串类型的配置项
  acl_xinetd_params_bool_table(cfg, __conf_bool_tab);  // 读取所有 bool 型的配置项

  acl_xinetd_cfg_free(cfg);  // 释放内存
}

  通过调用 acl_xinetd_params_xxx_table() 函数,直接将配置项的值赋给变量,这样省去了很多麻烦。

 

    个人微博:http://weibo.com/zsxxsz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值