#ifndef _RSK_LIBCONFIG_H
# define _RSK_LIBCONFIG_H
# ifdef __cplusplus
extern "C" {
# endif
typedef enum {
LC_CONF_SECTION,
LC_CONF_APACHE,
LC_CONF_COLON,
LC_CONF_EQUAL,
LC_CONF_SPACE,
LC_CONF_XML
} lc_conf_type_t;
typedef enum {
LC_VAR_UNKNOWN,
LC_VAR_NONE,
LC_VAR_STRING,
LC_VAR_LONG_LONG,
LC_VAR_LONG,
LC_VAR_INT,
LC_VAR_SHORT,
LC_VAR_BOOL,
LC_VAR_FILENAME,
LC_VAR_DIRECTORY,
LC_VAR_SIZE_LONG_LONG,
LC_VAR_SIZE_LONG,
LC_VAR_SIZE_INT,
LC_VAR_SIZE_SHORT,
LC_VAR_TIME,
LC_VAR_DATE,
LC_VAR_SECTION,
LC_VAR_SECTIONSTART,
LC_VAR_SECTIONEND,
LC_VAR_BOOL_BY_EXISTANCE,
LC_VAR_SIZE_SIZE_T,
LC_VAR_CIDR,
LC_VAR_IP,
LC_VAR_IP4,
LC_VAR_IP6,
LC_VAR_ADDR,
LC_VAR_ADDR4,
LC_VAR_ADDR6,
LC_VAR_HOSTNAME,
LC_VAR_HOSTNAME4,
LC_VAR_HOSTNAME6,
LC_VAR_DOUBLE,
LC_VAR_FLOAT,
LC_VAR_LIST = 0x80
} lc_var_type_t;
typedef enum {
LC_FLAGS_VAR,
LC_FLAGS_CMDLINE,
LC_FLAGS_ENVIRON,
LC_FLAGS_SECTIONSTART,
LC_FLAGS_SECTIONEND
} lc_flags_t;
typedef enum {
LC_ERR_NONE,
LC_ERR_INVCMD,
LC_ERR_INVSECTION,
LC_ERR_INVDATA,
LC_ERR_BADFORMAT,
LC_ERR_CANTOPEN,
LC_ERR_CALLBACK,
LC_ERR_ENOMEM
} lc_err_t;
int lc_process(int argc, char **argv, const char *appname, lc_conf_type_t type, const char *extra);
int lc_register_callback(const char *var, char opt, lc_var_type_t type, int (*callback)(const char *, const char *, const char *, const char *, lc_flags_t, void *), void *extra);
int lc_register_var(const char *var, lc_var_type_t type, void *data, char opt);
lc_err_t lc_geterrno(void);
void lc_seterrstr(const char *usererrstr);
char *lc_geterrstr(void);
int lc_process_file(const char *appname, const char *pathname, lc_conf_type_t type);
int lc_handle_type(lc_var_type_t type, const char *value, void *data);
void lc_cleanup(void);
# define LC_CBRET_IGNORESECTION (255)
# define LC_CBRET_OKAY (0)
# define LC_CBRET_ERROR (-1)
extern int lc_optind;
# ifdef __cplusplus
}
# endif
#endif