acl  3.5.3.0
acl_cfg_macro.h
浏览该文件的文档.
1 #ifndef ACL_CFG_MACRO_INCLUDE_H
2 #define ACL_CFG_MACRO_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "acl_define.h"
9 
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <errno.h>
13 #include <string.h>
14 
15 #include "acl_msg.h"
16 #include "acl_xinetd_cfg.h"
17 
18 /**
19  * 从配置对象中取得某个配置项的值
20  * @param _xcp_ {ACL_XINETD_CFG_PARSER*} 配置对象
21  * @param _name_ {const char*} 配置项名
22  * @param _obj_ {char*} 存储配置项的字符串类型的值
23  */
24 #define ACL_CFG_SET_ITEM_STR(_xcp_, _name_, _obj_) do { \
25  ACL_XINETD_CFG_PARSER *_tmp_xcp_ = _xcp_; \
26  const char *_ptr_; \
27  _ptr_ = acl_xinetd_cfg_get(_tmp_xcp_, _name_); \
28  if (_ptr_ && *_ptr_) { \
29  _obj_ = acl_mystrdup(_ptr_); \
30  if (_obj_ == NULL) \
31  acl_msg_fatal("%s(%d): acl_mystrdup error=%s for %s", \
32  __FILE__, __LINE__, \
33  strerror(errno), _ptr_); \
34  } \
35 } while (0);
36 
37 /**
38  * 从配置对象中取得某个配置项的值
39  * @param _xcp_ {ACL_XINETD_CFG_PARSER*} 配置对象
40  * @param _name_ {const char*} 配置项名
41  * @param _obj_ {int} 存储配置项的整数类型的值
42  * @param _def_ {int} 如果配置项不存在,则用此缺省值
43  */
44 #define ACL_CFG_SET_ITEM_INT(_xcp_, _name_, _obj_, _def_) do { \
45  ACL_XINETD_CFG_PARSER *_tmp_xcp_ = _xcp_; \
46  const char *_ptr_; \
47  _ptr_ = acl_xinetd_cfg_get(_tmp_xcp_, _name_); \
48  if (_ptr_ && *_ptr_) { \
49  _obj_ = atoi(_ptr_); \
50  if (_obj_ <= 0) \
51  _obj_ = _def_; \
52  } else \
53  _obj_ = _def_; \
54 } while (0);
55 
56 #ifdef __cplusplus
57 }
58 #endif
59 
60 #endif