|
libeconf
0.4.0
|
Public API for the econf library. More...
#include <stdbool.h>#include <stdint.h>#include <stdlib.h>Go to the source code of this file.
Macros | |
| #define | econf_setValue(kf, group, key, value) |
| Generic macro calls setter function depending on value type. More... | |
| #define | econf_free(value) |
| Generic macro to free memory allocated by econf_ functions. More... | |
Typedefs | |
| typedef enum econf_err | econf_err |
| typedef struct econf_file | econf_file |
Enumerations | |
| enum | econf_err { ECONF_SUCCESS = 0, ECONF_ERROR = 1, ECONF_NOMEM = 2, ECONF_NOFILE = 3, ECONF_NOGROUP = 4, ECONF_NOKEY = 5, ECONF_EMPTYKEY = 6, ECONF_WRITEERROR = 7, ECONF_PARSE_ERROR = 8, ECONF_MISSING_BRACKET = 9, ECONF_MISSING_DELIMITER = 10, ECONF_EMPTY_SECTION_NAME = 11, ECONF_TEXT_AFTER_SECTION = 12 } |
| libeconf error codes More... | |
Functions | |
| 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. More... | |
| econf_err | econf_mergeFiles (econf_file **merged_file, econf_file *usr_file, econf_file *etc_file) |
| Merge the contents of two key_files objects. More... | |
| 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 two different directories (normally in /usr/etc and /etc). More... | |
| 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 /usr/etc and /etc). More... | |
| econf_err | econf_newKeyFile (econf_file **result, char delimiter, char comment) |
| Create a new econf_file object. More... | |
| econf_err | econf_newIniFile (econf_file **result) |
| Create a new econf_file object in IniFile format. More... | |
| 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. More... | |
| char * | econf_getPath (econf_file *kf) |
| Evaluating path name. More... | |
| econf_err | econf_getGroups (econf_file *kf, size_t *length, char ***groups) |
| Evaluating all group entries. More... | |
| econf_err | econf_getKeys (econf_file *kf, const char *group, size_t *length, char ***keys) |
| Evaluating all keys. More... | |
| econf_err | econf_getIntValue (econf_file *kf, const char *group, const char *key, int32_t *result) |
| Evaluating int32 value for given group/key. More... | |
| econf_err | econf_getInt64Value (econf_file *kf, const char *group, const char *key, int64_t *result) |
| Evaluating int64 value for given group/key. More... | |
| econf_err | econf_getUIntValue (econf_file *kf, const char *group, const char *key, uint32_t *result) |
| Evaluating uint32 value for given group/key. More... | |
| econf_err | econf_getUInt64Value (econf_file *kf, const char *group, const char *key, uint64_t *result) |
| Evaluating uint64 value for given group/key. More... | |
| econf_err | econf_getFloatValue (econf_file *kf, const char *group, const char *key, float *result) |
| Evaluating float value for given group/key. More... | |
| econf_err | econf_getDoubleValue (econf_file *kf, const char *group, const char *key, double *result) |
| Evaluating double value for given group/key. More... | |
| econf_err | econf_getStringValue (econf_file *kf, const char *group, const char *key, char **result) |
| Evaluating string value for given group/key. More... | |
| econf_err | econf_getBoolValue (econf_file *kf, const char *group, const char *key, bool *result) |
| Evaluating bool value for given group/key. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| 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. More... | |
| econf_err | econf_getFloatValueDef (econf_file *kf, const char *group, const char *key, float *result, float def) |
| Evaluating float value for given group/key. More... | |
| econf_err | econf_getDoubleValueDef (econf_file *kf, const char *group, const char *key, double *result, double def) |
| Evaluating double value for given group/key. More... | |
| econf_err | econf_getStringValueDef (econf_file *kf, const char *group, const char *key, char **result, char *def) |
| Evaluating string value for given group/key. More... | |
| econf_err | econf_getBoolValueDef (econf_file *kf, const char *group, const char *key, bool *result, bool def) |
| Evaluating bool value for given group/key. More... | |
| econf_err | econf_setIntValue (econf_file *kf, const char *group, const char *key, int32_t value) |
| Set int32 value for given group/key. More... | |
| econf_err | econf_setInt64Value (econf_file *kf, const char *group, const char *key, int64_t value) |
| Set int64 value for given group/key. More... | |
| econf_err | econf_setUIntValue (econf_file *kf, const char *group, const char *key, uint32_t value) |
| Set uint32 value for given group/key. More... | |
| econf_err | econf_setUInt64Value (econf_file *kf, const char *group, const char *key, uint64_t value) |
| Set uint64 value for given group/key. More... | |
| econf_err | econf_setFloatValue (econf_file *kf, const char *group, const char *key, float value) |
| Set float value for given group/key. More... | |
| econf_err | econf_setDoubleValue (econf_file *kf, const char *group, const char *key, double value) |
| Set double value for given group/key. More... | |
| econf_err | econf_setStringValue (econf_file *kf, const char *group, const char *key, const char *value) |
| Set string value for given group/key. More... | |
| econf_err | econf_setBoolValue (econf_file *kf, const char *group, const char *key, const char *value) |
| Set bool value for given group/key. More... | |
| const char * | econf_errString (const econf_err error) |
| Convert an econf_err type to a string. More... | |
| void | econf_errLocation (char **filename, uint64_t *line_nr) |
| Info about where the error has happened. More... | |
| void | econf_freeArray (char **array) |
| Free an array of type char** created by econf_getGroups() or econf_getKeys(). More... | |
| void | econf_freeFile (econf_file *key_file) |
| Free memory allocated by e.g. More... | |
Public API for the econf library.
Definition in file libeconf.h.
| #define econf_setValue | ( | kf, | |
| group, | |||
| key, | |||
| value | |||
| ) |
Generic macro calls setter function depending on value type.
Use: econf_setValue(econf_file *key_file, char *group, char *key, generic value);
Replace generic with one of the supported value types. Supported Types: int, long, unsigned int, unsigned long, float, double, string (as *char). Note: Does not detect "yes", "no", 1 and 0 as boolean type. If you want to set a bool value use "true" or "false" or use setBoolValue() directly.
Definition at line 81 of file libeconf.h.
| #define econf_free | ( | value | ) |
Generic macro to free memory allocated by econf_ functions.
Use: econf_free(generic value);
Replace generic with one of the supported value types. Supported Types: char** and econf_file*.
Definition at line 98 of file libeconf.h.
Definition at line 69 of file libeconf.h.
| typedef struct econf_file econf_file |
Definition at line 104 of file libeconf.h.
| enum econf_err |
libeconf error codes
Definition at line 40 of file libeconf.h.
| 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.
| result | content of parsed file |
| file_name | absolute path of parsed file |
| delim | delimiters of key/value e.g. "\t =" |
| comment | array of characters which define the start of a comment |
Usage:
Default behaviour if entries have the same name in one file: The first hit will be returned. Further entries will be ignored. This can be changed by setting the environment variable ECONF_JOIN_SAME_ENTRIES. In that case entries with the same name will be joined to one single entry.
| econf_err econf_mergeFiles | ( | econf_file ** | merged_file, |
| econf_file * | usr_file, | ||
| econf_file * | etc_file | ||
| ) |
Merge the contents of two key_files objects.
Entries in etc_file will be prefered.
| merged_file | merged data |
| usr_file | First data block which has to be merged. |
| etc_file | Second data block which has to be merged. |
Usage:
| 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 two different directories (normally in /usr/etc and /etc).
| key_file | content of parsed file(s) |
| usr_conf_dir | absolute path of the first directory (normally "/usr/etc") |
| etc_conf_dir | absolute path of the second directory (normally "/etc") |
| project_name | basename of the configuration file |
| config_suffix | suffix of the configuration file. Can also be NULL. |
| delim | delimiters of key/value e.g. "\t =" |
| comment | array of characters which define the start of a comment |
Example: Reading content of example.conf in /usr/etc and /etc directory.
| 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 /usr/etc and /etc).
Returns a list of read configuration files and their values.
| key_files | list of parsed file(s). Each entry includes all key/value, path, comments,... information of the regarding file. |
| size | Size of the evaluated key_files list. |
| usr_conf_dir | absolute path of the first directory (normally "/usr/etc") |
| etc_conf_dir | absolute path of the second directory (normally "/etc") |
| project_name | basename of the configuration file |
| config_suffix | suffix of the configuration file. Can also be NULL. |
| delim | delimiters of key/value e.g. "\t =" |
| comment | array of characters which define the start of a comment |
| econf_err econf_newKeyFile | ( | econf_file ** | result, |
| char | delimiter, | ||
| char | comment | ||
| ) |
Create a new econf_file object.
| result | Pointer to the allocated econf_file object. |
| delimiter | delimiter of key/value e.g. "=" |
| comment | Character which defines the start of a comment. |
Default behaviour if entries have the same name in one file: The first hit will be returned. Further entries will be ignored. This can be changed by setting the environment variable ECONF_JOIN_SAME_ENTRIES. In that case entries with the same name will be joined to one single entry.
| econf_err econf_newIniFile | ( | econf_file ** | result | ) |
Create a new econf_file object in IniFile format.
So the delimiter will be "=" and comments are beginning with "#".
| result | Pointer to the allocated 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.
| key_file | Data which has to be written. |
| save_to_dir | Directory into which the file has to be written. |
| file_name | filename (with suffix) |
| char* econf_getPath | ( | econf_file * | kf | ) |
Evaluating path name.
| kf | given/parsed data |
| econf_err econf_getGroups | ( | econf_file * | kf, |
| size_t * | length, | ||
| char *** | groups | ||
| ) |
Evaluating all group entries.
| kf | given/parsed data |
| length | Length of the returned group array. |
| groups | String array of evaluated groups. |
| econf_err econf_getKeys | ( | econf_file * | kf, |
| const char * | group, | ||
| size_t * | length, | ||
| char *** | keys | ||
| ) |
Evaluating all keys.
| kf | given/parsed data |
| group | Group name for which the keys have to be evaluated or NULL for all keys. |
| length | Length of the returned key array. |
| keys | String array of evaluated keys. |
| econf_err econf_getIntValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| int32_t * | result | ||
| ) |
Evaluating int32 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getInt64Value | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| int64_t * | result | ||
| ) |
Evaluating int64 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getUIntValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| uint32_t * | result | ||
| ) |
Evaluating uint32 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getUInt64Value | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| uint64_t * | result | ||
| ) |
Evaluating uint64 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getFloatValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| float * | result | ||
| ) |
Evaluating float value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getDoubleValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| double * | result | ||
| ) |
Evaluating double value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| econf_err econf_getStringValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| char ** | result | ||
| ) |
Evaluating string value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | A newly allocated string or NULL in error case. |
| econf_err econf_getBoolValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| bool * | result | ||
| ) |
Evaluating bool value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| 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.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| 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.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| 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.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| 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.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| econf_err econf_getFloatValueDef | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| float * | result, | ||
| float | def | ||
| ) |
Evaluating float value for given group/key.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| econf_err econf_getDoubleValueDef | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| double * | result, | ||
| double | def | ||
| ) |
Evaluating double value for given group/key.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| econf_err econf_getStringValueDef | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| char ** | result, | ||
| char * | def | ||
| ) |
Evaluating string value for given group/key.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | Returns a newly allocated string, even if "default" is returned. |
| def | Default value if the value has not been found. |
| econf_err econf_getBoolValueDef | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| bool * | result, | ||
| bool | def | ||
| ) |
Evaluating bool value for given group/key.
If key is not found, the default value is returned and error is ECONF_NOKEY.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value is requested. |
| result | determined value |
| def | Default value if the value has not been found. |
| econf_err econf_setIntValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| int32_t | value | ||
| ) |
Set int32 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setInt64Value | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| int64_t | value | ||
| ) |
Set int64 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setUIntValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| uint32_t | value | ||
| ) |
Set uint32 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setUInt64Value | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| uint64_t | value | ||
| ) |
Set uint64 value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setFloatValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| float | value | ||
| ) |
Set float value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setDoubleValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| double | value | ||
| ) |
Set double value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setStringValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| const char * | value | ||
| ) |
Set string value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| econf_err econf_setBoolValue | ( | econf_file * | kf, |
| const char * | group, | ||
| const char * | key, | ||
| const char * | value | ||
| ) |
Set bool value for given group/key.
| kf | given/parsed data |
| group | Desired group or NULL if there is no group defined. |
| key | Key for which the value has to be set. |
| value | Value which has to be set. |
| const char* econf_errString | ( | const econf_err | error | ) |
Convert an econf_err type to a string.
| error | error enum |
| void econf_errLocation | ( | char ** | filename, |
| uint64_t * | line_nr | ||
| ) |
Info about where the error has happened.
| filename | Path of the last scanned file. |
| line_nr | Number of the last handled line. |
| void econf_freeArray | ( | char ** | array | ) |
Free an array of type char** created by econf_getGroups() or econf_getKeys().
| array | array of strings |
| void econf_freeFile | ( | econf_file * | key_file | ) |
Free memory allocated by e.g.
econf_readFile(), econf_readDirs(),...
| key_file | allocated data |