acl/lib_acl/include/stdlib/acl_loadcfg.h

48 lines
1.6 KiB
C

#ifndef ACL_LOADCFG_INCLUDE_H
#define ACL_LOADCFG_INCLUDE_H
# ifdef __cplusplus
extern "C" {
# endif
#include "acl_define.h"
#include "acl_array.h"
typedef struct ACL_CFG_PARSER ACL_CFG_PARSER;
typedef struct ACL_CFG_LINE {
char **value; /* store the separated values of the line */
char *pdata; /* point to the beginning of the line data */
int ncount; /* how many values in this line data,
* if ncount == 0, then this is an
* invalid line, but still be stored
* here in pdata.
*/
int line_number; /* 该行在配置文件中的行号 */
} ACL_CFG_LINE;
typedef struct ACL_CFG_FN {
const char *name;
int (*func)(const ACL_CFG_LINE *);
} ACL_CFG_FN;
typedef void (*ACL_CFG_WALK_FN)(void *arg);
ACL_API ACL_CFG_PARSER *acl_cfg_parser_load(const char *pathname, const char *delimiter);
ACL_API void acl_cfg_parser_free(ACL_CFG_PARSER *parser);
ACL_API void acl_cfg_parser_walk(ACL_CFG_PARSER *parser, ACL_CFG_WALK_FN walk_fn);
ACL_API int acl_cfg_line_replace(ACL_CFG_LINE *cfg_line, const char **value, int from, int to);
ACL_API ACL_CFG_LINE *acl_cfg_parser_index(const ACL_CFG_PARSER *parser, int idx);
ACL_API int acl_cfg_parser_size(const ACL_CFG_PARSER *parser);
ACL_API int acl_cfg_parser_dump(const ACL_CFG_PARSER *parser, const char *pathname, const char *delimiter);
ACL_API int acl_cfg_parser_append(ACL_CFG_PARSER *parser, ACL_CFG_LINE *cfg_line);
ACL_API int acl_cfg_parser_delete(ACL_CFG_PARSER *parser, const char *name);
ACL_API ACL_CFG_LINE *acl_cfg_line_new(const char **value, int ncount);
# ifdef __cplusplus
}
# endif
#endif