36 #define CFG_END_OPTION { NULL, '\0', NULL, CFG_END, NULL, 0 }
37 #define CFG_END_OF_LIST CFG_END_OPTION
61 CFG_ERROR_NOTALLOWEDARG = -2,
65 CFG_ERROR_BADOPT = -3,
69 CFG_ERROR_BADQUOTE = -4,
73 CFG_ERROR_BADNUMBER = -5,
77 CFG_ERROR_OVERFLOW = -6,
89 CFG_ERR_STOP_STR_FOUND = -9,
90 CFG_ERROR_STOP_STR = -9,
91 CFG_ERROR_STOP_STR_FOUND = -9,
95 CFG_ERROR_NOEQUAL = -10,
99 CFG_ERROR_UNKNOWN = -11,
103 CFG_ERROR_FILE_NOT_FOUND = -12,
107 CFG_ERROR_SEEK_ERROR = -13,
111 CFG_ERROR_INTERNAL = -20
195 CFG_UNSIGNED_INT = 3,
202 CFG_UNSIGNED_LONG = 5,
227 CFG_MULTI_ARRAY = 32,
228 CFG_MULTI_SEPARATED = 32 + 64,
235 CFG_LAST_ARGUMENTS = 128,
236 CFG_LEFTOVER_ARGS = 128,
237 CFG_LEFTOVER_ARGUMENTS = 128
348 #define CFG_EOT CFG_N_PROPS
349 #define CFG_END_TYPE CFG_N_PROPS
542 #define cfg_get_cmdline_context_pos(begin_pos, end_pos, argv, options) \
543 cfg_get_cmdline_context( \
545 end_pos - begin_pos + 1, \
578 #define cfg_get_cfgfile_context_pos(begin_pos, end_pos, argv, options) \
579 cfg_get_cfgfile_context( \
581 end_pos - begin_pos + 1, \
596 const CFG_CONTEXT con,
601 #define cfg_set_cmdline_context_pos(con, begin_pos, end_pos, argv) \
602 cfg_get_cmdline_context( \
605 end_pos - begin_pos + 1, \
617 const CFG_CONTEXT con,
632 const CFG_CONTEXT con,
637 #define cfg_set_cfgfile_context_pos(con, begin_pos, end_pos, argv) \
638 cfg_get_cfgfile_context( \
641 end_pos - begin_pos + 1, \
694 #define cfg_is_context_flag(con, flag) cfg_get_context_flag(con, flag)
int parsing_started
Flag to detect if parsing already started.
Definition: cfg+.h:478
Config file quote prefix & postfix.
Definition: cfg+.h:307
cfg_context_type
Context type.
Definition: cfg+.h:362
Line type position usage in file.
Definition: cfg+.h:156
Float.
Definition: cfg+.h:205
void cfg_set_cfgfile_context(const CFG_CONTEXT con, long begin_pos, long size, char *filename)
Set context to configuration file.
enum cfg_option_type type
Option type.
Definition: cfg+.h:415
Data type mask (used internally)
Definition: cfg+.h:218
long size
Number of elements (array arguments, bytes or lines) to parse (value of -1 means infinite) ...
Definition: cfg+.h:448
Array of strings which forces to stop command line parsing.
Definition: cfg+.h:308
File not found error.
Definition: cfg+.h:102
Config file context type.
Definition: cfg+.h:372
Strict leftover arguments initialization in file.
Definition: cfg+.h:150
Config file multi values separator.
Definition: cfg+.h:299
Array of strings prefixes which forces to stop config file parsing.
Definition: cfg+.h:283
Unsigned int.
Definition: cfg+.h:193
Integer.
Definition: cfg+.h:189
const struct cfg_option * options
Options table.
Definition: cfg+.h:441
Error in quotations.
Definition: cfg+.h:68
Command line quote prefix & postfix.
Definition: cfg+.h:278
int cfg_get_context_flags(const CFG_CONTEXT con)
Get all context flags.
An unknown option.
Definition: cfg+.h:98
Normal leftover arguments initialization in file.
Definition: cfg+.h:146
int cfg_add_properties_type(const CFG_CONTEXT con, enum cfg_property_type type, char *str,...)
Add multiple strings to one property.
void cfg_set_cmdline_context_argc(const CFG_CONTEXT con, int argc, char **argv)
Set context to command line by argc and argv passed to main()
int cfg_parse(const CFG_CONTEXT con)
Parse context.
FILE * fhandle
Pointer to FILE* structure of parsed file.
Definition: cfg+.h:494
Seek error (fseek() failure).
Definition: cfg+.h:106
const char * cfgfile_name
Config file name (may be NULL)
Definition: cfg+.h:411
CFG_CONTEXT cfg_get_cmdline_context_argc(int argc, char **argv, struct cfg_option *options)
Initialize command line context by argc and argv passed to main()
long cur_idx
Currents.
Definition: cfg+.h:460
File quote prefix & postfix.
Definition: cfg+.h:329
int * used_opt_idx
Array of used options indexes.
Definition: cfg+.h:451
An argument is missing for an option.
Definition: cfg+.h:56
Multiple arguments used for single option.
Definition: cfg+.h:80
int cfg_remove_property(const CFG_CONTEXT con, enum cfg_property_type type, char *str)
Remove string from property.
int cfg_remove_properties_str(const CFG_CONTEXT con, char *str, enum cfg_property_type type,...)
Remove string from multiple properties.
char ** argv
NULL terminated array of argument.
Definition: cfg+.h:481
int cfg_add_properties_str(const CFG_CONTEXT con, char *str, enum cfg_property_type type,...)
Add string to multiple properties.
Command line multi values leftover arguments separator.
Definition: cfg+.h:274
Structure for defining one config option.
Definition: cfg+.h:405
char ** prop[CFG_N_PROPS]
Special properties.
Definition: cfg+.h:457
Single, multi or multi separated.
Definition: cfg+.h:225
String.
Definition: cfg+.h:211
int cfg_clear_properties(const CFG_CONTEXT con, enum cfg_property_type type,...)
Clear all strings of property.
const char * cmdline_long_name
Command line long name (may be NULL)
Definition: cfg+.h:407
cfg_line_option_type
Command line option type.
Definition: cfg+.h:381
OK, all is right.
Definition: cfg+.h:50
int val
Return value (set to 0 for not return)
Definition: cfg+.h:421
File quote prefix & postfix.
Definition: cfg+.h:328
Special properties count.
Definition: cfg+.h:317
Array of strings which forces to stop command line parsing.
Definition: cfg+.h:254
Array of string prefixes which mark comment line.
Definition: cfg+.h:287
File quote prefix & postfix.
Definition: cfg+.h:334
Posixly correct leftover arguments.
Definition: cfg+.h:139
Ignore multiple arguments for single option.
Definition: cfg+.h:127
Command line context type.
Definition: cfg+.h:368
File quote prefix & postfix.
Definition: cfg+.h:326
char * cfg_get_error_str(const CFG_CONTEXT con)
Get error string; error string is dynamically allocated, it needs to be freed after use...
Array of strings which forces to stop command line parsing.
Definition: cfg+.h:279
Command line long option prefix.
Definition: cfg+.h:262
enum cfg_context_type type
Context type (command line or config file)
Definition: cfg+.h:435
Double.
Definition: cfg+.h:208
CFG_CONTEXT cfg_get_cfgfile_context(long begin_pos, long size, char *filename, struct cfg_option *options)
Initialize configuration file context.
Command line option argument separator.
Definition: cfg+.h:266
int cfg_get_next_opt(const CFG_CONTEXT con)
Parse next option(s) and return its value (if non-zero) or error code.
File quote prefix & postfix.
Definition: cfg+.h:337
Byte type position usage in file.
Definition: cfg+.h:153
CFG_CONTEXT cfg_get_context(struct cfg_option *options)
Initialize core context.
long cur_idx_tmp
Context type (command line or config file)
Definition: cfg+.h:461
Short command line options.
Definition: cfg+.h:393
Command line multi values leftover arguments separator.
Definition: cfg+.h:303
int cfg_add_properties(const CFG_CONTEXT con, enum cfg_property_type type, char *str,...)
Add multiple strings to particular properties.
int cfg_get_cur_idx(const CFG_CONTEXT con)
Return currently processed option index (argv index in command line context, file byte position or li...
Long.
Definition: cfg+.h:198
Short command line option.
Definition: cfg+.h:387
Not enough memory.
Definition: cfg+.h:84
An argument is not allowed for an option.
Definition: cfg+.h:60
OK, all is right.
Definition: cfg+.h:51
Option argument separator.
Definition: cfg+.h:340
void * value
Pointer where to store value of option.
Definition: cfg+.h:418
struct cfg_context * CFG_CONTEXT
Context data type.
Definition: cfg+.h:502
File quote prefix & postfix.
Definition: cfg+.h:327
char * cfg_get_cur_opt(const CFG_CONTEXT con)
Return currently processed option name.
Unsigned long.
Definition: cfg+.h:201
Long command line option argument initialized without separator (default)
Definition: cfg+.h:399
void cfg_reset_context(const CFG_CONTEXT con)
Reinitialize popt context.
File quote prefix & postfix.
Definition: cfg+.h:335
Internal error.
Definition: cfg+.h:110
int cfg_remove_properties(const CFG_CONTEXT con, enum cfg_property_type type, char *str,...)
Remove multiple strings from particular properties.
long begin_pos
Starting parsing position.
Definition: cfg+.h:444
int cfg_remove_properties_type(const CFG_CONTEXT con, enum cfg_property_type type, char *str,...)
Remove multiple strings from one property.
File quote prefix & postfix.
Definition: cfg+.h:336
Not long and not short option.
Definition: cfg+.h:384
cfg_property_type
Terminators of variable number arguments in functions cfg_add_properties(), cfg_set_properties(), cfg_get_properties() and similar.
Definition: cfg+.h:245
void cfg_clear_context_flag(const CFG_CONTEXT con, int flag)
Clear context flag.
File quote prefix & postfix.
Definition: cfg+.h:330
Boolean.
Definition: cfg+.h:185
char * cur_arg
Current option argument.
Definition: cfg+.h:468
Ignore unknown options.
Definition: cfg+.h:130
Stop string was found.
Definition: cfg+.h:88
int cfg_clear_property(const CFG_CONTEXT con, enum cfg_property_type type)
Clear all strings of property.
An option's argument could not be parsed.
Definition: cfg+.h:64
Config file option argument separator.
Definition: cfg+.h:295
void cfg_set_context_flag(const CFG_CONTEXT con, int flag)
Set context flag.
Skip processing of the first argument on command line.
Definition: cfg+.h:136
cfg_flag
By default are CFG_PROCESS_FIRST, CFG_POSIXLY_LEFTOVERS and CFG_NORMAL_LEFTOVERS initialized.
Definition: cfg+.h:124
cfg_option_type
Possible types of options.
Definition: cfg+.h:182
A given number was too big or too small.
Definition: cfg+.h:76
char * cur_opt
Current option string.
Definition: cfg+.h:465
void cfg_print_error(const CFG_CONTEXT con)
Print error string to stderr.
CFG_CONTEXT cfg_get_cmdline_context(long begin_pos, long size, char **argv, struct cfg_option *options)
Initialize command line context.
int cfg_get_context_flag(const CFG_CONTEXT con, int flag)
Get context flag.
Advanced leftover arguments.
Definition: cfg+.h:142
enum cfg_error error_code
Error code of last occured error.
Definition: cfg+.h:454
char * filename
Filename (name of file)
Definition: cfg+.h:491
An option could not be converted to appropriate numeric type.
Definition: cfg+.h:72
Leftover arguments specification.
Definition: cfg+.h:234
No equal sign on the line.
Definition: cfg+.h:94
Main structure for defining context.
Definition: cfg+.h:427
Long command line option.
Definition: cfg+.h:390
Array of string postfixes to determine multi lines.
Definition: cfg+.h:291
Multi values separator.
Definition: cfg+.h:333
Command line multi values separator.
Definition: cfg+.h:270
void cfg_set_cmdline_context(const CFG_CONTEXT con, long begin_pos, long size, char **argv)
Set context to command line.
void cfg_set_context_flags(const CFG_CONTEXT con, int flags)
Overwrite context flags.
int flags
Flags.
Definition: cfg+.h:438
const char cmdline_short_name
Command line short name (may be '\0')
Definition: cfg+.h:409
Process also the first argument on command line.
Definition: cfg+.h:133
char * cfg_get_static_error_str(const int errorcode)
Get static error string.
OK, all is right.
Definition: cfg+.h:52
int cur_opt_type
Context type (command line or config file)
Definition: cfg+.h:462
char * cfg_get_cur_arg(const CFG_CONTEXT con)
Return currently processed option argument.
int cfg_add_property(const CFG_CONTEXT con, enum cfg_property_type type, char *str)
Add string to property.
cfg_error
Possible return values returned by parsing functions.
Definition: cfg+.h:46
void cfg_fprint_error(const CFG_CONTEXT con, FILE *fh)
Print error string to stream.
End (to mark last item in list)
Definition: cfg+.h:215
void cfg_free_context(const CFG_CONTEXT con)
Destroy context.
Command line short option prefix.
Definition: cfg+.h:258
Long command line option argument initialized with separator.
Definition: cfg+.h:396
No context.
Definition: cfg+.h:365