/
githubmirror
/
libeconf
Обзор
Документация
Войти
/
githubmirror
/
libeconf
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
docs/libeconf_8h.html
3 453 строки
211 KB
Stefan Schubert
update docu
27 апр 2026, 15:03
27 апр 2026, 15:03
a9d0c3d
Код
Авторство
О чём код?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/> <meta name="generator" content="Doxygen 1.14.0"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libeconf: include/libeconf.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="clipboard.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="cookie.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr id="projectrow"> <td id="projectalign"> <div id="projectname">libeconf<span id="projectnumber"> 0.8.3</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.14.0 --> <script type="text/javascript"> $(function() { codefold.init(); }); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',false,false,'search.php','Search',true); }); </script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(function(){initNavTree('libeconf_8h.html','',''); }); </script> <div id="container"> <div id="doc-content"> <div class="header"> <div class="headertitle"><div class="title">libeconf.h File Reference</div></div> </div><!--header--> <div class="contents"> <p>Public API for the econf library. <a href="#details">More...</a></p> <div class="textblock"><code>#include <stdbool.h></code><br /> <code>#include <stdint.h></code><br /> <code>#include <stdlib.h></code><br /> <code>#include <sys/types.h></code><br /> </div> <p><a href="libeconf_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a65b4282db33b845e3ce644ee6a2219c8" id="r_a65b4282db33b845e3ce644ee6a2219c8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="#a65b4282db33b845e3ce644ee6a2219c8">econf_setValue</a>(kf, group, key, value)</td></tr> <tr class="memdesc:a65b4282db33b845e3ce644ee6a2219c8"><td class="mdescLeft"> </td><td class="mdescRight">Generic macro calls setter function depending on value type. <br /></td></tr> <tr class="memitem:a27a9d78ae827ef885a4373fa591ded73" id="r_a27a9d78ae827ef885a4373fa591ded73"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a>(value)</td></tr> <tr class="memdesc:a27a9d78ae827ef885a4373fa591ded73"><td class="mdescLeft"> </td><td class="mdescRight">Generic macro to free memory allocated by econf_ functions. <br /></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 id="header-typedef-members" class="groupheader"><a id="typedef-members" name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a48fef14efd7e0751b5794e0f307f7869" id="r_a48fef14efd7e0751b5794e0f307f7869"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a48fef14efd7e0751b5794e0f307f7869">econf_err</a></td></tr> <tr class="memitem:a0d29e6d5c6c6d151bb3edc54019c8735" id="r_a0d29e6d5c6c6d151bb3edc54019c8735"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 id="header-enum-members" class="groupheader"><a id="enum-members" name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:a30cb4e6c5ce4daa333646b23b20caa0a" id="r_a30cb4e6c5ce4daa333646b23b20caa0a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> { <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aafe011d1ce92a3b4c1e8c172c8c3a9604">ECONF_SUCCESS</a> = 0 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aaf17cead6d4a9e4bd46bf07dd14476fb2">ECONF_ERROR</a> = 1 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa1d7757fbcf5df49ba92c9a436d3bff33">ECONF_NOMEM</a> = 2 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aad48f6a68474df566c7676ce325380b7f">ECONF_NOFILE</a> = 3 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa2eb2ee8b0ffb2cd4c0829944af1168a1">ECONF_NOGROUP</a> = 4 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aac3909d9fd9bdac53e1e8b2b80c470eb0">ECONF_NOKEY</a> = 5 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aaf3119f73c97a08fd08e2dfbc3d42493c">ECONF_EMPTYKEY</a> = 6 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aaa0542bb798322dd272fe66411b0ede6c">ECONF_WRITEERROR</a> = 7 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa6df088da6aad41d83acc2b6060acb7fe">ECONF_PARSE_ERROR</a> = 8 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aaaf3716ec7b6faf6a0183007060c2ac16">ECONF_MISSING_BRACKET</a> = 9 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aacd662d9a8a5249d344bc716517a5506f">ECONF_MISSING_DELIMITER</a> = 10 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa8bffb248bd0e7fbfe09f404ec73ffeb6">ECONF_EMPTY_SECTION_NAME</a> = 11 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa5af88d2cd68517701b2d8b9c34fbb4a0">ECONF_TEXT_AFTER_SECTION</a> = 12 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa1635184e73c0a6d522d82bba0abd0e4a">ECONF_FILE_LIST_IS_NULL</a> = 13 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa4725ff7773c2b5a9d703460f1ca070f4">ECONF_WRONG_BOOLEAN_VALUE</a> = 14 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aaa7f3b09e2b8a627f11f4df6e745103c9">ECONF_KEY_HAS_NULL_VALUE</a> = 15 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aae8f9a6e81d529822968f1af70c9b1946">ECONF_WRONG_OWNER</a> = 16 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aab28f4a0d53a21a1f0ed21fe8601a6d14">ECONF_WRONG_GROUP</a> = 17 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa768ba4de0c5ba47154dba9dc4a26cb84">ECONF_WRONG_FILE_PERMISSION</a> = 18 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aac04246deccfe0075cc58956c543fa408">ECONF_WRONG_DIR_PERMISSION</a> = 19 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aab09de6a0a65f054a6c542151a675e241">ECONF_ERROR_FILE_IS_SYM_LINK</a> = 20 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa6b9c2f2cdbbf94dbaabfa42e3425deb4">ECONF_PARSING_CALLBACK_FAILED</a> = 21 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa85a26e85a81e96c384691d7201d3db60">ECONF_ARGUMENT_IS_NULL_VALUE</a> = 22 , <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa88d2df1070c604a0d5ebc233126a805e">ECONF_OPTION_NOT_FOUND</a> = 23 , <br />   <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0aa164ca0fcef7be06bac2c681a0dd97ba6">ECONF_VALUE_CONVERSION_ERROR</a> = 24 <br /> }</td></tr> <tr class="memdesc:a30cb4e6c5ce4daa333646b23b20caa0a"><td class="mdescLeft"> </td><td class="mdescRight">libeconf error codes <a href="#a30cb4e6c5ce4daa333646b23b20caa0a">More...</a><br /></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:aa03377bd02882239b3342c095f916561" id="r_aa03377bd02882239b3342c095f916561"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa03377bd02882239b3342c095f916561">econf_readFile</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **result, const char *file_name, const char *delim, const char *comment)</td></tr> <tr class="memdesc:aa03377bd02882239b3342c095f916561"><td class="mdescLeft"> </td><td class="mdescRight">Process the file of the given file_name and save its contents into key_file object. <br /></td></tr> <tr class="memitem:a6bf61969ee7ea191fdd28b0c8de5761d" id="r_a6bf61969ee7ea191fdd28b0c8de5761d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6bf61969ee7ea191fdd28b0c8de5761d">econf_readFileWithCallback</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **result, const char *file_name, const char *delim, const char *comment, bool(*callback)(const char *filename, const void *data), const void *callback_data)</td></tr> <tr class="memdesc:a6bf61969ee7ea191fdd28b0c8de5761d"><td class="mdescLeft"> </td><td class="mdescRight">Process the file of the given file_name and save its contents into key_file object. <br /></td></tr> <tr class="memitem:a2aba75b3474b33173edbc0f80b2e8a79" id="r_a2aba75b3474b33173edbc0f80b2e8a79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2aba75b3474b33173edbc0f80b2e8a79">econf_mergeFiles</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **merged_file, <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *usr_file, <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *etc_file)</td></tr> <tr class="memdesc:a2aba75b3474b33173edbc0f80b2e8a79"><td class="mdescLeft"> </td><td class="mdescRight">Merge the contents of two key_files objects. <br /></td></tr> <tr class="memitem:a0ed2af8bb1d8f4563a9ac5c83a798881" id="r_a0ed2af8bb1d8f4563a9ac5c83a798881"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ed2af8bb1d8f4563a9ac5c83a798881">econf_readConfig</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **key_file, const char *project, const char *usr_subdir, const char *config_name, const char *config_suffix, const char *delim, const char *comment)</td></tr> <tr class="memdesc:a0ed2af8bb1d8f4563a9ac5c83a798881"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating key/values of a given configuration by reading and merging all needed/available files from different directories. <br /></td></tr> <tr class="memitem:ace4ad5a9fd48b5efae40d683d14cf313" id="r_ace4ad5a9fd48b5efae40d683d14cf313"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#ace4ad5a9fd48b5efae40d683d14cf313">econf_readConfigWithCallback</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **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)</td></tr> <tr class="memdesc:ace4ad5a9fd48b5efae40d683d14cf313"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating key/values of a given configuration by reading and merging all needed/available files from different directories. <br /></td></tr> <tr class="memitem:a42f74209e586b194b1f966f5381ce827" id="r_a42f74209e586b194b1f966f5381ce827"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a42f74209e586b194b1f966f5381ce827">econf_readDirs</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **key_file, const char *usr_conf_dir, const char *etc_conf_dir, const char *config_name, const char *config_suffix, const char *delim, const char *comment)</td></tr> <tr class="memdesc:a42f74209e586b194b1f966f5381ce827"><td class="mdescLeft"> </td><td class="mdescRight">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). <br /></td></tr> <tr class="memitem:a910efcd721aa9a2cdbafeb187479a923" id="r_a910efcd721aa9a2cdbafeb187479a923"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a910efcd721aa9a2cdbafeb187479a923">econf_readDirsWithCallback</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **key_file, const char *usr_conf_dir, const char *etc_conf_dir, 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)</td></tr> <tr class="memdesc:a910efcd721aa9a2cdbafeb187479a923"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). <br /></td></tr> <tr class="memitem:a64407a0ea75bbfb09d0af8fdb991c40b" id="r_a64407a0ea75bbfb09d0af8fdb991c40b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a64407a0ea75bbfb09d0af8fdb991c40b">econf_readDirsHistory</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> ***key_files, size_t *size, const char *usr_conf_dir, const char *etc_conf_dir, const char *config_name, const char *config_suffix, const char *delim, const char *comment)</td></tr> <tr class="memdesc:a64407a0ea75bbfb09d0af8fdb991c40b"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). <br /></td></tr> <tr class="memitem:a3e99ddefa0267f8c9f7bf04a44968f93" id="r_a3e99ddefa0267f8c9f7bf04a44968f93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3e99ddefa0267f8c9f7bf04a44968f93">econf_readDirsHistoryWithCallback</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> ***key_files, size_t *size, const char *usr_conf_dir, const char *etc_conf_dir, 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)</td></tr> <tr class="memdesc:a3e99ddefa0267f8c9f7bf04a44968f93"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). <br /></td></tr> <tr class="memitem:a94f42f580d8c9dff8cdb01a5c91bb5ec" id="r_a94f42f580d8c9dff8cdb01a5c91bb5ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a94f42f580d8c9dff8cdb01a5c91bb5ec">econf_newKeyFile</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **result, char delimiter, char comment)</td></tr> <tr class="memdesc:a94f42f580d8c9dff8cdb01a5c91bb5ec"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. <br /></td></tr> <tr class="memitem:a6bc0961dd90471bebae2f606d3db972d" id="r_a6bc0961dd90471bebae2f606d3db972d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6bc0961dd90471bebae2f606d3db972d">econf_newKeyFile_with_options</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **result, const char *options)</td></tr> <tr class="memdesc:a6bc0961dd90471bebae2f606d3db972d"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object with special options. <br /></td></tr> <tr class="memitem:a0b7c823419269683749a7394e776b22c" id="r_a0b7c823419269683749a7394e776b22c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0b7c823419269683749a7394e776b22c">econf_newIniFile</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **result)</td></tr> <tr class="memdesc:a0b7c823419269683749a7394e776b22c"><td class="mdescLeft"> </td><td class="mdescRight">Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object in IniFile format. <br /></td></tr> <tr class="memitem:a5d24ab3c1515a2a0cf4668221a0ee6f7" id="r_a5d24ab3c1515a2a0cf4668221a0ee6f7"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="#a5d24ab3c1515a2a0cf4668221a0ee6f7">econf_comment_tag</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file)</td></tr> <tr class="memdesc:a5d24ab3c1515a2a0cf4668221a0ee6f7"><td class="mdescLeft"> </td><td class="mdescRight">Returns the comment character tag of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. <br /></td></tr> <tr class="memitem:a2fa45814606cac4dc4abdfe462f8ee70" id="r_a2fa45814606cac4dc4abdfe462f8ee70"><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fa45814606cac4dc4abdfe462f8ee70">econf_delimiter_tag</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file)</td></tr> <tr class="memdesc:a2fa45814606cac4dc4abdfe462f8ee70"><td class="mdescLeft"> </td><td class="mdescRight">Returns the delimiter character of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. <br /></td></tr> <tr class="memitem:a1dc59b13a0293943b10dfc09e6daba09" id="r_a1dc59b13a0293943b10dfc09e6daba09"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1dc59b13a0293943b10dfc09e6daba09">econf_set_comment_tag</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file, const char comment)</td></tr> <tr class="memdesc:a1dc59b13a0293943b10dfc09e6daba09"><td class="mdescLeft"> </td><td class="mdescRight">Set the comment character tag of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. <br /></td></tr> <tr class="memitem:aa14d17dc8e3ebc26e155ceb2d497ad14" id="r_aa14d17dc8e3ebc26e155ceb2d497ad14"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa14d17dc8e3ebc26e155ceb2d497ad14">econf_set_delimiter_tag</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file, const char delimiter)</td></tr> <tr class="memdesc:aa14d17dc8e3ebc26e155ceb2d497ad14"><td class="mdescLeft"> </td><td class="mdescRight">Set the delimiter character of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. <br /></td></tr> <tr class="memitem:a5f1e5a7c748ef9147fc7d16604904171" id="r_a5f1e5a7c748ef9147fc7d16604904171"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a5f1e5a7c748ef9147fc7d16604904171">econf_writeFile</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file, const char *save_to_dir, const char *file_name)</td></tr> <tr class="memdesc:a5f1e5a7c748ef9147fc7d16604904171"><td class="mdescLeft"> </td><td class="mdescRight">Write content of an <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> struct to specified location. <br /></td></tr> <tr class="memitem:aeabac456f1ceda392b616bb851dc6082" id="r_aeabac456f1ceda392b616bb851dc6082"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="#aeabac456f1ceda392b616bb851dc6082">econf_getPath</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf)</td></tr> <tr class="memdesc:aeabac456f1ceda392b616bb851dc6082"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating path name. <br /></td></tr> <tr class="memitem:aa9f93a7e119c37ee3a49d1ad11936533" id="r_aa9f93a7e119c37ee3a49d1ad11936533"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa9f93a7e119c37ee3a49d1ad11936533">econf_getGroups</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, size_t *length, char ***groups)</td></tr> <tr class="memdesc:aa9f93a7e119c37ee3a49d1ad11936533"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating all group entries. <br /></td></tr> <tr class="memitem:afa58b02e97241c5e8d778f40b04731b7" id="r_afa58b02e97241c5e8d778f40b04731b7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#afa58b02e97241c5e8d778f40b04731b7">econf_getKeys</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, size_t *length, char ***keys)</td></tr> <tr class="memdesc:afa58b02e97241c5e8d778f40b04731b7"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating all keys. <br /></td></tr> <tr class="memitem:acdf4785ef2a5b411fdb4f63ea5b05fbc" id="r_acdf4785ef2a5b411fdb4f63ea5b05fbc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#acdf4785ef2a5b411fdb4f63ea5b05fbc">econf_getIntValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int32_t *result)</td></tr> <tr class="memdesc:acdf4785ef2a5b411fdb4f63ea5b05fbc"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating int32 value for given group/key. <br /></td></tr> <tr class="memitem:a80f117888ae88f796ba8785294ee76cd" id="r_a80f117888ae88f796ba8785294ee76cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a80f117888ae88f796ba8785294ee76cd">econf_getInt64Value</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int64_t *result)</td></tr> <tr class="memdesc:a80f117888ae88f796ba8785294ee76cd"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating int64 value for given group/key. <br /></td></tr> <tr class="memitem:af9ebb2c80265505d7fec80bc3ba08f06" id="r_af9ebb2c80265505d7fec80bc3ba08f06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#af9ebb2c80265505d7fec80bc3ba08f06">econf_getUIntValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint32_t *result)</td></tr> <tr class="memdesc:af9ebb2c80265505d7fec80bc3ba08f06"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating uint32 value for given group/key. <br /></td></tr> <tr class="memitem:a413472061e0ed9897eac190d4f3b30b2" id="r_a413472061e0ed9897eac190d4f3b30b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a413472061e0ed9897eac190d4f3b30b2">econf_getUInt64Value</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint64_t *result)</td></tr> <tr class="memdesc:a413472061e0ed9897eac190d4f3b30b2"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating uint64 value for given group/key. <br /></td></tr> <tr class="memitem:a56c631b316987132609b07b1e6df6e18" id="r_a56c631b316987132609b07b1e6df6e18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a56c631b316987132609b07b1e6df6e18">econf_getFloatValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, float *result)</td></tr> <tr class="memdesc:a56c631b316987132609b07b1e6df6e18"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating float value for given group/key. <br /></td></tr> <tr class="memitem:ad082e9c8bd148f6e984b6179b1c64ae9" id="r_ad082e9c8bd148f6e984b6179b1c64ae9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad082e9c8bd148f6e984b6179b1c64ae9">econf_getDoubleValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, double *result)</td></tr> <tr class="memdesc:ad082e9c8bd148f6e984b6179b1c64ae9"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating double value for given group/key. <br /></td></tr> <tr class="memitem:abfe33ab2f7b5259cda5b71d488f46ab0" id="r_abfe33ab2f7b5259cda5b71d488f46ab0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#abfe33ab2f7b5259cda5b71d488f46ab0">econf_getStringValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, char **result)</td></tr> <tr class="memdesc:abfe33ab2f7b5259cda5b71d488f46ab0"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating string value for given group/key. <br /></td></tr> <tr class="memitem:a76c652840d8dfcc03de8113a7cfebc13" id="r_a76c652840d8dfcc03de8113a7cfebc13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a76c652840d8dfcc03de8113a7cfebc13">econf_getBoolValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, bool *result)</td></tr> <tr class="memdesc:a76c652840d8dfcc03de8113a7cfebc13"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating bool value for given group/key. <br /></td></tr> <tr class="memitem:af6fc2727600785ecb4b1cb6652231ce6" id="r_af6fc2727600785ecb4b1cb6652231ce6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#af6fc2727600785ecb4b1cb6652231ce6">econf_getIntValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int32_t *result, const int32_t def)</td></tr> <tr class="memdesc:af6fc2727600785ecb4b1cb6652231ce6"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating int32 value for given group/key. <br /></td></tr> <tr class="memitem:a0e25d09069dd273119c0549b3e81f5c9" id="r_a0e25d09069dd273119c0549b3e81f5c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0e25d09069dd273119c0549b3e81f5c9">econf_getInt64ValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int64_t *result, const int64_t def)</td></tr> <tr class="memdesc:a0e25d09069dd273119c0549b3e81f5c9"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating int64 value for given group/key. <br /></td></tr> <tr class="memitem:a34204abad15dee193af27d6368e8fffe" id="r_a34204abad15dee193af27d6368e8fffe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a34204abad15dee193af27d6368e8fffe">econf_getUIntValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint32_t *result, const uint32_t def)</td></tr> <tr class="memdesc:a34204abad15dee193af27d6368e8fffe"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating uint32 value for given group/key. <br /></td></tr> <tr class="memitem:ad05f83477777820e3af4b6b1b96c31b0" id="r_ad05f83477777820e3af4b6b1b96c31b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad05f83477777820e3af4b6b1b96c31b0">econf_getUInt64ValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint64_t *result, const uint64_t def)</td></tr> <tr class="memdesc:ad05f83477777820e3af4b6b1b96c31b0"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating uint64 value for given group/key. <br /></td></tr> <tr class="memitem:aecd3ff6d01bc8dae14eb0717a6f4963e" id="r_aecd3ff6d01bc8dae14eb0717a6f4963e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#aecd3ff6d01bc8dae14eb0717a6f4963e">econf_getFloatValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, float *result, const float def)</td></tr> <tr class="memdesc:aecd3ff6d01bc8dae14eb0717a6f4963e"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating float value for given group/key. <br /></td></tr> <tr class="memitem:a2e2059c7f8d77adc964356c9af1600a4" id="r_a2e2059c7f8d77adc964356c9af1600a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2e2059c7f8d77adc964356c9af1600a4">econf_getDoubleValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, double *result, const double def)</td></tr> <tr class="memdesc:a2e2059c7f8d77adc964356c9af1600a4"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating double value for given group/key. <br /></td></tr> <tr class="memitem:aca086c8a60b7d14c2d3fdf06460aab1c" id="r_aca086c8a60b7d14c2d3fdf06460aab1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#aca086c8a60b7d14c2d3fdf06460aab1c">econf_getStringValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, char **result, const char *def)</td></tr> <tr class="memdesc:aca086c8a60b7d14c2d3fdf06460aab1c"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating string value for given group/key. <br /></td></tr> <tr class="memitem:af6b9d3d3880b432f255ef35928938ef6" id="r_af6b9d3d3880b432f255ef35928938ef6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#af6b9d3d3880b432f255ef35928938ef6">econf_getBoolValueDef</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, bool *result, const bool def)</td></tr> <tr class="memdesc:af6b9d3d3880b432f255ef35928938ef6"><td class="mdescLeft"> </td><td class="mdescRight">Evaluating bool value for given group/key. <br /></td></tr> <tr class="memitem:a9eba99cc942620012cd76d7fd487c599" id="r_a9eba99cc942620012cd76d7fd487c599"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9eba99cc942620012cd76d7fd487c599">econf_setIntValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int32_t value)</td></tr> <tr class="memdesc:a9eba99cc942620012cd76d7fd487c599"><td class="mdescLeft"> </td><td class="mdescRight">Set int32 value for given group/key. <br /></td></tr> <tr class="memitem:a2fe1e47b604fa259e1fd879bbdc0a347" id="r_a2fe1e47b604fa259e1fd879bbdc0a347"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fe1e47b604fa259e1fd879bbdc0a347">econf_setInt64Value</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, int64_t value)</td></tr> <tr class="memdesc:a2fe1e47b604fa259e1fd879bbdc0a347"><td class="mdescLeft"> </td><td class="mdescRight">Set int64 value for given group/key. <br /></td></tr> <tr class="memitem:a43baa061fcd4f770e2d8e12d3ee58f6e" id="r_a43baa061fcd4f770e2d8e12d3ee58f6e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a43baa061fcd4f770e2d8e12d3ee58f6e">econf_setUIntValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint32_t value)</td></tr> <tr class="memdesc:a43baa061fcd4f770e2d8e12d3ee58f6e"><td class="mdescLeft"> </td><td class="mdescRight">Set uint32 value for given group/key. <br /></td></tr> <tr class="memitem:a0e4050978c3ed94332f8e82862fa4b62" id="r_a0e4050978c3ed94332f8e82862fa4b62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0e4050978c3ed94332f8e82862fa4b62">econf_setUInt64Value</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, uint64_t value)</td></tr> <tr class="memdesc:a0e4050978c3ed94332f8e82862fa4b62"><td class="mdescLeft"> </td><td class="mdescRight">Set uint64 value for given group/key. <br /></td></tr> <tr class="memitem:a836b5196842a134fc370c7bc24ffefcb" id="r_a836b5196842a134fc370c7bc24ffefcb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a836b5196842a134fc370c7bc24ffefcb">econf_setFloatValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, float value)</td></tr> <tr class="memdesc:a836b5196842a134fc370c7bc24ffefcb"><td class="mdescLeft"> </td><td class="mdescRight">Set float value for given group/key. <br /></td></tr> <tr class="memitem:a1ba57afda092a5a591f3cbc14a00caf6" id="r_a1ba57afda092a5a591f3cbc14a00caf6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1ba57afda092a5a591f3cbc14a00caf6">econf_setDoubleValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, double value)</td></tr> <tr class="memdesc:a1ba57afda092a5a591f3cbc14a00caf6"><td class="mdescLeft"> </td><td class="mdescRight">Set double value for given group/key. <br /></td></tr> <tr class="memitem:a808d966041916c3de263a79a6b4983c5" id="r_a808d966041916c3de263a79a6b4983c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a808d966041916c3de263a79a6b4983c5">econf_setStringValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, const char *value)</td></tr> <tr class="memdesc:a808d966041916c3de263a79a6b4983c5"><td class="mdescLeft"> </td><td class="mdescRight">Set string value for given group/key. <br /></td></tr> <tr class="memitem:a3f873713848631a5ded240479af96de4" id="r_a3f873713848631a5ded240479af96de4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f873713848631a5ded240479af96de4">econf_setBoolValue</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *kf, const char *group, const char *key, const char *value)</td></tr> <tr class="memdesc:a3f873713848631a5ded240479af96de4"><td class="mdescLeft"> </td><td class="mdescRight">Set bool value for given group/key. <br /></td></tr> <tr class="memitem:a1a78a570d9d947cebf347bf9e41a6637" id="r_a1a78a570d9d947cebf347bf9e41a6637"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1a78a570d9d947cebf347bf9e41a6637">econf_errString</a> (const <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error)</td></tr> <tr class="memdesc:a1a78a570d9d947cebf347bf9e41a6637"><td class="mdescLeft"> </td><td class="mdescRight">Convert an <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> type to a string. <br /></td></tr> <tr class="memitem:adc459d1dfa9096425d4f248b04669761" id="r_adc459d1dfa9096425d4f248b04669761"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#adc459d1dfa9096425d4f248b04669761">econf_errLocation</a> (char **filename, uint64_t *line_nr)</td></tr> <tr class="memdesc:adc459d1dfa9096425d4f248b04669761"><td class="mdescLeft"> </td><td class="mdescRight">Info about where the error has happened. <br /></td></tr> <tr class="memitem:ac7076da6784af251dc166461bd3ba40a" id="r_ac7076da6784af251dc166461bd3ba40a"><td class="memItemLeft" align="right" valign="top">char ** </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac7076da6784af251dc166461bd3ba40a">econf_freeArray</a> (char **array)</td></tr> <tr class="memdesc:ac7076da6784af251dc166461bd3ba40a"><td class="mdescLeft"> </td><td class="mdescRight">Free an array of type char** created by <a class="el" href="#aa9f93a7e119c37ee3a49d1ad11936533" title="Evaluating all group entries.">econf_getGroups()</a> or <a class="el" href="#afa58b02e97241c5e8d778f40b04731b7" title="Evaluating all keys.">econf_getKeys()</a>. <br /></td></tr> <tr class="memitem:a411af7792e1d014566efdcff1e1eafc0" id="r_a411af7792e1d014566efdcff1e1eafc0"><td class="memItemLeft" align="right" valign="top">static __inline__ void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a411af7792e1d014566efdcff1e1eafc0">econf_freeArrayp</a> (char ***array)</td></tr> <tr class="memitem:a3bdb79dab514bb4f51c610bc028d54f4" id="r_a3bdb79dab514bb4f51c610bc028d54f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3bdb79dab514bb4f51c610bc028d54f4">econf_freeFile</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file)</td></tr> <tr class="memdesc:a3bdb79dab514bb4f51c610bc028d54f4"><td class="mdescLeft"> </td><td class="mdescRight">Free memory allocated and returned by <a class="el" href="#aa03377bd02882239b3342c095f916561" title="Process the file of the given file_name and save its contents into key_file object.">econf_readFile()</a>, econf_readFileWithCallback, <a class="el" href="#a42f74209e586b194b1f966f5381ce827" title="Evaluating key/values of a given configuration by reading and merging all needed/available files in t...">econf_readDirs()</a>, econf_readDirsWithCallback, econf_readDirsHistory, econf_readDirsHistoryWithCallback, econf_readConfig, econf_readConfigWithCallback. <br /></td></tr> <tr class="memitem:a9e75bcdee979ef8a6584f3553202aa17" id="r_a9e75bcdee979ef8a6584f3553202aa17"><td class="memItemLeft" align="right" valign="top">static __inline__ void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a9e75bcdee979ef8a6584f3553202aa17">econf_freeFilep</a> (<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **key_file)</td></tr> <tr class="memitem:ab9cf0bcce775cd0d03dcb9bbba534087" id="r_ab9cf0bcce775cd0d03dcb9bbba534087"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab9cf0bcce775cd0d03dcb9bbba534087">econf_requireOwner</a> (uid_t owner)</td></tr> <tr class="memdesc:ab9cf0bcce775cd0d03dcb9bbba534087"><td class="mdescLeft"> </td><td class="mdescRight">All parsed files require this user permission. <br /></td></tr> <tr class="memitem:a4b9a4f31d04c7ea2087173f7877ec223" id="r_a4b9a4f31d04c7ea2087173f7877ec223"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a4b9a4f31d04c7ea2087173f7877ec223">econf_requireGroup</a> (gid_t group)</td></tr> <tr class="memdesc:a4b9a4f31d04c7ea2087173f7877ec223"><td class="mdescLeft"> </td><td class="mdescRight">All parsed files require this group permission. <br /></td></tr> <tr class="memitem:a3378794c25da9179c98671b082f4fdd4" id="r_a3378794c25da9179c98671b082f4fdd4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3378794c25da9179c98671b082f4fdd4">econf_requirePermissions</a> (mode_t file_perms, mode_t dir_perms)</td></tr> <tr class="memdesc:a3378794c25da9179c98671b082f4fdd4"><td class="mdescLeft"> </td><td class="mdescRight">All parsed file have to have these file and directory permissions. <br /></td></tr> <tr class="memitem:a1d7cc79ac8b7a3ba1253cc24dcc82949" id="r_a1d7cc79ac8b7a3ba1253cc24dcc82949"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1d7cc79ac8b7a3ba1253cc24dcc82949">econf_followSymlinks</a> (bool allow)</td></tr> <tr class="memdesc:a1d7cc79ac8b7a3ba1253cc24dcc82949"><td class="mdescLeft"> </td><td class="mdescRight">Allowing the parser to follow sym links (default: true). <br /></td></tr> <tr class="memitem:ac2c27395368eddbc50c1dc7736bbcf49" id="r_ac2c27395368eddbc50c1dc7736bbcf49"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac2c27395368eddbc50c1dc7736bbcf49">econf_reset_security_settings</a> (void)</td></tr> <tr class="memdesc:ac2c27395368eddbc50c1dc7736bbcf49"><td class="mdescLeft"> </td><td class="mdescRight">Reset all UID, GID, permissions,... restrictions for parsed files/dirs. <br /></td></tr> <tr class="memitem:a0466a16c30cfcd58ec6201d210c64731" id="r_a0466a16c30cfcd58ec6201d210c64731"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0466a16c30cfcd58ec6201d210c64731">econf_set_conf_dirs</a> (const char **dir_postfix_list)</td></tr> <tr class="memdesc:a0466a16c30cfcd58ec6201d210c64731"><td class="mdescLeft"> </td><td class="mdescRight">Set a list of directory structures (with order) which describes the directories in which the files have to be parsed. <br /></td></tr> </table> <a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2> <div class="textblock"><p>Public API for the econf library. </p> <p class="definition">Definition in file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div><a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2> <a id="a65b4282db33b845e3ce644ee6a2219c8" name="a65b4282db33b845e3ce644ee6a2219c8"></a> <h2 class="memtitle"><span class="permalink"><a href="#a65b4282db33b845e3ce644ee6a2219c8">◆ </a></span>econf_setValue</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define econf_setValue</td> <td>(</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"> (( \</div> <div class="line"> _Generic((value), \</div> <div class="line"> <span class="keywordtype">int</span>: <a class="code hl_function" href="#a9eba99cc942620012cd76d7fd487c599">econf_setIntValue</a>, \</div> <div class="line"> <span class="keywordtype">long</span>: <a class="code hl_function" href="#a2fe1e47b604fa259e1fd879bbdc0a347">econf_setInt64Value</a>, \</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>: <a class="code hl_function" href="#a43baa061fcd4f770e2d8e12d3ee58f6e">econf_setUIntValue</a>, \</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>: <a class="code hl_function" href="#a0e4050978c3ed94332f8e82862fa4b62">econf_setUInt64Value</a>, \</div> <div class="line"> <span class="keywordtype">float</span>: <a class="code hl_function" href="#a836b5196842a134fc370c7bc24ffefcb">econf_setFloatValue</a>, \</div> <div class="line"> <span class="keywordtype">double</span>: <a class="code hl_function" href="#a1ba57afda092a5a591f3cbc14a00caf6">econf_setDoubleValue</a>, \</div> <div class="line"> <span class="keywordtype">char</span>*: <a class="code hl_function" href="#a808d966041916c3de263a79a6b4983c5">econf_setStringValue</a>, <span class="keywordtype">void</span>*: <a class="code hl_function" href="#a808d966041916c3de263a79a6b4983c5">econf_setStringValue</a>)) \</div> <div class="line">(kf, group, key, value))</div> <div class="ttc" id="alibeconf_8h_html_a0e4050978c3ed94332f8e82862fa4b62"><div class="ttname"><a href="#a0e4050978c3ed94332f8e82862fa4b62">econf_setUInt64Value</a></div><div class="ttdeci">econf_err econf_setUInt64Value(econf_file *kf, const char *group, const char *key, uint64_t value)</div><div class="ttdoc">Set uint64 value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a1ba57afda092a5a591f3cbc14a00caf6"><div class="ttname"><a href="#a1ba57afda092a5a591f3cbc14a00caf6">econf_setDoubleValue</a></div><div class="ttdeci">econf_err econf_setDoubleValue(econf_file *kf, const char *group, const char *key, double value)</div><div class="ttdoc">Set double value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a2fe1e47b604fa259e1fd879bbdc0a347"><div class="ttname"><a href="#a2fe1e47b604fa259e1fd879bbdc0a347">econf_setInt64Value</a></div><div class="ttdeci">econf_err econf_setInt64Value(econf_file *kf, const char *group, const char *key, int64_t value)</div><div class="ttdoc">Set int64 value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a43baa061fcd4f770e2d8e12d3ee58f6e"><div class="ttname"><a href="#a43baa061fcd4f770e2d8e12d3ee58f6e">econf_setUIntValue</a></div><div class="ttdeci">econf_err econf_setUIntValue(econf_file *kf, const char *group, const char *key, uint32_t value)</div><div class="ttdoc">Set uint32 value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a808d966041916c3de263a79a6b4983c5"><div class="ttname"><a href="#a808d966041916c3de263a79a6b4983c5">econf_setStringValue</a></div><div class="ttdeci">econf_err econf_setStringValue(econf_file *kf, const char *group, const char *key, const char *value)</div><div class="ttdoc">Set string value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a836b5196842a134fc370c7bc24ffefcb"><div class="ttname"><a href="#a836b5196842a134fc370c7bc24ffefcb">econf_setFloatValue</a></div><div class="ttdeci">econf_err econf_setFloatValue(econf_file *kf, const char *group, const char *key, float value)</div><div class="ttdoc">Set float value for given group/key.</div></div> <div class="ttc" id="alibeconf_8h_html_a9eba99cc942620012cd76d7fd487c599"><div class="ttname"><a href="#a9eba99cc942620012cd76d7fd487c599">econf_setIntValue</a></div><div class="ttdeci">econf_err econf_setIntValue(econf_file *kf, const char *group, const char *key, int32_t value)</div><div class="ttdoc">Set int32 value for given group/key.</div></div> </div><!-- fragment --> <p>Generic macro calls setter function depending on value type. </p> <p>Use: econf_setValue(<a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file, char *group, char *key, <em>generic</em> value);</p> <p>Replace <em>generic</em> 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. </p> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l00106">106</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a id="a27a9d78ae827ef885a4373fa591ded73" name="a27a9d78ae827ef885a4373fa591ded73"></a> <h2 class="memtitle"><span class="permalink"><a href="#a27a9d78ae827ef885a4373fa591ded73">◆ </a></span>econf_free</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define econf_free</td> <td>(</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>value</em></span></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"> (( \</div> <div class="line"> _Generic((value), \</div> <div class="line"> <a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a>*: <a class="code hl_function" href="#a3bdb79dab514bb4f51c610bc028d54f4">econf_freeFile</a> , \</div> <div class="line"> <span class="keywordtype">char</span>**: <a class="code hl_function" href="#ac7076da6784af251dc166461bd3ba40a">econf_freeArray</a>)) \</div> <div class="line">(value))</div> <div class="ttc" id="alibeconf_8h_html_a0d29e6d5c6c6d151bb3edc54019c8735"><div class="ttname"><a href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a></div><div class="ttdeci">struct econf_file econf_file</div><div class="ttdef"><b>Definition</b> <a href="libeconf_8h_source.html#l00129">libeconf.h:129</a></div></div> <div class="ttc" id="alibeconf_8h_html_a3bdb79dab514bb4f51c610bc028d54f4"><div class="ttname"><a href="#a3bdb79dab514bb4f51c610bc028d54f4">econf_freeFile</a></div><div class="ttdeci">econf_file * econf_freeFile(econf_file *key_file)</div><div class="ttdoc">Free memory allocated and returned by econf_readFile(), econf_readFileWithCallback,...</div></div> <div class="ttc" id="alibeconf_8h_html_ac7076da6784af251dc166461bd3ba40a"><div class="ttname"><a href="#ac7076da6784af251dc166461bd3ba40a">econf_freeArray</a></div><div class="ttdeci">char ** econf_freeArray(char **array)</div><div class="ttdoc">Free an array of type char** created by econf_getGroups() or econf_getKeys().</div></div> </div><!-- fragment --> <p>Generic macro to free memory allocated by econf_ functions. </p> <p>Use: econf_free(<em>generic</em> value);</p> <p>Replace <em>generic</em> with one of the supported value types. Supported Types: char** and econf_file*. </p> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l00123">123</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a name="doc-typedef-members" id="doc-typedef-members"></a><h2 id="header-doc-typedef-members" class="groupheader">Typedef Documentation</h2> <a id="a48fef14efd7e0751b5794e0f307f7869" name="a48fef14efd7e0751b5794e0f307f7869"></a> <h2 class="memtitle"><span class="permalink"><a href="#a48fef14efd7e0751b5794e0f307f7869">◆ </a></span>econf_err</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef enum <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l00094">94</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a id="a0d29e6d5c6c6d151bb3edc54019c8735" name="a0d29e6d5c6c6d151bb3edc54019c8735"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0d29e6d5c6c6d151bb3edc54019c8735">◆ </a></span>econf_file</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l00129">129</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a name="doc-enum-members" id="doc-enum-members"></a><h2 id="header-doc-enum-members" class="groupheader">Enumeration Type Documentation</h2> <a id="a30cb4e6c5ce4daa333646b23b20caa0a" name="a30cb4e6c5ce4daa333646b23b20caa0a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a30cb4e6c5ce4daa333646b23b20caa0a">◆ </a></span>econf_err</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a></td> </tr> </table> </div><div class="memdoc"> <p>libeconf error codes </p> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aafe011d1ce92a3b4c1e8c172c8c3a9604" name="a30cb4e6c5ce4daa333646b23b20caa0aafe011d1ce92a3b4c1e8c172c8c3a9604"></a>ECONF_SUCCESS </td><td class="fielddoc"><p>General purpose success code. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aaf17cead6d4a9e4bd46bf07dd14476fb2" name="a30cb4e6c5ce4daa333646b23b20caa0aaf17cead6d4a9e4bd46bf07dd14476fb2"></a>ECONF_ERROR </td><td class="fielddoc"><p>Generic Error. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa1d7757fbcf5df49ba92c9a436d3bff33" name="a30cb4e6c5ce4daa333646b23b20caa0aa1d7757fbcf5df49ba92c9a436d3bff33"></a>ECONF_NOMEM </td><td class="fielddoc"><p>Out of memory. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aad48f6a68474df566c7676ce325380b7f" name="a30cb4e6c5ce4daa333646b23b20caa0aad48f6a68474df566c7676ce325380b7f"></a>ECONF_NOFILE </td><td class="fielddoc"><p>Config file not found. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa2eb2ee8b0ffb2cd4c0829944af1168a1" name="a30cb4e6c5ce4daa333646b23b20caa0aa2eb2ee8b0ffb2cd4c0829944af1168a1"></a>ECONF_NOGROUP </td><td class="fielddoc"><p>Group not found. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aac3909d9fd9bdac53e1e8b2b80c470eb0" name="a30cb4e6c5ce4daa333646b23b20caa0aac3909d9fd9bdac53e1e8b2b80c470eb0"></a>ECONF_NOKEY </td><td class="fielddoc"><p>Key not found. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aaf3119f73c97a08fd08e2dfbc3d42493c" name="a30cb4e6c5ce4daa333646b23b20caa0aaf3119f73c97a08fd08e2dfbc3d42493c"></a>ECONF_EMPTYKEY </td><td class="fielddoc"><p>Key is NULL or has empty value. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aaa0542bb798322dd272fe66411b0ede6c" name="a30cb4e6c5ce4daa333646b23b20caa0aaa0542bb798322dd272fe66411b0ede6c"></a>ECONF_WRITEERROR </td><td class="fielddoc"><p>Error creating or writing to a file. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa6df088da6aad41d83acc2b6060acb7fe" name="a30cb4e6c5ce4daa333646b23b20caa0aa6df088da6aad41d83acc2b6060acb7fe"></a>ECONF_PARSE_ERROR </td><td class="fielddoc"><p>General syntax error in input file. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aaaf3716ec7b6faf6a0183007060c2ac16" name="a30cb4e6c5ce4daa333646b23b20caa0aaaf3716ec7b6faf6a0183007060c2ac16"></a>ECONF_MISSING_BRACKET </td><td class="fielddoc"><p>Missing closing section bracket. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aacd662d9a8a5249d344bc716517a5506f" name="a30cb4e6c5ce4daa333646b23b20caa0aacd662d9a8a5249d344bc716517a5506f"></a>ECONF_MISSING_DELIMITER </td><td class="fielddoc"><p>Missing delimiter. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa8bffb248bd0e7fbfe09f404ec73ffeb6" name="a30cb4e6c5ce4daa333646b23b20caa0aa8bffb248bd0e7fbfe09f404ec73ffeb6"></a>ECONF_EMPTY_SECTION_NAME </td><td class="fielddoc"><p>Empty section name. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa5af88d2cd68517701b2d8b9c34fbb4a0" name="a30cb4e6c5ce4daa333646b23b20caa0aa5af88d2cd68517701b2d8b9c34fbb4a0"></a>ECONF_TEXT_AFTER_SECTION </td><td class="fielddoc"><p>Text after section. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa1635184e73c0a6d522d82bba0abd0e4a" name="a30cb4e6c5ce4daa333646b23b20caa0aa1635184e73c0a6d522d82bba0abd0e4a"></a>ECONF_FILE_LIST_IS_NULL </td><td class="fielddoc"><p>Parsed file list is NULL. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa4725ff7773c2b5a9d703460f1ca070f4" name="a30cb4e6c5ce4daa333646b23b20caa0aa4725ff7773c2b5a9d703460f1ca070f4"></a>ECONF_WRONG_BOOLEAN_VALUE </td><td class="fielddoc"><p>Wrong boolean value (1/0 true/false yes/no) </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aaa7f3b09e2b8a627f11f4df6e745103c9" name="a30cb4e6c5ce4daa333646b23b20caa0aaa7f3b09e2b8a627f11f4df6e745103c9"></a>ECONF_KEY_HAS_NULL_VALUE </td><td class="fielddoc"><p>Given key has NULL value. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aae8f9a6e81d529822968f1af70c9b1946" name="a30cb4e6c5ce4daa333646b23b20caa0aae8f9a6e81d529822968f1af70c9b1946"></a>ECONF_WRONG_OWNER </td><td class="fielddoc"><p>File has wrong owner. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aab28f4a0d53a21a1f0ed21fe8601a6d14" name="a30cb4e6c5ce4daa333646b23b20caa0aab28f4a0d53a21a1f0ed21fe8601a6d14"></a>ECONF_WRONG_GROUP </td><td class="fielddoc"><p>File has wrong group. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa768ba4de0c5ba47154dba9dc4a26cb84" name="a30cb4e6c5ce4daa333646b23b20caa0aa768ba4de0c5ba47154dba9dc4a26cb84"></a>ECONF_WRONG_FILE_PERMISSION </td><td class="fielddoc"><p>File has wrong file permissions. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aac04246deccfe0075cc58956c543fa408" name="a30cb4e6c5ce4daa333646b23b20caa0aac04246deccfe0075cc58956c543fa408"></a>ECONF_WRONG_DIR_PERMISSION </td><td class="fielddoc"><p>File has wrong dir permission. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aab09de6a0a65f054a6c542151a675e241" name="a30cb4e6c5ce4daa333646b23b20caa0aab09de6a0a65f054a6c542151a675e241"></a>ECONF_ERROR_FILE_IS_SYM_LINK </td><td class="fielddoc"><p>File is a sym link which is not permitted. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa6b9c2f2cdbbf94dbaabfa42e3425deb4" name="a30cb4e6c5ce4daa333646b23b20caa0aa6b9c2f2cdbbf94dbaabfa42e3425deb4"></a>ECONF_PARSING_CALLBACK_FAILED </td><td class="fielddoc"><p>User defined parsing callback has failed. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa85a26e85a81e96c384691d7201d3db60" name="a30cb4e6c5ce4daa333646b23b20caa0aa85a26e85a81e96c384691d7201d3db60"></a>ECONF_ARGUMENT_IS_NULL_VALUE </td><td class="fielddoc"><p>Given argument is NULL. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa88d2df1070c604a0d5ebc233126a805e" name="a30cb4e6c5ce4daa333646b23b20caa0aa88d2df1070c604a0d5ebc233126a805e"></a>ECONF_OPTION_NOT_FOUND </td><td class="fielddoc"><p>Given option not found. </p> </td></tr> <tr><td class="fieldname"><a id="a30cb4e6c5ce4daa333646b23b20caa0aa164ca0fcef7be06bac2c681a0dd97ba6" name="a30cb4e6c5ce4daa333646b23b20caa0aa164ca0fcef7be06bac2c681a0dd97ba6"></a>ECONF_VALUE_CONVERSION_ERROR </td><td class="fielddoc"><p>Value cannot be converted. </p> </td></tr> </table> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l00041">41</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2> <a id="aa03377bd02882239b3342c095f916561" name="aa03377bd02882239b3342c095f916561"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa03377bd02882239b3342c095f916561">◆ </a></span>econf_readFile()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readFile </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>file_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Process the file of the given file_name and save its contents into key_file object. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">result</td><td>content of parsed file. </td></tr> <tr><td class="paramname">file_name</td><td>absolute path of parsed file </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =". If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Usage: </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#aa03377bd02882239b3342c095f916561">econf_readFile</a> (&key_file, <span class="stringliteral">"/etc/test.conf"</span>, <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html"><div class="ttname"><a href="libeconf_8h.html">libeconf.h</a></div><div class="ttdoc">Public API for the econf library.</div></div> <div class="ttc" id="alibeconf_8h_html_a27a9d78ae827ef885a4373fa591ded73"><div class="ttname"><a href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a></div><div class="ttdeci">#define econf_free(value)</div><div class="ttdoc">Generic macro to free memory allocated by econf_ functions.</div><div class="ttdef"><b>Definition</b> <a href="libeconf_8h_source.html#l00123">libeconf.h:123</a></div></div> <div class="ttc" id="alibeconf_8h_html_a30cb4e6c5ce4daa333646b23b20caa0a"><div class="ttname"><a href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a></div><div class="ttdeci">econf_err</div><div class="ttdoc">libeconf error codes</div><div class="ttdef"><b>Definition</b> <a href="libeconf_8h_source.html#l00041">libeconf.h:41</a></div></div> <div class="ttc" id="alibeconf_8h_html_aa03377bd02882239b3342c095f916561"><div class="ttname"><a href="#aa03377bd02882239b3342c095f916561">econf_readFile</a></div><div class="ttdeci">econf_err econf_readFile(econf_file **result, const char *file_name, const char *delim, const char *comment)</div><div class="ttdoc">Process the file of the given file_name and save its contents into key_file object.</div></div> </div><!-- fragment --> </div> </div> <a id="a6bf61969ee7ea191fdd28b0c8de5761d" name="a6bf61969ee7ea191fdd28b0c8de5761d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6bf61969ee7ea191fdd28b0c8de5761d">◆ </a></span>econf_readFileWithCallback()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readFileWithCallback </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>file_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool(*</td> <td class="paramname"><span class="paramname"><em>callback </em></span>)(const char *filename, const void *data), </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>callback_data</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Process the file of the given file_name and save its contents into key_file object. </p> <p>The user defined function will be called in order e.g. to check the correct file permissions.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">result</td><td>content of parsed file. </td></tr> <tr><td class="paramname">file_name</td><td>absolute path of parsed file </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =". If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> <tr><td class="paramname">callback</td><td>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. </td></tr> <tr><td class="paramname">callback_data</td><td>pointer which will be given to the callback function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Usage: </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><span class="keywordtype">bool</span> checkFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">void</span> *data) {</div> <div class="line"> - checking code which returns <span class="keyword">true</span> or <span class="keyword">false</span> -</div> <div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> <div class="line">}</div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#a6bf61969ee7ea191fdd28b0c8de5761d">econf_readFileWithCallback</a> (&key_file, <span class="stringliteral">"/etc/test.conf"</span>, <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>, checkFile, NULL);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_a6bf61969ee7ea191fdd28b0c8de5761d"><div class="ttname"><a href="#a6bf61969ee7ea191fdd28b0c8de5761d">econf_readFileWithCallback</a></div><div class="ttdeci">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)</div><div class="ttdoc">Process the file of the given file_name and save its contents into key_file object.</div></div> </div><!-- fragment --><p>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 option JOIN_SAME_ENTRIES (see econf_newKeyFile_with_options). In that case entries with the same name will be joined to one single entry. </p> </div> </div> <a id="a2aba75b3474b33173edbc0f80b2e8a79" name="a2aba75b3474b33173edbc0f80b2e8a79"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2aba75b3474b33173edbc0f80b2e8a79">◆ </a></span>econf_mergeFiles()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_mergeFiles </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>merged_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>usr_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>etc_file</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Merge the contents of two key_files objects. </p> <p>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.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">merged_file</td><td>merged data </td></tr> <tr><td class="paramname">usr_file</td><td>First data block which has to be merged. </td></tr> <tr><td class="paramname">etc_file</td><td>Second data block which has to be merged. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Usage: </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file_1 = NULL, *key_file_2 = NULL, *key_file_ret = NULL</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#aa03377bd02882239b3342c095f916561">econf_readFile</a> (&key_file1, <span class="stringliteral">"/usr/etc/test.conf"</span>, <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>);</div> <div class="line">error = <a class="code hl_function" href="#aa03377bd02882239b3342c095f916561">econf_readFile</a> (&key_file2, /etc/test.conf<span class="stringliteral">", "</span>=<span class="stringliteral">", "</span>#<span class="stringliteral">");</span></div> <div class="line"><span class="stringliteral">error = econf_mergeFiles (&key_file_ret, key_file_1, key_file_2);</span></div> <div class="line"><span class="stringliteral"></span> </div> <div class="line"><span class="stringliteral">econf_free (key_file_ret);</span></div> <div class="line"><span class="stringliteral">econf_free (key_file_1);</span></div> <div class="line"><span class="stringliteral">econf_free (key_file_2);</span></div> </div><!-- fragment --> </div> </div> <a id="a0ed2af8bb1d8f4563a9ac5c83a798881" name="a0ed2af8bb1d8f4563a9ac5c83a798881"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0ed2af8bb1d8f4563a9ac5c83a798881">◆ </a></span>econf_readConfig()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readConfig </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>project</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_subdir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating key/values of a given configuration by reading and merging all needed/available files from different directories. </p> <p>Order is:</p> <p>/etc/$project/$config_name.$config_suffix does exist:</p> <ul> <li>/etc/$project/$config_name.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>/etc/$project/$config_name.$config_suffix does NOT exist:</p> <p>/run/$project/$config_name.$config_suffix does exist:</p> <ul> <li>/run/$project/$config_name.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>/run/$project/$config_name.$config_suffix does NOT exist:</p> <ul> <li>$usr_subdir/$project/$config_name.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>No main $config_name.$config_suffix file is defined or must not be parsed:</p> <ul> <li>$usr_subdir/$project.d/ *.$config_suffix</li> <li>/run/$project.d/ *.$config_suffix</li> <li>/etc/$project.d/ *.$config_suffix</li> </ul> <p>This call fulfills all requirements, defined by the Linux Userspace API (UAPI) Group chapter "Configuration Files Specification". See: <a href="https://uapi-group.org/specifications/specs/configuration_files_specification/">https://uapi-group.org/specifications/specs/configuration_files_specification/</a></p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>content of parsed file(s). MUST be initialized (e.g. with NULL). </td></tr> <tr><td class="paramname">project</td><td>name of the project used as subdirectory, can be NULL </td></tr> <tr><td class="paramname">usr_subdir</td><td>absolute path of the first directory (often "/usr/lib") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file. If it is NULL, drop-ins without a main configuration file will be parsed only. </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Example: Reading content in different cases in following order:</p> <p>/etc/foo/example.conf does exist:</p> <ul> <li>/etc/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <p>/etc/foo/example.conf does NOT exist:</p> <p>/run/foo/example.conf does exist:</p> <ul> <li>/run/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <p>/run/foo/example.conf does NOT exist:</p> <ul> <li>/usr/lib/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#a0ed2af8bb1d8f4563a9ac5c83a798881">econf_readConfig</a> (&key_file,</div> <div class="line"> <span class="stringliteral">"foo"</span>,</div> <div class="line"> <span class="stringliteral">"/usr/lib"</span>,</div> <div class="line"> <span class="stringliteral">"example"</span>,</div> <div class="line"> <span class="stringliteral">"conf"</span>,</div> <div class="line"> <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_a0ed2af8bb1d8f4563a9ac5c83a798881"><div class="ttname"><a href="#a0ed2af8bb1d8f4563a9ac5c83a798881">econf_readConfig</a></div><div class="ttdeci">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)</div><div class="ttdoc">Evaluating key/values of a given configuration by reading and merging all needed/available files from...</div></div> </div><!-- fragment --><p>It is also possible to set additional options for e.g. parsing config files which has python style format or defining the order how to parse the configuration files. For more information have a look to econf_newKeyFile_with_options. </p> </div> </div> <a id="ace4ad5a9fd48b5efae40d683d14cf313" name="ace4ad5a9fd48b5efae40d683d14cf313"></a> <h2 class="memtitle"><span class="permalink"><a href="#ace4ad5a9fd48b5efae40d683d14cf313">◆ </a></span>econf_readConfigWithCallback()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readConfigWithCallback </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>project</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_subdir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool(*</td> <td class="paramname"><span class="paramname"><em>callback </em></span>)(const char *filename, const void *data), </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>callback_data</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating key/values of a given configuration by reading and merging all needed/available files from different directories. </p> <p>Order is:</p> <p>/etc/$project/$config_name.$config_suffix does exist:</p> <ul> <li>/etc/$project/$config_name.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>/etc/$project/$config_name.$config_suffix does NOT exist:</p> <p>/run/$project/$config_name.$config_suffix does exist:</p> <ul> <li>/run/$project/$config_name.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>/run/$project/$config_name.$config_suffix does NOT exist:</p> <ul> <li>$usr_subdir/$project/$config_name.$config_suffix</li> <li>$usr_subdir/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/run/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> <li>/etc/$project/$config_name.$config_suffix.d/ *.$config_suffix</li> </ul> <p>No main $config_name.$config_suffix file is defined or must not be parsed:</p> <ul> <li>$usr_subdir/$project.d/ *.$config_suffix</li> <li>/run/$project.d/ *.$config_suffix</li> <li>/etc/$project.d/ *.$config_suffix</li> </ul> <p>For each parsed file the user defined function will be called in order e.g. to check the correct file permissions.</p> <p>This call fulfills all requirements, defined by the Linux Userspace API (UAPI) Group chapter "Configuration Files Specification". See: <a href="https://uapi-group.org/specifications/specs/configuration_files_specification/">https://uapi-group.org/specifications/specs/configuration_files_specification/</a></p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>content of parsed file(s). MUST be initialized (e.g. with NULL). </td></tr> <tr><td class="paramname">project</td><td>name of the project used as subdirectory, can be NULL </td></tr> <tr><td class="paramname">usr_subdir</td><td>absolute path of the first directory (often "/usr/lib") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file If it is NULL, drop-ins without a main configuration file will be parsed only. </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> <tr><td class="paramname">callback</td><td>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. </td></tr> <tr><td class="paramname">callback_data</td><td>pointer which will be given to the callback function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Example: Reading content in different cases in following order:</p> <p>/etc/foo/example.conf does exist:</p> <ul> <li>/etc/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <p>/etc/foo/example.conf does NOT exist:</p> <p>/run/foo/example.conf does exist:</p> <ul> <li>/run/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <p>/run/foo/example.conf does NOT exist:</p> <ul> <li>/usr/lib/foo/example.conf</li> <li>/usr/lib/foo/example.conf.d/ *.conf</li> <li>/run/foo/example.conf.d/ *.conf</li> <li>/etc/foo/example.conf.d/ *.conf</li> </ul> <div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><span class="keywordtype">bool</span> checkFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">void</span> *data) {</div> <div class="line"> - checking code which returns <span class="keyword">true</span> or <span class="keyword">false</span> -</div> <div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> <div class="line">}</div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#ace4ad5a9fd48b5efae40d683d14cf313">econf_readConfigWithCallback</a> (&key_file,</div> <div class="line"> <span class="stringliteral">"foo"</span>,</div> <div class="line"> <span class="stringliteral">"/usr/lib"</span>,</div> <div class="line"> <span class="stringliteral">"example"</span>,</div> <div class="line"> <span class="stringliteral">"conf"</span>,</div> <div class="line"> <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>,</div> <div class="line"> checkFile,</div> <div class="line"> NULL);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_ace4ad5a9fd48b5efae40d683d14cf313"><div class="ttname"><a href="#ace4ad5a9fd48b5efae40d683d14cf313">econf_readConfigWithCallback</a></div><div class="ttdeci">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)</div><div class="ttdoc">Evaluating key/values of a given configuration by reading and merging all needed/available files from...</div></div> </div><!-- fragment --><p>It is also possible to set additional options for e.g. parsing config files which has python style format or defining the order how to parse the configuration files. For more information have a look to econf_newKeyFile_with_options. </p> </div> </div> <a id="a42f74209e586b194b1f966f5381ce827" name="a42f74209e586b194b1f966f5381ce827"></a> <h2 class="memtitle"><span class="permalink"><a href="#a42f74209e586b194b1f966f5381ce827">◆ </a></span>econf_readDirs()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readDirs </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>etc_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>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). </p> <p>DEPRECATED: Use the econf_readConfig/econf_readConfigWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>content of parsed file(s). </td></tr> <tr><td class="paramname">usr_conf_dir</td><td>absolute path of the first directory (normally "/usr/etc") </td></tr> <tr><td class="paramname">etc_conf_dir</td><td>absolute path of the second directory (normally "/etc") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Example: Reading content of example.conf in /usr/etc and /etc directory. </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#a42f74209e586b194b1f966f5381ce827">econf_readDirs</a> (&key_file,</div> <div class="line"> <span class="stringliteral">"/usr/etc"</span>,</div> <div class="line"> <span class="stringliteral">"/etc"</span>,</div> <div class="line"> <span class="stringliteral">"example"</span>,</div> <div class="line"> <span class="stringliteral">"conf"</span>,</div> <div class="line"> <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_a42f74209e586b194b1f966f5381ce827"><div class="ttname"><a href="#a42f74209e586b194b1f966f5381ce827">econf_readDirs</a></div><div class="ttdeci">econf_err econf_readDirs(econf_file **key_file, const char *usr_conf_dir, const char *etc_conf_dir, const char *config_name, const char *config_suffix, const char *delim, const char *comment)</div><div class="ttdoc">Evaluating key/values of a given configuration by reading and merging all needed/available files in t...</div></div> </div><!-- fragment --> </div> </div> <a id="a910efcd721aa9a2cdbafeb187479a923" name="a910efcd721aa9a2cdbafeb187479a923"></a> <h2 class="memtitle"><span class="permalink"><a href="#a910efcd721aa9a2cdbafeb187479a923">◆ </a></span>econf_readDirsWithCallback()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readDirsWithCallback </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>etc_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool(*</td> <td class="paramname"><span class="paramname"><em>callback </em></span>)(const char *filename, const void *data), </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>callback_data</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). </p> <p>For each parsed file the user defined function will be called in order e.g. to check the correct file permissions. DEPRECATED: Use the econf_readConfig/econf_readConfigWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>content of parsed file(s). </td></tr> <tr><td class="paramname">usr_conf_dir</td><td>absolute path of the first directory (normally "/usr/etc") </td></tr> <tr><td class="paramname">etc_conf_dir</td><td>absolute path of the second directory (normally "/etc") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> <tr><td class="paramname">callback</td><td>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. </td></tr> <tr><td class="paramname">callback_data</td><td>pointer which will be given to the callback function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Example: Reading content of example.conf in /usr/etc and /etc directory. </p><div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><span class="keywordtype">bool</span> checkFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">void</span> *data) {</div> <div class="line"> - checking code which returns <span class="keyword">true</span> or <span class="keyword">false</span> -</div> <div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> <div class="line">}</div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#a910efcd721aa9a2cdbafeb187479a923">econf_readDirsWithCallback</a> (&key_file,</div> <div class="line"> <span class="stringliteral">"/usr/etc"</span>,</div> <div class="line"> <span class="stringliteral">"/etc"</span>,</div> <div class="line"> <span class="stringliteral">"example"</span>,</div> <div class="line"> <span class="stringliteral">"conf"</span>,</div> <div class="line"> <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>,</div> <div class="line"> checkFile,</div> <div class="line"> NULL);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_a910efcd721aa9a2cdbafeb187479a923"><div class="ttname"><a href="#a910efcd721aa9a2cdbafeb187479a923">econf_readDirsWithCallback</a></div><div class="ttdeci">econf_err econf_readDirsWithCallback(econf_file **key_file, const char *usr_conf_dir, const char *etc_conf_dir, 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)</div><div class="ttdoc">Evaluating key/values for every given configuration files in two different directories (normally in /...</div></div> </div><!-- fragment --> </div> </div> <a id="a64407a0ea75bbfb09d0af8fdb991c40b" name="a64407a0ea75bbfb09d0af8fdb991c40b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a64407a0ea75bbfb09d0af8fdb991c40b">◆ </a></span>econf_readDirsHistory()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readDirsHistory </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> ***</td> <td class="paramname"><span class="paramname"><em>key_files</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>etc_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). </p> <p>Returns a list of read configuration files and their values.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_files</td><td>list of parsed file(s). Each entry includes all key/value, path, comments,... information of the regarding file. </td></tr> <tr><td class="paramname">size</td><td>Size of the evaluated key_files list. </td></tr> <tr><td class="paramname">usr_conf_dir</td><td>absolute path of the first directory (normally "/usr/etc") </td></tr> <tr><td class="paramname">etc_conf_dir</td><td>absolute path of the second directory (normally "/etc") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a3e99ddefa0267f8c9f7bf04a44968f93" name="a3e99ddefa0267f8c9f7bf04a44968f93"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3e99ddefa0267f8c9f7bf04a44968f93">◆ </a></span>econf_readDirsHistoryWithCallback()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_readDirsHistoryWithCallback </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> ***</td> <td class="paramname"><span class="paramname"><em>key_files</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>usr_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>etc_conf_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_name</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>config_suffix</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>delim</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>comment</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool(*</td> <td class="paramname"><span class="paramname"><em>callback </em></span>)(const char *filename, const void *data), </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>callback_data</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating key/values for every given configuration files in two different directories (normally in /usr/etc and /etc). </p> <p>For each parsed file the user defined function will be called in order e.g. to check the correct file permissions. Returns a list of read configuration files and their values.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_files</td><td>list of parsed file(s). Each entry includes all key/value, path, comments,... information of the regarding file. </td></tr> <tr><td class="paramname">size</td><td>Size of the evaluated key_files list. </td></tr> <tr><td class="paramname">usr_conf_dir</td><td>absolute path of the first directory (normally "/usr/etc") </td></tr> <tr><td class="paramname">etc_conf_dir</td><td>absolute path of the second directory (normally "/etc") </td></tr> <tr><td class="paramname">config_name</td><td>basename of the configuration file </td></tr> <tr><td class="paramname">config_suffix</td><td>suffix of the configuration file. Can also be NULL. </td></tr> <tr><td class="paramname">delim</td><td>delimiters of key/value e.g. "\t =" If delim contains space characters AND none space characters, multiline values are not parseable. </td></tr> <tr><td class="paramname">comment</td><td>array of characters which define the start of a comment </td></tr> <tr><td class="paramname">callback</td><td>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. </td></tr> <tr><td class="paramname">callback_data</td><td>pointer which will be given to the callback function. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a94f42f580d8c9dff8cdb01a5c91bb5ec" name="a94f42f580d8c9dff8cdb01a5c91bb5ec"></a> <h2 class="memtitle"><span class="permalink"><a href="#a94f42f580d8c9dff8cdb01a5c91bb5ec">◆ </a></span>econf_newKeyFile()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_newKeyFile </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char</td> <td class="paramname"><span class="paramname"><em>delimiter</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">result</td><td>Pointer to the allocated <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> <tr><td class="paramname">delimiter</td><td>delimiter of key/value e.g. "=" </td></tr> <tr><td class="paramname">comment</td><td>Character which defines the start of a comment. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a6bc0961dd90471bebae2f606d3db972d" name="a6bc0961dd90471bebae2f606d3db972d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6bc0961dd90471bebae2f606d3db972d">◆ </a></span>econf_newKeyFile_with_options()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_newKeyFile_with_options </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>options</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object with special options. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">result</td><td>Pointer to the allocated <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> <tr><td class="paramname">options</td><td>defined as a string separated by ";" format "<key>=<value>"; e.g. "JOIN_SAME_ENTRIES=1" </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>Following options are supported: JOIN_SAME_ENTRIES (default 0) Parsed entries with the same name will not be replaces but will be joined to one entry. PYTHON_STYLE (default 0) E.G. Identations will be handled like multiline entries. PARSING_DIRS (default /usr/etc/:/run:/etc) List of directories from which the configuration files have to be parsed. The list is a string, divides by ":". The last entry has the highest priority. E.g.: "PARSING_DIRS=/usr/etc/:/run:/etc" CONFIG_DIRS (default <empty>) List of directory structures (with order) which describes the directories in which the files have to be parsed. The list is a string, divides by ":". The last entry has the highest priority. E.g. with the given list: "CONFIG_DIRS=.conf.d:.d" files in following directories will be parsed: "<default_dirs>/<config_name>.conf.d/" "<default_dirs>/<config_name>.d/" "<default_dirs>/<config_name>/" ROOT_PREFIX (default <empty>) Directory prefix used for all search directories if specified.</p> <p>e.g. Parsing configuration files written in python style:</p> <div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="libeconf_8h.html">libeconf.h</a>"</span></div> <div class="line"> </div> <div class="line"><a class="code hl_typedef" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *key_file = NULL;</div> <div class="line"><a class="code hl_enumeration" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> error;</div> <div class="line"> </div> <div class="line"><span class="keywordflow">if</span> (error = <a class="code hl_function" href="#a6bc0961dd90471bebae2f606d3db972d">econf_newKeyFile_with_options</a>(&key_file, <span class="stringliteral">"PYTHON_STYLE=1"</span>))</div> <div class="line">{</div> <div class="line"> fprintf (stderr, <span class="stringliteral">"ERROR: couldn't create new key file: %s\n"</span>,</div> <div class="line"> <a class="code hl_function" href="#a1a78a570d9d947cebf347bf9e41a6637">econf_errString</a>(error));</div> <div class="line"> <span class="keywordflow">return</span> 1;</div> <div class="line">}</div> <div class="line"> </div> <div class="line">error = <a class="code hl_function" href="#a0ed2af8bb1d8f4563a9ac5c83a798881">econf_readConfig</a> (&key_file,</div> <div class="line"> <span class="stringliteral">"foo"</span>,</div> <div class="line"> <span class="stringliteral">"/usr/lib"</span>,</div> <div class="line"> <span class="stringliteral">"example"</span>,</div> <div class="line"> <span class="stringliteral">"conf"</span>,</div> <div class="line"> <span class="stringliteral">"="</span>, <span class="stringliteral">"#"</span>);</div> <div class="line"> </div> <div class="line"><a class="code hl_define" href="#a27a9d78ae827ef885a4373fa591ded73">econf_free</a> (key_file);</div> <div class="line">key_file = NULL;</div> <div class="ttc" id="alibeconf_8h_html_a1a78a570d9d947cebf347bf9e41a6637"><div class="ttname"><a href="#a1a78a570d9d947cebf347bf9e41a6637">econf_errString</a></div><div class="ttdeci">const char * econf_errString(const econf_err error)</div><div class="ttdoc">Convert an econf_err type to a string.</div></div> <div class="ttc" id="alibeconf_8h_html_a6bc0961dd90471bebae2f606d3db972d"><div class="ttname"><a href="#a6bc0961dd90471bebae2f606d3db972d">econf_newKeyFile_with_options</a></div><div class="ttdeci">econf_err econf_newKeyFile_with_options(econf_file **result, const char *options)</div><div class="ttdoc">Create a new econf_file object with special options.</div></div> </div><!-- fragment --> </div> </div> <a id="a0b7c823419269683749a7394e776b22c" name="a0b7c823419269683749a7394e776b22c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0b7c823419269683749a7394e776b22c">◆ </a></span>econf_newIniFile()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_newIniFile </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>result</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Create a new <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object in IniFile format. </p> <p>So the delimiter will be "=" and comments are beginning with "#".</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">result</td><td>Pointer to the allocated <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a5d24ab3c1515a2a0cf4668221a0ee6f7" name="a5d24ab3c1515a2a0cf4668221a0ee6f7"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5d24ab3c1515a2a0cf4668221a0ee6f7">◆ </a></span>econf_comment_tag()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">char econf_comment_tag </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns the comment character tag of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </p> <p>This tag will be taken while writing comments to file.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>char comment character tag </dd></dl> </div> </div> <a id="a2fa45814606cac4dc4abdfe462f8ee70" name="a2fa45814606cac4dc4abdfe462f8ee70"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2fa45814606cac4dc4abdfe462f8ee70">◆ </a></span>econf_delimiter_tag()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">char econf_delimiter_tag </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns the delimiter character of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </p> <p>This delimiter will be taken while writing the data to file.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>char delimiter of key/value </dd></dl> </div> </div> <a id="a1dc59b13a0293943b10dfc09e6daba09" name="a1dc59b13a0293943b10dfc09e6daba09"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1dc59b13a0293943b10dfc09e6daba09">◆ </a></span>econf_set_comment_tag()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_set_comment_tag </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char</td> <td class="paramname"><span class="paramname"><em>comment</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set the comment character tag of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </p> <p>This tag will be taken while writing comments to file.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> <tr><td class="paramname">comment</td><td>comment tag </td></tr> </table> </dd> </dl> </div> </div> <a id="aa14d17dc8e3ebc26e155ceb2d497ad14" name="aa14d17dc8e3ebc26e155ceb2d497ad14"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa14d17dc8e3ebc26e155ceb2d497ad14">◆ </a></span>econf_set_delimiter_tag()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_set_delimiter_tag </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char</td> <td class="paramname"><span class="paramname"><em>delimiter</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set the delimiter character of the given <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </p> <p>This delimiter will be taken while writing the data to file.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> object. </td></tr> <tr><td class="paramname">delimiter</td><td>delimiter of key/value </td></tr> </table> </dd> </dl> </div> </div> <a id="a5f1e5a7c748ef9147fc7d16604904171" name="a5f1e5a7c748ef9147fc7d16604904171"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5f1e5a7c748ef9147fc7d16604904171">◆ </a></span>econf_writeFile()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_writeFile </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>save_to_dir</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>file_name</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Write content of an <a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> struct to specified location. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>Data which has to be written. </td></tr> <tr><td class="paramname">save_to_dir</td><td>Directory into which the file has to be written. </td></tr> <tr><td class="paramname">file_name</td><td>filename (with suffix) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="aeabac456f1ceda392b616bb851dc6082" name="aeabac456f1ceda392b616bb851dc6082"></a> <h2 class="memtitle"><span class="permalink"><a href="#aeabac456f1ceda392b616bb851dc6082">◆ </a></span>econf_getPath()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">char * econf_getPath </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating path name. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Absolute path name or an empty string if kf is a result of already merged data (e.G. returned by econf_readDirs). </dd></dl> </div> </div> <a id="aa9f93a7e119c37ee3a49d1ad11936533" name="aa9f93a7e119c37ee3a49d1ad11936533"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa9f93a7e119c37ee3a49d1ad11936533">◆ </a></span>econf_getGroups()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getGroups </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ***</td> <td class="paramname"><span class="paramname"><em>groups</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating all group entries. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">length</td><td>Length of the returned group array. </td></tr> <tr><td class="paramname">groups</td><td>String array of evaluated groups. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="afa58b02e97241c5e8d778f40b04731b7" name="afa58b02e97241c5e8d778f40b04731b7"></a> <h2 class="memtitle"><span class="permalink"><a href="#afa58b02e97241c5e8d778f40b04731b7">◆ </a></span>econf_getKeys()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getKeys </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>length</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ***</td> <td class="paramname"><span class="paramname"><em>keys</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating all keys. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Group name for which the keys have to be evaluated or NULL for all keys. </td></tr> <tr><td class="paramname">length</td><td>Length of the returned key array. </td></tr> <tr><td class="paramname">keys</td><td>String array of evaluated keys. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="acdf4785ef2a5b411fdb4f63ea5b05fbc" name="acdf4785ef2a5b411fdb4f63ea5b05fbc"></a> <h2 class="memtitle"><span class="permalink"><a href="#acdf4785ef2a5b411fdb4f63ea5b05fbc">◆ </a></span>econf_getIntValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getIntValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating int32 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a80f117888ae88f796ba8785294ee76cd" name="a80f117888ae88f796ba8785294ee76cd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a80f117888ae88f796ba8785294ee76cd">◆ </a></span>econf_getInt64Value()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getInt64Value </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating int64 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="af9ebb2c80265505d7fec80bc3ba08f06" name="af9ebb2c80265505d7fec80bc3ba08f06"></a> <h2 class="memtitle"><span class="permalink"><a href="#af9ebb2c80265505d7fec80bc3ba08f06">◆ </a></span>econf_getUIntValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getUIntValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint32_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating uint32 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a413472061e0ed9897eac190d4f3b30b2" name="a413472061e0ed9897eac190d4f3b30b2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a413472061e0ed9897eac190d4f3b30b2">◆ </a></span>econf_getUInt64Value()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getUInt64Value </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating uint64 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a56c631b316987132609b07b1e6df6e18" name="a56c631b316987132609b07b1e6df6e18"></a> <h2 class="memtitle"><span class="permalink"><a href="#a56c631b316987132609b07b1e6df6e18">◆ </a></span>econf_getFloatValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getFloatValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating float value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="ad082e9c8bd148f6e984b6179b1c64ae9" name="ad082e9c8bd148f6e984b6179b1c64ae9"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad082e9c8bd148f6e984b6179b1c64ae9">◆ </a></span>econf_getDoubleValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getDoubleValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating double value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="abfe33ab2f7b5259cda5b71d488f46ab0" name="abfe33ab2f7b5259cda5b71d488f46ab0"></a> <h2 class="memtitle"><span class="permalink"><a href="#abfe33ab2f7b5259cda5b71d488f46ab0">◆ </a></span>econf_getStringValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getStringValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char **</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating string value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>A newly allocated string or NULL in error case. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a76c652840d8dfcc03de8113a7cfebc13" name="a76c652840d8dfcc03de8113a7cfebc13"></a> <h2 class="memtitle"><span class="permalink"><a href="#a76c652840d8dfcc03de8113a7cfebc13">◆ </a></span>econf_getBoolValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getBoolValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool *</td> <td class="paramname"><span class="paramname"><em>result</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating bool value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="af6fc2727600785ecb4b1cb6652231ce6" name="af6fc2727600785ecb4b1cb6652231ce6"></a> <h2 class="memtitle"><span class="permalink"><a href="#af6fc2727600785ecb4b1cb6652231ce6">◆ </a></span>econf_getIntValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getIntValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const int32_t</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating int32 value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a0e25d09069dd273119c0549b3e81f5c9" name="a0e25d09069dd273119c0549b3e81f5c9"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0e25d09069dd273119c0549b3e81f5c9">◆ </a></span>econf_getInt64ValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getInt64ValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const int64_t</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating int64 value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a34204abad15dee193af27d6368e8fffe" name="a34204abad15dee193af27d6368e8fffe"></a> <h2 class="memtitle"><span class="permalink"><a href="#a34204abad15dee193af27d6368e8fffe">◆ </a></span>econf_getUIntValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getUIntValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint32_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const uint32_t</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating uint32 value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="ad05f83477777820e3af4b6b1b96c31b0" name="ad05f83477777820e3af4b6b1b96c31b0"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad05f83477777820e3af4b6b1b96c31b0">◆ </a></span>econf_getUInt64ValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getUInt64ValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const uint64_t</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating uint64 value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="aecd3ff6d01bc8dae14eb0717a6f4963e" name="aecd3ff6d01bc8dae14eb0717a6f4963e"></a> <h2 class="memtitle"><span class="permalink"><a href="#aecd3ff6d01bc8dae14eb0717a6f4963e">◆ </a></span>econf_getFloatValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getFloatValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const float</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating float value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a2e2059c7f8d77adc964356c9af1600a4" name="a2e2059c7f8d77adc964356c9af1600a4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2e2059c7f8d77adc964356c9af1600a4">◆ </a></span>econf_getDoubleValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getDoubleValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const double</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating double value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="aca086c8a60b7d14c2d3fdf06460aab1c" name="aca086c8a60b7d14c2d3fdf06460aab1c"></a> <h2 class="memtitle"><span class="permalink"><a href="#aca086c8a60b7d14c2d3fdf06460aab1c">◆ </a></span>econf_getStringValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getStringValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char **</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating string value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>Returns a newly allocated string, even if "default" is returned. </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="af6b9d3d3880b432f255ef35928938ef6" name="af6b9d3d3880b432f255ef35928938ef6"></a> <h2 class="memtitle"><span class="permalink"><a href="#af6b9d3d3880b432f255ef35928938ef6">◆ </a></span>econf_getBoolValueDef()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_getBoolValueDef </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool *</td> <td class="paramname"><span class="paramname"><em>result</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const bool</td> <td class="paramname"><span class="paramname"><em>def</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Evaluating bool value for given group/key. </p> <p>If key is not found, the default value is returned and error is ECONF_NOKEY.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value is requested. </td></tr> <tr><td class="paramname">result</td><td>determined value </td></tr> <tr><td class="paramname">def</td><td>Default value if the value has not been found. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a9eba99cc942620012cd76d7fd487c599" name="a9eba99cc942620012cd76d7fd487c599"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9eba99cc942620012cd76d7fd487c599">◆ </a></span>econf_setIntValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setIntValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int32_t</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set int32 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a2fe1e47b604fa259e1fd879bbdc0a347" name="a2fe1e47b604fa259e1fd879bbdc0a347"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2fe1e47b604fa259e1fd879bbdc0a347">◆ </a></span>econf_setInt64Value()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setInt64Value </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set int64 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a43baa061fcd4f770e2d8e12d3ee58f6e" name="a43baa061fcd4f770e2d8e12d3ee58f6e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a43baa061fcd4f770e2d8e12d3ee58f6e">◆ </a></span>econf_setUIntValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setUIntValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set uint32 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a0e4050978c3ed94332f8e82862fa4b62" name="a0e4050978c3ed94332f8e82862fa4b62"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0e4050978c3ed94332f8e82862fa4b62">◆ </a></span>econf_setUInt64Value()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setUInt64Value </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set uint64 value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a836b5196842a134fc370c7bc24ffefcb" name="a836b5196842a134fc370c7bc24ffefcb"></a> <h2 class="memtitle"><span class="permalink"><a href="#a836b5196842a134fc370c7bc24ffefcb">◆ </a></span>econf_setFloatValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setFloatValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set float value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a1ba57afda092a5a591f3cbc14a00caf6" name="a1ba57afda092a5a591f3cbc14a00caf6"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1ba57afda092a5a591f3cbc14a00caf6">◆ </a></span>econf_setDoubleValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setDoubleValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set double value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a808d966041916c3de263a79a6b4983c5" name="a808d966041916c3de263a79a6b4983c5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a808d966041916c3de263a79a6b4983c5">◆ </a></span>econf_setStringValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setStringValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set string value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a3f873713848631a5ded240479af96de4" name="a3f873713848631a5ded240479af96de4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3f873713848631a5ded240479af96de4">◆ </a></span>econf_setBoolValue()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_setBoolValue </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>kf</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>group</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>key</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>value</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set bool value for given group/key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">kf</td><td>given/parsed data </td></tr> <tr><td class="paramname">group</td><td>Desired group or NULL if there is no group defined. </td></tr> <tr><td class="paramname">key</td><td>Key for which the value has to be set. </td></tr> <tr><td class="paramname">value</td><td>Value which has to be set. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code </dd></dl> </div> </div> <a id="a1a78a570d9d947cebf347bf9e41a6637" name="a1a78a570d9d947cebf347bf9e41a6637"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1a78a570d9d947cebf347bf9e41a6637">◆ </a></span>econf_errString()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const char * econf_errString </td> <td>(</td> <td class="paramtype">const <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a></td> <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Convert an <a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> type to a string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">error</td><td>error enum </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>human readable string </dd></dl> </div> </div> <a id="adc459d1dfa9096425d4f248b04669761" name="adc459d1dfa9096425d4f248b04669761"></a> <h2 class="memtitle"><span class="permalink"><a href="#adc459d1dfa9096425d4f248b04669761">◆ </a></span>econf_errLocation()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_errLocation </td> <td>(</td> <td class="paramtype">char **</td> <td class="paramname"><span class="paramname"><em>filename</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint64_t *</td> <td class="paramname"><span class="paramname"><em>line_nr</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Info about where the error has happened. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">filename</td><td>Path of the last scanned file. </td></tr> <tr><td class="paramname">line_nr</td><td>Number of the last handled line. </td></tr> </table> </dd> </dl> </div> </div> <a id="ac7076da6784af251dc166461bd3ba40a" name="ac7076da6784af251dc166461bd3ba40a"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac7076da6784af251dc166461bd3ba40a">◆ </a></span>econf_freeArray()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">char ** econf_freeArray </td> <td>(</td> <td class="paramtype">char **</td> <td class="paramname"><span class="paramname"><em>array</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Free an array of type char** created by <a class="el" href="#aa9f93a7e119c37ee3a49d1ad11936533" title="Evaluating all group entries.">econf_getGroups()</a> or <a class="el" href="#afa58b02e97241c5e8d778f40b04731b7" title="Evaluating all keys.">econf_getKeys()</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">array</td><td>array of strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a411af7792e1d014566efdcff1e1eafc0" name="a411af7792e1d014566efdcff1e1eafc0"></a> <h2 class="memtitle"><span class="permalink"><a href="#a411af7792e1d014566efdcff1e1eafc0">◆ </a></span>econf_freeArrayp()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">__inline__ void econf_freeArrayp </td> <td>(</td> <td class="paramtype">char ***</td> <td class="paramname"><span class="paramname"><em>array</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel static">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l01093">1093</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a id="a3bdb79dab514bb4f51c610bc028d54f4" name="a3bdb79dab514bb4f51c610bc028d54f4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3bdb79dab514bb4f51c610bc028d54f4">◆ </a></span>econf_freeFile()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> * econf_freeFile </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> *</td> <td class="paramname"><span class="paramname"><em>key_file</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Free memory allocated and returned by <a class="el" href="#aa03377bd02882239b3342c095f916561" title="Process the file of the given file_name and save its contents into key_file object.">econf_readFile()</a>, econf_readFileWithCallback, <a class="el" href="#a42f74209e586b194b1f966f5381ce827" title="Evaluating key/values of a given configuration by reading and merging all needed/available files in t...">econf_readDirs()</a>, econf_readDirsWithCallback, econf_readDirsHistory, econf_readDirsHistoryWithCallback, econf_readConfig, econf_readConfigWithCallback. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key_file</td><td>allocated data </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a9e75bcdee979ef8a6584f3553202aa17" name="a9e75bcdee979ef8a6584f3553202aa17"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9e75bcdee979ef8a6584f3553202aa17">◆ </a></span>econf_freeFilep()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">__inline__ void econf_freeFilep </td> <td>(</td> <td class="paramtype"><a class="el" href="#a0d29e6d5c6c6d151bb3edc54019c8735">econf_file</a> **</td> <td class="paramname"><span class="paramname"><em>key_file</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel static">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="libeconf_8h_source.html#l01111">1111</a> of file <a class="el" href="libeconf_8h_source.html">libeconf.h</a>.</p> </div> </div> <a id="ab9cf0bcce775cd0d03dcb9bbba534087" name="ab9cf0bcce775cd0d03dcb9bbba534087"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab9cf0bcce775cd0d03dcb9bbba534087">◆ </a></span>econf_requireOwner()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_requireOwner </td> <td>(</td> <td class="paramtype">uid_t</td> <td class="paramname"><span class="paramname"><em>owner</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>All parsed files require this user permission. </p> <p>DEPRECATED: Use the callback in econf_readFileWithCallback or econf_readConfigWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">owner</td><td>User ID </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a4b9a4f31d04c7ea2087173f7877ec223" name="a4b9a4f31d04c7ea2087173f7877ec223"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4b9a4f31d04c7ea2087173f7877ec223">◆ </a></span>econf_requireGroup()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_requireGroup </td> <td>(</td> <td class="paramtype">gid_t</td> <td class="paramname"><span class="paramname"><em>group</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>All parsed files require this group permission. </p> <p>DEPRECATED: Use the callback in econf_readFileWithCallback, econf_readDirsWithCallback or econf_readDirsHistoryWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">group</td><td>Group ID </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a3378794c25da9179c98671b082f4fdd4" name="a3378794c25da9179c98671b082f4fdd4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3378794c25da9179c98671b082f4fdd4">◆ </a></span>econf_requirePermissions()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_requirePermissions </td> <td>(</td> <td class="paramtype">mode_t</td> <td class="paramname"><span class="paramname"><em>file_perms</em></span>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">mode_t</td> <td class="paramname"><span class="paramname"><em>dir_perms</em></span> )</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>All parsed file have to have these file and directory permissions. </p> <p>DEPRECATED: Use the callback in econf_readFileWithCallback or econf_readConfigWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">file_perms</td><td>file permissions </td></tr> <tr><td class="paramname">dir_perms</td><td>dir permissions </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a1d7cc79ac8b7a3ba1253cc24dcc82949" name="a1d7cc79ac8b7a3ba1253cc24dcc82949"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1d7cc79ac8b7a3ba1253cc24dcc82949">◆ </a></span>econf_followSymlinks()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_followSymlinks </td> <td>(</td> <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>allow</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Allowing the parser to follow sym links (default: true). </p> <p>DEPRECATED: Use the callback in econf_readFileWithCallback or econf_readConfigWithCallback instead.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allow</td><td>allow to follow sym links. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="ac2c27395368eddbc50c1dc7736bbcf49" name="ac2c27395368eddbc50c1dc7736bbcf49"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac2c27395368eddbc50c1dc7736bbcf49">◆ </a></span>econf_reset_security_settings()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void econf_reset_security_settings </td> <td>(</td> <td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Reset all UID, GID, permissions,... restrictions for parsed files/dirs. </p> <p>DEPRECATED: Use the callback in econf_readFileWithCallback or econf_readConfigWithCallback instead. instead.</p> <dl class="section return"><dt>Returns</dt><dd>void </dd></dl> </div> </div> <a id="a0466a16c30cfcd58ec6201d210c64731" name="a0466a16c30cfcd58ec6201d210c64731"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0466a16c30cfcd58ec6201d210c64731">◆ </a></span>econf_set_conf_dirs()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a">econf_err</a> econf_set_conf_dirs </td> <td>(</td> <td class="paramtype">const char **</td> <td class="paramname"><span class="paramname"><em>dir_postfix_list</em></span></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel extern">extern</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Set a list of directory structures (with order) which describes the directories in which the files have to be parsed. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">dir_postfix_list</td><td>list of directory structures. E.G. with the given list: {"conf.d", ".d", "/", NULL} files in following directories will be parsed: "<default_dirs>/<config_name>.conf.d/" "<default_dirs>/<config_name>.d/" "<default_dirs>/<config_name>/"</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><a class="el" href="#a30cb4e6c5ce4daa333646b23b20caa0a" title="libeconf error codes">econf_err</a> ECONF_SUCCESS or error code</dd></dl> <p>CAUTION: These options are NOT TRHEAD-SAFE because they are set globally in libeconf. Individual setting set with econf_newKeyFile_with_options have higher priority and are trhead-safe. </p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <div id="page-nav" class="page-nav-panel"> <div id="page-nav-resize-handle"></div> <div id="page-nav-tree"> <div id="page-nav-contents"> </div><!-- page-nav-contents --> </div><!-- page-nav-tree --> </div><!-- page-nav --> </div><!-- container --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a href="libeconf_8h.html">libeconf.h</a></li> <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li> </ul> </div> </body> </html>