- Tumbleweed 0.8.0-1.1
 - Leap-16.0
 
| libeconf(3) | libeconf | libeconf(3) | 
NAME¶
include/libeconf.h - Public API for the econf library.
  
  include/libeconf_ext.h - Public extended API for the econf library.
DESCRIPTION¶
libeconf is a highly flexible and configurable library to
    parse and manage key=value configuration files.
  
  It reads configuration file snippets from different directories and builds the
    final configuration file for the application from it.
The first file is the vendor provided configuration file places in /usr/_vendordir_/_project_. Optionally, /run/_project_ is also supported for ephemeral overrides.
Defining _project_ sub directory is optional.
There are two methods of overriding this vendor settings: Copy the file from /usr/_vendordir_/_project_ to /etc/_project_ and modify the settings (see Example 1).
Alternatively, a directory named _file_._suffix_.d/ within /etc/_project_ can be created, with drop-in files in the form _name_._suffix_ (see Example 2).
These files contain only the changes of the specific settings the
    user is interested in.
  
  There can be several such drop-in files, they are processed in lexicographic
    order of their filename.
The first method is useful to override the complete configuration file with an own one, the vendor supplied configuration is ignored.
So, if /etc/_project_/_example_._suffix_ exists,
    /usr/_vendor_/_project_/_example_._suffix_ and
    /run/_project_/_example_._suffix_ will not be read.
  
  The disadvantage is, that changes of the vendor configuration file, due e.g.
    an package update, are ignored and the user has to manually merge them.
The other method will continue to use
    /usr/_vendor_/_project_/_example_._suffix_ as base configuration file and
    merge all changes from /etc/_project_/_example_._suffix_.d/*._suffix_.
  
  So the user will automatically get improvements of the vendor, with the
    drawback, that they could be incompatible with the user made changes.
  
  If there is a file with the same name in
    /usr/_vendor_/_project_/_example_._suffix_.d/ and in
    /etc/_project_/_example_._suffix_.d/*._suffix_., the file in
    /usr/_project_/_vendor_/_example_._suffix_.d/ will completely ignored.
  
  To disable a configuration file supplied by the vendor, the recommended way is
    to place a symlink to /dev/null in the configuration directory in
    /etc/_project_/, with the same filename as the vendor configuration
  file.
Optionally, schemes with only drop-ins and without a ‘main’ configuration file will be supported too. In such schemes many drop-ins are loaded from a common directory in each hierarchy. For example, /usr/lib/<project>.d/*, /run/<project>.d/* and /etc/<project>.d/c.conf are all loaded and parsed in this scheme.
Example 1¶
If a /etc/_example_._suffix_ file exists:
* /etc/_example_._suffix_
* /usr/_vendor_/_project_/_example_._suffix_.d/*._suffix_
* /run/_project_/_example_._suffix_.d/*._suffix_
* /etc/_project_/_example_._suffix_.d/*._suffix_
Example 2¶
The list of files and directories read if **no** /etc/_example_._suffix_ file exists:
* /usr/_vendor_/_project_/_example_._suffix_ if no /run/_project_/_example_._suffix_ exist
* /usr/_vendor_/_project_/_example_._suffix_.d/*._suffix_
* /run/_project_/_example_._suffix_.d/*._suffix_
* /etc/_project_/_example_._suffix_.d/*._suffix_
UAPI Configuration Files Specification¶
The libeconf library fulfills all requirements defined by the
    Linux Userspace API (UAPI) Group chapter "Configuration Files
    Specification".
  
  See:
    https://uapi-group.org/specifications/specs/configuration_files_specification/
Bindings¶
Python Documentation: https://github.com/openSUSE/libeconf/blob/master/bindings/python3/docs/python-libeconf.3
C# Documentation: https://github.com/openSUSE/libeconf/blob/master/bindings/csharp/docs/README.md
SYNOPSIS¶
#include <stdbool.h>
  
  #include <stdint.h>
  
  #include <stdlib.h>
  
  #include 'libeconf.h'
  
  #include 'libeconf_ext.h'
  
Typedefs¶
typedef enum econf_err econf_err
  
  typedef struct econf_file econf_file
  
  typedef struct econf_ext_value econf_ext_value
  
  
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,
    ECONF_FILE_LIST_IS_NULL = 13, ECONF_WRONG_BOOLEAN_VALUE = 14,
    ECONF_KEY_HAS_NULL_VALUE = 15, ECONF_WRONG_OWNER = 16,
    ECONF_WRONG_GROUP = 17, ECONF_WRONG_FILE_PERMISSION = 18,
    ECONF_WRONG_DIR_PERMISSION = 19, ECONF_ERROR_FILE_IS_SYM_LINK
    = 20, ECONF_PARSING_CALLBACK_FAILED = 21 }
  
  libeconf error codes
  
Functions¶
econf_err econf_readConfig (econf_file
    **key_file, const char *project, const char *usr_subdir, const char
    *config_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 three different directories (normally in /usr/etc,
    /run and /etc). econf_err econf_readConfigWithCallback
    (econf_file **key_file, const char *project, const char *usr_subdir,
    const char *config_name, const char *config_suffix, const char *delim, const
    char *comment, bool (*callback)(const char *filename, const void *data),
    const void *callback_data)
  
  Has the same functionality like econf_readConfig. The user can
    additionally define a callback in order e.g. to check all parsed file.
    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. 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)
  
  Has the same functionality like econf_readFile. The user can
    additionally define a callback in order to check the parsed file.
    econf_err econf_mergeFiles (econf_file **merged_file,
    econf_file *usr_file, econf_file *etc_file)
  
  Merge the contents of two key_files objects. econf_err
    econf_newKeyFile (econf_file **result, char delimiter, char
    comment)
  
  Create a new econf_file object. econf_err econf_newIniFile
    (econf_file **result)
  
  Create a new econf_file object in IniFile format. econf_err
    econf_writeFile (econf_file *key_file, const char
    *save_to_dir, const char *file_name)
  
  Write content of an econf_file struct to specified location. char *
    econf_getPath (econf_file *kf)
  
  Evaluating path name of the regarding configuration file. econf_err
    econf_getGroups (econf_file *kf, size_t *length, char
    ***groups)
  
  Evaluating all group entries. econf_err econf_getKeys
    (econf_file *kf, const char *group, size_t *length, char ***keys)
  
  Evaluating all keys. 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_getInt64Value (econf_file *kf, const char *group, const
    char *key, int64_t *result)
  
  Evaluating int64 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_getUInt64Value (econf_file *kf, const char *group, const
    char *key, uint64_t *result)
  
  Evaluating uint64 value for given group/key. econf_err
    econf_getFloatValue (econf_file *kf, const char *group, const
    char *key, float *result)
  
  Evaluating float 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. 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_getBoolValue (econf_file *kf, const char *group, const
    char *key, bool *result)
  
  Evaluating bool value for given group/key. 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_getInt64ValueDef (econf_file *kf, const char *group,
    const char *key, int64_t *result, int64_t def)
  
  Evaluating int64 value for given group/key. 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_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_getFloatValueDef (econf_file *kf, const char *group,
    const char *key, float *result, float def)
  
  Evaluating float value for given group/key. 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_getStringValueDef (econf_file *kf, const char *group,
    const char *key, char **result, char *def)
  
  Evaluating string 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. 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_setInt64Value (econf_file *kf, const char *group, const
    char *key, int64_t value)
  
  Set int64 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_setUInt64Value (econf_file *kf, const char *group, const
    char *key, uint64_t value)
  
  Set 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_setDoubleValue (econf_file *kf, const char *group, const
    char *key, double value)
  
  Set double value for given group/key. 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_setBoolValue (econf_file *kf, const char *group, const
    char *key, const char *value)
  
  Set bool value for given group/key. const char * econf_errString (const
    econf_err error)
  
  Convert an econf_err type to a string. void econf_errLocation (char
    **filename, uint64_t *line_nr)
  
  Info about where the error has happened. void econf_freeArray (char
    **array)
  
  Free an array of type char** created by econf_getGroups() or
    econf_getKeys(). void econf_freeFile (econf_file
    *key_file)
  
  Free memory allocated by e.g. char econf_comment_tag (econf_file
    *key_file)
  
  Returns the comment character tag of the given econf_file object. char
    econf_delimiter_tag (econf_file *key_file)
  
  Returns the delimiter character of the given econf_file object. void
    econf_set_comment_tag (econf_file *key_file, const char
    comment)
  
  Set the comment character tag of the given econf_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_getExtValue (econf_file *kf, const char
    *group, const char *key, econf_ext_value **result)
  
  Evaluating more information for given group/key. void
    econf_freeExtValue (econf_ext_value *to_free)
  
  Free an complete econf_ext_value struct. econf_err
    econf_set_conf_dirs (const char **dir_postfix_list)
  
  Set a list of directory structures (with order) which describes the
    directories in which the files have to be parsed.
  
Detailed Description¶
Public API for the econf library.
Definition in file libeconf.h and libeconf_ext.h.
Typedef Documentation¶
typedef struct econf_file econf_file¶
Container which includes all information about the configuration file(s).
typedef struct econf_ext_value econf_ext_value¶
char ** values
  
  Values of a given key in form of an string array. char * file
  
  Path of the configuration file where this value has been read. uint64_t
    line_number
  
  Line number of the configuration key/value. char * comment_before_key
  
  Comment before the key/value entry. char * comment_after_value
  
  Comment after the value entry.
  
Enumeration Type Documentation¶
enum econf_err¶
libeconf error codes
Enumerator
  
- ECONF_SUCCESS
 - General purpose success code.
 - ECONF_ERROR
 - Generic Error.
 - ECONF_NOMEM
 - Out of memory.
 - ECONF_NOFILE
 - Config file not found.
 - ECONF_NOGROUP
 - Group not found.
 - ECONF_NOKEY
 - Key not found.
 - ECONF_EMPTYKEY
 - Key has empty value.
 - ECONF_WRITEERROR
 - Error creating or writing to a file.
 - ECONF_PARSE_ERROR
 - General syntax error in input file.
 - ECONF_MISSING_BRACKET
 - Missing closing section bracket.
 - ECONF_MISSING_DELIMITER
 - Missing delimiter.
 - ECONF_EMPTY_SECTION_NAME
 - Empty section name.
 - ECONF_TEXT_AFTER_SECTION
 - Text after section.
 - ECONF_FILE_LIST_IS_NULL
 - Parsed file list is NULL.
 - ECONF_WRONG_BOOLEAN_VALUE
 - Wrong boolean value (1/0 true/false yes/no)
 - ECONF_KEY_HAS_NULL_VALUE
 - Given key has NULL value.
 - ECONF_WRONG_OWNER
 - File has wrong owner.
 - ECONF_WRONG_GROUP
 - File has wrong group.
 - ECONF_WRONG_FILE_PERMISSION
 - File has wrong file permissions.
 - ECONF_WRONG_DIR_PERMISSION
 - File has wrong dir permissions.
 - ECONF_ERROR_FILE_IS_SYM_LINK
 - File is a sym link which is not permitted.
 - ECONF_PARSING_CALLBACK_FAILED
 - User defined parsing callback has failed.
 
Function Documentation¶
econf_err econf_readConfig (econf_file ** key_file, const char *project, const char *usr_subdir, const char *config_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 from different directories. Order is:
  
   /etc/$project/$config_name.$config_suffix does exist:
  
   -- /etc/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   /etc/$project/$config_name.$config_suffix does NOT exist:
  
   - /run/$project/$config_name.$config_suffix does exist:
  
   -- /run/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   - /run/$project/$config_name.$config_suffix does NOT exist:
  
   -- $usr_subdir/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   No main $config_name.$config_suffix file is defined or must not be
  parsed:
  
   -- $usr_subdir/$project.d/*.$config_suffix
  
   -- /run/$project.d/*.$config_suffix
  
   -- /etc/$project.d/*.$config_suffix
Parameters:
project name of the project used as subdirectory, can be NULL
usr_subdir absolute path of the first directory (often "/usr/lib")
config_name basename of the configuration file. If it is NULL, drop-ins without a main configuration file will be parsed only.
config_suffix suffix of the configuration file. Can also be NULL.
delim delimiters of key/value e.g. '\t ='. If delim contains space characters AND none space characters, multiline values are not parseable.
comment array of characters which define the start of a comment
Returns:
Example: Reading content in different cases in following order:
  
   /etc/foo/example.conf does exist:
  
   - /etc/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
  
   /etc/foo/example.conf does NOT exist:
  
   /run/foo/example.conf does exist:
  
   - /run/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
  
   /run/foo/example.conf does NOT exist:
  
   - /usr/lib/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
#include "libeconf.h" econf_file *key_file = NULL; econf_err error; error = econf_readConfig (&key_file,
"foo",
"/usr/lib",
"example",
"conf",
"=", "#"); econf_free (key_file);
econf_err econf_readConfigWithCallback (econf_file ** key_file, const char *project, const char *usr_subdir, const char *config_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 of a given configuration by reading and merging all needed/available files from different directories. Order is:
  
   /etc/$project/$config_name.$config_suffix does exist:
  
   -- /etc/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   /etc/$project/$config_name.$config_suffix does NOT exist:
  
   - /run/$project/$config_name.$config_suffix does exist:
  
   -- /run/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   - /run/$project/$config_name.$config_suffix does NOT exist:
  
   -- $usr_subdir/$project/$config_name.$config_suffix
  
   -- $usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /run/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   -- /etc/$project/$config_name.$config_suffix.d/ *.$config_suffix
  
   No main $config_name.$config_suffix file is defined or must not be
  parsed:
  
   -- $usr_subdir/$project.d/*.$config_suffix
  
   -- /run/$project.d/*.$config_suffix
  
   -- /etc/$project.d/*.$config_suffix
For each parsed file the user defined function will be called in order e.g. to check the correct file permissions.
Parameters:
project name of the project used as subdirectory, can be NULL
usr_subdir absolute path of the first directory (often "/usr/lib")
config_name basename of the configuration file. If it is NULL, drop-ins without a main configuration file will be parsed only.
config_suffix suffix of the configuration file. Can also be NULL.
delim delimiters of key/value e.g. '\t ='. If delim contains space characters AND none space characters, multiline values are not parseable.
comment array of characters which define the start of a comment
callback function which will be called for each file. This user defined function has the pathname as parameter and returns true if this file can be parsed. If not, the parsing of all files will be aborted and ECONF_PARSING_CALLBACK_FAILED will be returned.
callback_data pointer which will be given to the callback function.
Returns:
Example: Reading content in different cases in following order:
  
   /etc/foo/example.conf does exist:
  
   - /etc/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
  
   /etc/foo/example.conf does NOT exist:
  
   /run/foo/example.conf does exist:
  
   - /run/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
  
   /run/foo/example.conf does NOT exist:
  
   - /usr/lib/foo/example.conf
  
   - /usr/lib/foo/example.conf.d/ *.conf
  
   - /run/foo/example.conf.d/ *.conf
  
   - /etc/foo/example.conf.d/ *.conf
#include "libeconf.h"
bool checkFile(const char *filename, const void *data) {
  /* checking code which returns true or false */
  return true;
}
econf_file *key_file = NULL;
econf_err error;
error = econf_readConfigWithCallback (&key_file,
                                      "foo",
                                      "/usr/lib",
                                      "example",
                                      "conf",
                                      "=", "#",
                                      checkFile,
                                      NULL);
econf_free (key_file);
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.
Parameters:
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
Returns:
Usage:
#include "libeconf.h" econf_file *key_file = NULL; econf_err error; error = econf_readFile (&key_file, "/etc/test.conf", "=", "#"); econf_free (key_file);
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 JOIN_SAME_ENTRIES (see econf_set_opt). In that case entries with the same name will be joined to one single entry.
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. The user defined function will be called in order e.g. to check the correct file permissions.
Parameters:
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
callback function which will be called for the given filename. This user defined function has the pathname as parameter and returns true if this file can be parsed. If not, the parsing will be aborted and ECONF_PARSING_CALLBACK_FAILED will be returned.
callback_data pointer which will be given to the callback function.
Returns:
Usage:
#include "libeconf.h"
bool checkFile(const char *filename, const void *data) {
  /* checking code which returns true or false */
  return true;
}
econf_file *key_file = NULL;
econf_err error;
error = econf_readFileWithCallback (&key_file, "/etc/test.conf", "=", "#", checkFile, NULL);
econf_free (key_file);
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 JOIN_SAME_ENTRIES (see econf_set_opt). 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 preferred. Comment and delimiter tag will be taken from usr_file. This can be changed by calling the functions econf_set_comment_tag and econf_set_delimiter_tag.
Parameters:
usr_file First data block which has to be merged.
etc_file Second data block which has to be merged.
Returns:
Usage:
#include "libeconf.h" econf_file *key_file_1 = NULL, *key_file_2 = NULL, *key_file_ret = NULL econf_err error; error = econf_readFile (&key_file1, "/usr/etc/test.conf", "=", "#"); error = econf_readFile (&key_file2, /etc/test.conf", "=", "#"); error = econf_mergeFiles (&key_file_ret, key_file_1, key_file_2); econf_free (key_file_ret); econf_free (key_file_1); econf_free (key_file_2);
econf_err econf_newKeyFile (econf_file ** result, char delimiter, char comment)¶
Create a new econf_file object.
Parameters:
delimiter delimiter of key/value e.g. '='
comment Character which defines the start of a comment.
Returns:
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 '#'.
Parameters:
Returns:
econf_err econf_writeFile (econf_file * key_file, const char * save_to_dir, const char * file_name)¶
Write content of an econf_file struct to specified location.
Parameters:
save_to_dir Directory into which the file has to be written.
file_name filename (with suffix)
Returns:
char* econf_getPath (econf_file * kf)¶
Evaluating path name.
Parameters:
Returns:
econf_err econf_getGroups (econf_file * kf, size_t * length, char *** groups)¶
Evaluating all group entries.
Parameters:
length Length of the returned group array.
groups String array of evaluated groups.
Returns:
econf_err econf_getKeys (econf_file * kf, const char * group, size_t * length, char *** keys)¶
Evaluating all keys.
Parameters:
group Group name for which the keys have to be evaluated or NULL for keys, which do not belong to a group.
length Length of the returned key array.
keys String array of evaluated keys.
Returns:
econf_err econf_getIntValue (econf_file * kf, const char * group, const char * key, int32_t * result)¶
Evaluating int32 value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getInt64Value (econf_file * kf, const char * group, const char * key, int64_t * result)¶
Evaluating int64 value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getUIntValue (econf_file * kf, const char * group, const char * key, uint32_t * result)¶
Evaluating uint32 value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getUInt64Value (econf_file * kf, const char * group, const char * key, uint64_t * result)¶
Evaluating uint64 value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getFloatValue (econf_file * kf, const char * group, const char * key, float * result)¶
Evaluating float value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getDoubleValue (econf_file * kf, const char * group, const char * key, double * result)¶
Evaluating double value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
econf_err econf_getStringValue (econf_file * kf, const char * group, const char * key, char ** result)¶
Evaluating string value for given group/key.
Parameters:
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.
Returns:
econf_err econf_getBoolValue (econf_file * kf, const char * group, const char * key, bool * result)¶
Evaluating bool value for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result determined value
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
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.
Parameters:
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.
Returns:
econf_err econf_setIntValue (econf_file * kf, const char * group, const char * key, int32_t value)¶
Set int32 value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setInt64Value (econf_file * kf, const char * group, const char * key, int64_t value)¶
Set int64 value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setUIntValue (econf_file * kf, const char * group, const char * key, uint32_t value)¶
Set uint32 value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setUInt64Value (econf_file * kf, const char * group, const char * key, uint64_t value)¶
Set uint64 value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setFloatValue (econf_file * kf, const char * group, const char * key, float value)¶
Set float value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setDoubleValue (econf_file * kf, const char * group, const char * key, double value)¶
Set double value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setStringValue (econf_file * kf, const char * group, const char * key, const char * value)¶
Set string value for given group/key.
Parameters:
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.
Returns:
econf_err econf_setBoolValue (econf_file * kf, const char * group, const char * key, const char * value)¶
Set bool value for given group/key.
Parameters:
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.
Returns:
const char* econf_errString (const econf_err error)¶
Convert an econf_err type to a string.
Parameters:
Returns:
void econf_errLocation (char ** filename, uint64_t * line_nr)¶
Info about where the error has happened.
Parameters:
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().
Parameters:
Returns:
void econf_freeFile (econf_file * key_file)¶
Free memory allocated by e.g. econf_readFile(), econf_readDirs(),...
Parameters:
Returns:
char econf_comment_tag (econf_file * key_file)¶
Returns the comment character tag of the given econf_file object. This tag will be taken while writing comments to file.
Parameters:
Returns:
char econf_delimiter_tag (econf_file * key_file)¶
Returns the delimiter character of the given econf_file object. This delimiter will be taken while writing the data to file.
Parameters:
Returns:
void econf_set_comment_tag (econf_file * key_file, const char comment)¶
Set the comment character tag of the given econf_file object. This tag will be taken while writing comments to file.
Parameters:
comment comment tag
void econf_set_delimiter_tag (econf_file * key_file, const char delimiter)¶
Set the delimiter character of the given econf_file object. This delimiter will be taken while writing the data to file.
Parameters:
delimiter delimiter of key/value
econf_err econf_getExtValue (econf_file * kf, const char * group, const char * key, econf_ext_value ** result)¶
Evaluating more information for given group/key.
Parameters:
group Desired group or NULL if there is no group defined.
key Key for which the value is requested.
result A newly allocated struct or NULL in error case.
Returns:
void econf_freeExtValue (econf_ext_value * to_free)¶
Free an complete econf_ext_value struct.
Parameters:
Returns:
econf_err econf_set_conf_dirs (const char **dir_postfix_list)¶
Set a list of directory structures (with order) which describes the directories in which the files have to be parsed.
Parameters:
Returns:
SEE ALSO¶
econftool
| Thu Apr 8 2021 | Version 0.4.7 |