table of contents
- Tumbleweed 0.8.2-1.1
- Leap-16.0
| ECONF_READCONFIG(3) | libeconf Manual | ECONF_READCONFIG(3) |
NAME¶
econf_readConfig - evaluate configuration files for a specific project
SYNOPSIS¶
#include <libeconf.h>
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);
DESCRIPTION¶
econf_readConfig evaluats 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
project name of the project used as subdirectory, can be NULL.
If config_name is NULL, drop-ins without a main configuration file will be parsed only.
config_suffix can also be NULL.
The delim parameter specifies the character used to separate keys from values (e.g., "="). If delim contains space characters AND none space characters, multiline values are not parseable. The comment parameter specifies an array of characters which define the start of a comment (e.g., "#").
The parsed and merged configuration is stored in a newly allocated econf_file structure, which is returned via the key_file pointer.
RETURN VALUE¶
ECONF_NOFILE
The specified file_name does not exist.
ECONF_NOMEM
Insufficient memory to allocate the result structure.
ECONF_MISSING_BRACKET
ECONF_TEXT_AFTER_SECTION
ECONF_EMPTY_SECTION_NAME
ECONF_MISSING_DELIMITER
The file contains syntax errors and could not be parsed successfully.
ECONF_ARGUMENT_IS_NULL_VALUE
One of the required arguments (such as result or file_name) is NULL.
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>
#include <stdio.h>
int main(void) {
econf_file *conf = NULL;
econf_err err;
/*
* Reading
*/
err = econf_readConfig(&conf,
"foo", /* project name */
"/usr/lib", /* vendor directory */
"example", /* config name */
"conf", /* suffix */
"=", /* delimiter */
"#"); /* comment */
if (err != ECONF_SUCCESS) {
fprintf(stderr, "Failed to read config: %d\n", err);
return 1;
}
/* Use econf_get... functions here to access values */
econf_free(conf);
return 0;
}
SEE ALSO¶
libeconf(3), econf_readConfigWitchCallback(3), econf_free(3), econf_errString(3).
| 2023-10-25 | libeconf |