46 #if defined(_WIN32) && !defined(__GNUC__) 48 # define fileno _fileno 52 # define isatty _isatty 55 # define DLLIMPORT __declspec (dllexport) 57 # define DLLIMPORT __declspec (dllimport) 86 #define CFGF_NODEFAULT 16 87 #define CFGF_NO_TITLE_DUPES 32 92 #define CFGF_DEFINIT 128 96 #define CFG_FILE_ERROR -1 97 #define CFG_PARSE_ERROR 1 103 typedef int cfg_flag_t;
131 int argc,
const char **argv);
177 const char *value,
void *result);
205 typedef enum {cfg_false, cfg_true}
cfg_bool_t;
260 unsigned int nvalues;
275 extern const char __export confuse_copyright[];
276 extern const char __export confuse_version[];
277 extern const char __export confuse_author[];
279 #define __CFG_STR(name, def, flags, svalue, cb) \ 280 {name,CFGT_STR,0,0,flags,0,{0,0,cfg_false,def,0},0,svalue,cb,0,0,0} 281 #define __CFG_STR_LIST(name, def, flags, svalue, cb) \ 282 {name,CFGT_STR,0,0,flags | CFGF_LIST,0,{0,0,cfg_false,0,def},0,svalue,cb,0,0,0} 286 #define CFG_STR(name, def, flags) \ 287 __CFG_STR(name, def, flags, 0, 0) 291 #define CFG_STR_LIST(name, def, flags) \ 292 __CFG_STR_LIST(name, def, flags, 0, 0) 296 #define CFG_STR_CB(name, def, flags, cb) \ 297 __CFG_STR(name, def, flags, 0, cb) 301 #define CFG_STR_LIST_CB(name, def, flags, cb) \ 302 __CFG_STR_LIST(name, def, flags, 0, cb) 356 #define CFG_SIMPLE_STR(name, svalue) \ 357 __CFG_STR(name, 0, CFGF_NONE, svalue, 0) 360 #define __CFG_INT(name, def, flags, svalue, cb) \ 361 {name,CFGT_INT,0,0,flags,0,{def,0,cfg_false,0,0},0,svalue,cb,0,0,0} 362 #define __CFG_INT_LIST(name, def, flags, svalue, cb) \ 363 {name,CFGT_INT,0,0,flags | CFGF_LIST,0,{0,0,cfg_false,0,def},0,svalue,cb,0,0,0} 367 #define CFG_INT(name, def, flags) \ 368 __CFG_INT(name, def, flags, 0, 0) 372 #define CFG_INT_LIST(name, def, flags) \ 373 __CFG_INT_LIST(name, def, flags, 0, 0) 377 #define CFG_INT_CB(name, def, flags, cb) \ 378 __CFG_INT(name, def, flags, 0, cb) 382 #define CFG_INT_LIST_CB(name, def, flags, cb) \ 383 __CFG_INT_LIST(name, def, flags, 0, cb) 388 #define CFG_SIMPLE_INT(name, svalue) \ 389 __CFG_INT(name, 0, CFGF_NONE, svalue, 0) 393 #define __CFG_FLOAT(name, def, flags, svalue, cb) \ 394 {name,CFGT_FLOAT,0,0,flags,0,{0,def,cfg_false,0,0},0,svalue,cb,0,0,0} 395 #define __CFG_FLOAT_LIST(name, def, flags, svalue, cb) \ 396 {name,CFGT_FLOAT,0,0,flags | CFGF_LIST,0,{0,0,cfg_false,0,def},0,svalue,cb,0,0,0} 400 #define CFG_FLOAT(name, def, flags) \ 401 __CFG_FLOAT(name, def, flags, 0, 0) 405 #define CFG_FLOAT_LIST(name, def, flags) \ 406 __CFG_FLOAT_LIST(name, def, flags, 0, 0) 410 #define CFG_FLOAT_CB(name, def, flags, cb) \ 411 __CFG_FLOAT(name, def, flags, 0, cb) 415 #define CFG_FLOAT_LIST_CB(name, def, flags, cb) \ 416 __CFG_FLOAT_LIST(name, def, flags, 0, cb) 421 #define CFG_SIMPLE_FLOAT(name, svalue) \ 422 __CFG_FLOAT(name, 0, CFGF_NONE, svalue, 0) 426 #define __CFG_BOOL(name, def, flags, svalue, cb) \ 427 {name,CFGT_BOOL,0,0,flags,0,{0,0,def,0,0},0,svalue,cb,0,0,0} 428 #define __CFG_BOOL_LIST(name, def, flags, svalue, cb) \ 429 {name,CFGT_BOOL,0,0,flags | CFGF_LIST,0,{0,0,cfg_false,0,def},0,svalue,cb,0,0,0} 433 #define CFG_BOOL(name, def, flags) \ 434 __CFG_BOOL(name, def, flags, 0, 0) 438 #define CFG_BOOL_LIST(name, def, flags) \ 439 __CFG_BOOL_LIST(name, def, flags, 0, 0) 443 #define CFG_BOOL_CB(name, def, flags, cb) \ 444 __CFG_BOOL(name, def, flags, 0, cb) 448 #define CFG_BOOL_LIST_CB(name, def, flags, cb) \ 449 __CFG_BOOL_LIST(name, def, flags, 0, cb) 454 #define CFG_SIMPLE_BOOL(name, svalue) \ 455 __CFG_BOOL(name, cfg_false, CFGF_NONE, svalue, 0) 470 #define CFG_SEC(name, opts, flags) \ 471 {name,CFGT_SEC,0,0,flags,opts,{0,0,cfg_false,0,0},0,0,0,0,0,0} 481 #define CFG_FUNC(name, func) \ 482 {name,CFGT_FUNC,0,0,CFGF_NONE,0,{0,0,cfg_false,0,0},func,0,0,0,0,0} 485 #define __CFG_PTR(name, def, flags, svalue, parsecb, freecb) \ 486 {name,CFGT_PTR,0,0,flags,0,{0,0,cfg_false,0,def},0,svalue,parsecb,0,0,freecb} 487 #define __CFG_PTR_LIST(name, def, flags, svalue, parsecb, freecb) \ 488 {name,CFGT_PTR,0,0,flags | CFGF_LIST,0,{0,0,cfg_false,0,def},0,svalue,parsecb,0,0,freecb} 502 #define CFG_PTR_CB(name, def, flags, parsecb, freecb) \ 503 __CFG_PTR(name, def, flags, 0, parsecb, freecb) 507 #define CFG_PTR_LIST_CB(name, def, flags, parsecb, freecb) \ 508 __CFG_PTR(name, def, flags | CFGF_LIST, 0, parsecb, freecb) 518 {0,CFGT_NONE,0,0,CFGF_NONE,0,{0,0,cfg_false,0,0},0,0,0,0,0,0} 598 DLLIMPORT
void __export
cfg_error(
cfg_t *cfg,
const char *fmt, ...);
707 DLLIMPORT
void * __export cfg_opt_getnptr(
cfg_opt_t *opt,
unsigned int index);
708 DLLIMPORT
void * __export cfg_getnptr(
cfg_t *cfg,
const char *
name,
unsigned int indx);
871 long int value,
unsigned int index);
893 long int value,
unsigned int index);
904 double value,
unsigned int index);
926 double value,
unsigned int index);
937 cfg_bool_t value,
unsigned int index);
959 cfg_bool_t value,
unsigned int index);
971 const char *value,
unsigned int index);
995 const char *value,
unsigned int index);
1008 unsigned int nvalues, ...);
1023 unsigned int nvalues, ...);
DLLIMPORT double __export cfg_opt_getnfloat(cfg_opt_t *opt, unsigned int index)
Returns the value of a floating point option, given a cfg_opt_t pointer.
Definition: confuse.c:231
floating point number
Definition: confuse.h:71
DLLIMPORT void __export cfg_opt_setnbool(cfg_opt_t *opt, cfg_bool_t value, unsigned int index)
Set a value of a boolean option.
Definition: confuse.c:1300
cfg_bool_t
Boolean values.
Definition: confuse.h:207
Data structure holding information about an option.
Definition: confuse.h:259
DLLIMPORT void __export cfg_setstr(cfg_t *cfg, const char *name, const char *value)
Set the value of a string option given its name.
Definition: confuse.c:1336
int(* cfg_validate_callback_t)(cfg_t *cfg, cfg_opt_t *opt)
Validating callback prototype.
Definition: confuse.h:194
DLLIMPORT cfg_value_t * cfg_setopt(cfg_t *cfg, cfg_opt_t *opt, char *value)
Set an option (create an instance of an option).
Definition: confuse.c:531
integer
Definition: confuse.h:70
DLLIMPORT void __export cfg_opt_nprint_var(cfg_opt_t *opt, unsigned int index, FILE *fp)
Default value print function.
Definition: confuse.c:1399
DLLIMPORT cfg_t *__export cfg_init(cfg_opt_t *opts, cfg_flag_t flags)
Create and initialize a cfg_t structure.
Definition: confuse.c:1093
DLLIMPORT cfg_t *__export cfg_opt_gettsec(cfg_opt_t *opt, const char *title)
Returns the value of a section option, given a cfg_opt_t pointer and the title.
Definition: confuse.c:330
DLLIMPORT int __export cfg_parse_fp(cfg_t *cfg, FILE *fp)
Same as cfg_parse() above, but takes an already opened file as argument.
Definition: confuse.c:1038
Data structure holding the default value given by the initialization macros.
Definition: confuse.h:245
cfg_type_t
Fundamental option types.
Definition: confuse.h:68
DLLIMPORT unsigned int __export cfg_opt_size(cfg_opt_t *opt)
Return the number of values this option has.
Definition: confuse.c:197
pointer to user-defined value
Definition: confuse.h:76
DLLIMPORT int __export cfg_parse_boolean(const char *s)
Parse a boolean option string.
Definition: confuse.c:409
DLLIMPORT double __export cfg_getnfloat(cfg_t *cfg, const char *name, unsigned int index)
Indexed version of cfg_getfloat(), used for lists.
Definition: confuse.c:242
DLLIMPORT void __export cfg_setbool(cfg_t *cfg, const char *name, cfg_bool_t value)
Set the value of a boolean option given its name.
Definition: confuse.c:1315
DLLIMPORT void __export cfg_setint(cfg_t *cfg, const char *name, long int value)
Set the value of an integer option given its name.
Definition: confuse.c:1275
DLLIMPORT void __export cfg_opt_setnint(cfg_opt_t *opt, long int value, unsigned int index)
Set a value of an integer option.
Definition: confuse.c:1260
int line
Line number in the config file.
Definition: confuse.h:225
void(* cfg_free_func_t)(void *value)
User-defined memory release function for CFG_PTR values.
Definition: confuse.h:204
DLLIMPORT unsigned int __export cfg_size(cfg_t *cfg, const char *name)
Return the number of values this option has.
Definition: confuse.c:204
DLLIMPORT int __export cfg_parse_buf(cfg_t *cfg, const char *buf)
Same as cfg_parse() above, but takes a character buffer as argument.
Definition: confuse.c:1073
DLLIMPORT void __export cfg_opt_setnfloat(cfg_opt_t *opt, double value, unsigned int index)
Set a value of a floating point option.
Definition: confuse.c:1280
DLLIMPORT void __export cfg_free_value(cfg_opt_t *opt)
Free the memory allocated for the values of a given option.
Definition: confuse.c:1163
DLLIMPORT void __export cfg_free(cfg_t *cfg)
Free a cfg_t context.
Definition: confuse.c:1205
void(* cfg_errfunc_t)(cfg_t *cfg, const char *fmt, va_list ap)
Error reporting function.
Definition: confuse.h:210
DLLIMPORT cfg_bool_t __export cfg_getnbool(cfg_t *cfg, const char *name, unsigned int index)
Indexed version of cfg_getbool(), used for lists.
Definition: confuse.c:264
function
Definition: confuse.h:75
DLLIMPORT void __export cfg_print_indent(cfg_t *cfg, FILE *fp, int indent)
Print the options and values to a file.
Definition: confuse.c:1531
Data structure holding information about a "section".
Definition: confuse.h:216
char * name
The name of this section, the root section returned from cfg_init() is always named "root"...
Definition: confuse.h:218
DLLIMPORT cfg_t *__export cfg_opt_getnsec(cfg_opt_t *opt, unsigned int index)
Returns the value of a section option, given a cfg_opt_t pointer.
Definition: confuse.c:317
DLLIMPORT void __export cfg_setnint(cfg_t *cfg, const char *name, long int value, unsigned int index)
Set a value of an integer option given its name and index.
Definition: confuse.c:1269
DLLIMPORT cfg_bool_t __export cfg_getbool(cfg_t *cfg, const char *name)
Returns the value of a boolean option.
Definition: confuse.c:270
boolean value
Definition: confuse.h:73
DLLIMPORT cfg_bool_t __export cfg_opt_getnbool(cfg_opt_t *opt, unsigned int index)
Returns the value of a boolean option, given a cfg_opt_t pointer.
Definition: confuse.c:253
DLLIMPORT void __export cfg_setnbool(cfg_t *cfg, const char *name, cfg_bool_t value, unsigned int index)
Set a value of a boolean option given its name and index.
Definition: confuse.c:1309
DLLIMPORT signed long __export cfg_opt_getnint(cfg_opt_t *opt, unsigned int index)
Returns the value of an integer option, given a cfg_opt_t pointer.
Definition: confuse.c:209
int(* cfg_func_t)(cfg_t *cfg, cfg_opt_t *opt, int argc, const char **argv)
Function prototype used by CFGT_FUNC options.
Definition: confuse.h:132
DLLIMPORT cfg_opt_t *__export cfg_getopt(cfg_t *cfg, const char *name)
Return an option given it's name.
Definition: confuse.c:131
DLLIMPORT void __export cfg_opt_print_indent(cfg_opt_t *opt, FILE *fp, int indent)
Print an option and its value to a file.
Definition: confuse.c:1444
DLLIMPORT double __export cfg_getfloat(cfg_t *cfg, const char *name)
Returns the value of a floating point option.
Definition: confuse.c:248
DLLIMPORT cfg_print_func_t __export cfg_set_print_func(cfg_t *cfg, const char *name, cfg_print_func_t pf)
Set a print callback function for an option given its name.
Definition: confuse.c:1556
cfg_flag_t flags
Any flags passed to cfg_init()
Definition: confuse.h:217
DLLIMPORT int __export cfg_parse(cfg_t *cfg, const char *filename)
Parse a configuration file.
Definition: confuse.c:1056
DLLIMPORT void __export cfg_setnfloat(cfg_t *cfg, const char *name, double value, unsigned int index)
Set a value of a floating point option given its name and index.
Definition: confuse.c:1289
int(* cfg_callback_t)(cfg_t *cfg, cfg_opt_t *opt, const char *value, void *result)
Value parsing callback prototype.
Definition: confuse.h:178
DLLIMPORT cfg_errfunc_t __export cfg_set_error_function(cfg_t *cfg, cfg_errfunc_t errfunc)
Install a user-defined error reporting function.
Definition: confuse.c:719
DLLIMPORT char *__export cfg_opt_getnstr(cfg_opt_t *opt, unsigned int index)
Returns the value of a string option, given a cfg_opt_t pointer.
Definition: confuse.c:275
DLLIMPORT void __export cfg_setnstr(cfg_t *cfg, const char *name, const char *value, unsigned int index)
Set a value of a boolean option given its name and index.
Definition: confuse.c:1330
DLLIMPORT void __export cfg_print(cfg_t *cfg, FILE *fp)
Print the options and values to a file.
Definition: confuse.c:1539
DLLIMPORT long int __export cfg_getnint(cfg_t *cfg, const char *name, unsigned int index)
Indexed version of cfg_getint(), used for lists.
Definition: confuse.c:220
DLLIMPORT void *__export cfg_getptr(cfg_t *cfg, const char *name)
Returns the value of a user-defined option (void pointer).
Definition: confuse.c:312
DLLIMPORT cfg_validate_callback_t __export cfg_set_validate_func(cfg_t *cfg, const char *name, cfg_validate_callback_t vf)
Register a validating callback function for an option.
Definition: confuse.c:1627
DLLIMPORT cfg_t *__export cfg_getnsec(cfg_t *cfg, const char *name, unsigned int index)
Indexed version of cfg_getsec(), used for sections with the CFGF_MULTI flag set.
Definition: confuse.c:325
DLLIMPORT char *__export cfg_getnstr(cfg_t *cfg, const char *name, unsigned int index)
Indexed version of cfg_getstr(), used for lists.
Definition: confuse.c:286
string
Definition: confuse.h:72
Data structure holding the value of a fundamental option value.
Definition: confuse.h:233
section
Definition: confuse.h:74
DLLIMPORT cfg_print_func_t __export cfg_opt_set_print_func(cfg_opt_t *opt, cfg_print_func_t pf)
Set a print callback function for an option.
Definition: confuse.c:1544
DLLIMPORT long int __export cfg_getint(cfg_t *cfg, const char *name)
Returns the value of an integer option.
Definition: confuse.c:226
char * title
Optional title for this section, only set if CFGF_TITLE flag is set.
Definition: confuse.h:222
void(* cfg_print_func_t)(cfg_opt_t *opt, unsigned int index, FILE *fp)
Function prototype used by the cfg_print_ functions.
Definition: confuse.h:155
cfg_errfunc_t errfunc
This function (if set with cfg_set_error_function) is called for any error message.
Definition: confuse.h:226
DLLIMPORT cfg_t *__export cfg_gettsec(cfg_t *cfg, const char *name, const char *title)
Return a section given the title, used for section with the CFGF_TITLE flag set.
Definition: confuse.c:356
DLLIMPORT cfg_t *__export cfg_getsec(cfg_t *cfg, const char *name)
Returns the value of a section option.
Definition: confuse.c:361
DLLIMPORT const char *__export cfg_opt_name(cfg_opt_t *opt)
Return the name of an option.
Definition: confuse.c:190
DLLIMPORT char *__export cfg_getstr(cfg_t *cfg, const char *name)
Returns the value of a string option.
Definition: confuse.c:291
DLLIMPORT void __export cfg_setfloat(cfg_t *cfg, const char *name, double value)
Set the value of a floating point option given its name.
Definition: confuse.c:1295
DLLIMPORT void __export cfg_opt_setnstr(cfg_opt_t *opt, const char *value, unsigned int index)
Set a value of a string option.
Definition: confuse.c:1320
DLLIMPORT void __export cfg_opt_print(cfg_opt_t *opt, FILE *fp)
Print an option and its value to a file.
Definition: confuse.c:1526
char * filename
Name of the file being parsed.
Definition: confuse.h:224
DLLIMPORT void __export cfg_addlist(cfg_t *cfg, const char *name, unsigned int nvalues,...)
Add values for a list option.
Definition: confuse.c:1386
DLLIMPORT void __export cfg_setlist(cfg_t *cfg, const char *name, unsigned int nvalues,...)
Set values for a list option.
Definition: confuse.c:1372
DLLIMPORT const char *__export cfg_title(cfg_t *cfg)
Return the title of a section.
Definition: confuse.c:176
DLLIMPORT const char *__export cfg_name(cfg_t *cfg)
Return the name of a section.
Definition: confuse.c:183
DLLIMPORT int __export cfg_include(cfg_t *cfg, cfg_opt_t *opt, int argc, const char **argv)
Predefined include-function.
Definition: confuse.c:1224
DLLIMPORT void __export cfg_error(cfg_t *cfg, const char *fmt,...)
Show a parser error.
Definition: confuse.c:730
DLLIMPORT char *__export cfg_tilde_expand(const char *filename)
Does tilde expansion (~ -> $HOME) on the filename.
Definition: confuse.c:1118
cfg_opt_t * opts
Array of options.
Definition: confuse.h:221