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 |