100#define econf_setValue(kf, group, key, value) (( \
102 int: econf_setIntValue, \
103 long: econf_setInt64Value, \
104 unsigned int: econf_setUIntValue, \
105 unsigned long: econf_setUInt64Value, \
106 float: econf_setFloatValue, \
107 double: econf_setDoubleValue, \
108 char*: econf_setStringValue, void*: econf_setStringValue)) \
109(kf, group, key, value))
117#define econf_free(value) (( \
119 econf_file*: econf_freeFile , \
120 char**: econf_freeArray)) \
154 const char *delim,
const char *comment);
196 const char *delim,
const char *comment,
197 bool (*callback)(
const char *filename,
const void *data),
198 const void *callback_data);
264 const char *usr_conf_dir,
265 const char *etc_conf_dir,
266 const char *project_name,
267 const char *config_suffix,
269 const char *comment);
318 const char *usr_conf_dir,
319 const char *etc_conf_dir,
320 const char *project_name,
321 const char *config_suffix,
324 bool (*callback)(
const char *filename,
const void *data),
325 const void *callback_data);
347 const char *usr_conf_dir,
348 const char *etc_conf_dir,
349 const char *project_name,
350 const char *config_suffix,
352 const char *comment);
379 const char *usr_conf_dir,
380 const char *etc_conf_dir,
381 const char *project_name,
382 const char *config_suffix,
385 bool (*callback)(
const char *filename,
const void *data),
386 const void *callback_data);
460 const char *file_name);
826extern void __attribute__ ((deprecated(
"use one of econf_read*WithCallback instead")))
827econf_requireOwner(uid_t owner);
838extern
void __attribute__ ((deprecated("use one of econf_read*WithCallback instead")))
839econf_requireGroup(gid_t group);
851extern
void __attribute__ ((deprecated("use one of econf_read*WithCallback instead")))
852econf_requirePermissions(mode_t file_perms, mode_t
dir_perms);
863extern
void __attribute__ ((deprecated("use one of econf_read*WithCallback instead")))
864econf_followSymlinks(
bool allow);
874extern
void __attribute__ ((deprecated("use one of econf_read*WithCallback instead")))
875econf_reset_security_settings(
void);
econf_err econf_newIniFile(econf_file **result)
Create a new econf_file object in IniFile format.
struct econf_file econf_file
econf_err econf_setUInt64Value(econf_file *kf, const char *group, const char *key, uint64_t value)
Set uint64 value for given group/key.
econf_err econf_getBoolValueDef(econf_file *kf, const char *group, const char *key, bool *result, bool def)
Evaluating bool value for given group/key.
const char * econf_errString(const econf_err error)
Convert an econf_err type to a string.
econf_err econf_setDoubleValue(econf_file *kf, const char *group, const char *key, double value)
Set double value for given group/key.
void econf_set_comment_tag(econf_file *key_file, const char comment)
Set the comment character tag of the given econf_file object.
econf_err econf_mergeFiles(econf_file **merged_file, econf_file *usr_file, econf_file *etc_file)
Merge the contents of two key_files objects.
char econf_delimiter_tag(econf_file *key_file)
Returns the delimiter character of the given econf_file object.
econf_err econf_setInt64Value(econf_file *kf, const char *group, const char *key, int64_t value)
Set int64 value for given group/key.
econf_err econf_getStringValueDef(econf_file *kf, const char *group, const char *key, char **result, char *def)
Evaluating string value for given group/key.
econf_err
libeconf error codes
@ ECONF_FILE_LIST_IS_NULL
Parsed file list is NULL.
@ ECONF_NOMEM
Out of memory.
@ ECONF_NOGROUP
Group not found.
@ ECONF_WRONG_BOOLEAN_VALUE
Wrong boolean value (1/0 true/false yes/no)
@ ECONF_TEXT_AFTER_SECTION
Text after section.
@ ECONF_PARSING_CALLBACK_FAILED
User defined parsing callback has failed.
@ ECONF_PARSE_ERROR
General syntax error in input file.
@ ECONF_WRONG_FILE_PERMISSION
File has wrong file permissions.
@ ECONF_EMPTY_SECTION_NAME
Empty section name.
@ ECONF_WRITEERROR
Error creating or writing to a file.
@ ECONF_KEY_HAS_NULL_VALUE
Given key has NULL value.
@ ECONF_MISSING_BRACKET
Missing closing section bracket.
@ ECONF_ERROR_FILE_IS_SYM_LINK
File is a sym link which is not permitted.
@ ECONF_WRONG_GROUP
File has wrong group.
@ ECONF_WRONG_DIR_PERMISSION
File has wrong dir permission.
@ ECONF_NOKEY
Key not found.
@ ECONF_MISSING_DELIMITER
Missing delimiter.
@ ECONF_NOFILE
Config file not found.
@ ECONF_WRONG_OWNER
File has wrong owner.
@ ECONF_ERROR
Generic Error.
@ ECONF_EMPTYKEY
Key is NULL or has empty value.
@ ECONF_SUCCESS
General purpose success code.
econf_err econf_setBoolValue(econf_file *kf, const char *group, const char *key, const char *value)
Set bool value for given group/key.
econf_err econf_getUInt64Value(econf_file *kf, const char *group, const char *key, uint64_t *result)
Evaluating uint64 value for given group/key.
econf_err econf_setUIntValue(econf_file *kf, const char *group, const char *key, uint32_t value)
Set uint32 value for given group/key.
econf_err econf_readDirsHistoryWithCallback(econf_file ***key_files, size_t *size, const char *usr_conf_dir, const char *etc_conf_dir, const char *project_name, const char *config_suffix, const char *delim, const char *comment, bool(*callback)(const char *filename, const void *data), const void *callback_data)
Evaluating key/values for every given configuration files in two different directories (normally in /...
econf_err econf_readDirsHistory(econf_file ***key_files, size_t *size, const char *usr_conf_dir, const char *etc_conf_dir, const char *project_name, const char *config_suffix, const char *delim, const char *comment)
Evaluating key/values for every given configuration files in two different directories (normally in /...
econf_err econf_getFloatValue(econf_file *kf, const char *group, const char *key, float *result)
Evaluating float value for given group/key.
char econf_comment_tag(econf_file *key_file)
Returns the comment character tag of the given econf_file object.
econf_err econf_writeFile(econf_file *key_file, const char *save_to_dir, const char *file_name)
Write content of a econf_file struct to specified location.
econf_err econf_readFileWithCallback(econf_file **result, const char *file_name, const char *delim, const char *comment, bool(*callback)(const char *filename, const void *data), const void *callback_data)
Process the file of the given file_name and save its contents into key_file object.
void __attribute__((deprecated("use one of econf_read*WithCallback instead"))) econf_requireOwner(uid_t owner)
All parsed files require this user permission.
econf_err econf_getBoolValue(econf_file *kf, const char *group, const char *key, bool *result)
Evaluating bool value for given group/key.
econf_err econf_readDirs(econf_file **key_file, const char *usr_conf_dir, const char *etc_conf_dir, const char *project_name, const char *config_suffix, const char *delim, const char *comment)
Evaluating key/values of a given configuration by reading and merging all needed/available files in t...
econf_err econf_setStringValue(econf_file *kf, const char *group, const char *key, const char *value)
Set string value for given group/key.
econf_err econf_getInt64Value(econf_file *kf, const char *group, const char *key, int64_t *result)
Evaluating int64 value for given group/key.
econf_err econf_getUInt64ValueDef(econf_file *kf, const char *group, const char *key, uint64_t *result, uint64_t def)
Evaluating uint64 value for given group/key.
econf_err econf_setFloatValue(econf_file *kf, const char *group, const char *key, float value)
Set float value for given group/key.
econf_err econf_newKeyFile(econf_file **result, char delimiter, char comment)
Create a new econf_file object.
econf_err econf_getDoubleValueDef(econf_file *kf, const char *group, const char *key, double *result, double def)
Evaluating double value for given group/key.
econf_err econf_setIntValue(econf_file *kf, const char *group, const char *key, int32_t value)
Set int32 value for given group/key.
econf_err econf_readFile(econf_file **result, const char *file_name, const char *delim, const char *comment)
Process the file of the given file_name and save its contents into key_file object.
void econf_set_delimiter_tag(econf_file *key_file, const char delimiter)
Set the delimiter character of the given econf_file object.
econf_err econf_readDirsWithCallback(econf_file **key_file, const char *usr_conf_dir, const char *etc_conf_dir, const char *project_name, const char *config_suffix, const char *delim, const char *comment, bool(*callback)(const char *filename, const void *data), const void *callback_data)
Evaluating key/values for every given configuration files in two different directories (normally in /...
econf_err econf_getGroups(econf_file *kf, size_t *length, char ***groups)
Evaluating all group entries.
econf_err econf_getUIntValueDef(econf_file *kf, const char *group, const char *key, uint32_t *result, uint32_t def)
Evaluating uint32 value for given group/key.
econf_err econf_getFloatValueDef(econf_file *kf, const char *group, const char *key, float *result, float def)
Evaluating float value for given group/key.
econf_err econf_getStringValue(econf_file *kf, const char *group, const char *key, char **result)
Evaluating string value for given group/key.
econf_err econf_getIntValue(econf_file *kf, const char *group, const char *key, int32_t *result)
Evaluating int32 value for given group/key.
econf_err econf_getDoubleValue(econf_file *kf, const char *group, const char *key, double *result)
Evaluating double value for given group/key.
void econf_freeArray(char **array)
Free an array of type char** created by econf_getGroups() or econf_getKeys().
void econf_errLocation(char **filename, uint64_t *line_nr)
Info about where the error has happened.
econf_err econf_getInt64ValueDef(econf_file *kf, const char *group, const char *key, int64_t *result, int64_t def)
Evaluating int64 value for given group/key.
char * econf_getPath(econf_file *kf)
Evaluating path name.
void econf_freeFile(econf_file *key_file)
Free memory allocated by e.g.
econf_err econf_getIntValueDef(econf_file *kf, const char *group, const char *key, int32_t *result, int32_t def)
Evaluating int32 value for given group/key.
econf_err econf_getUIntValue(econf_file *kf, const char *group, const char *key, uint32_t *result)
Evaluating uint32 value for given group/key.
econf_err econf_getKeys(econf_file *kf, const char *group, size_t *length, char ***keys)
Evaluating all keys.