Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 1981b34f021c1f7237fce57ba36850a9 > files > 17

libini_config-devel-0.6.2-5.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libini_config: Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.4 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libini_config&#160;<span id="projectnumber">0.1.3</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Functions</div>  </div>
<div class="ingroups"><a class="el" href="group__ini__config.html">INI configuration interface</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga159fe77c7ea83c613c0a062d57f047c8">parsing_error_str</a> (int parsing_error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to return a parsing error as a string.  <a href="#ga159fe77c7ea83c613c0a062d57f047c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaad1a6dd24dfbdc8d39e8deb10b72530d">config_from_file</a> (const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read configuration information from a file.  <a href="#gaad1a6dd24dfbdc8d39e8deb10b72530d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga7545be0dd3de836cdb15b40cd0ac2a8b">config_from_fd</a> (const char *application, int fd, const char *config_source, struct collection_item **ini_config, int error_level, struct collection_item **error_list)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read configuration information from a file descriptor.  <a href="#ga7545be0dd3de836cdb15b40cd0ac2a8b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga7a560eb8fcdc050c82d41981d45e4db7">config_from_file_with_metadata</a> (const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read configuration information from a file with additional meta data.  <a href="#ga7a560eb8fcdc050c82d41981d45e4db7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gabdc86bc7995ff6b3e4b1c0938afea582">config_from_fd_with_metadata</a> (const char *application, int fd, const char *config_source, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read configuration information from a file descriptor with additional meta data.  <a href="#gabdc86bc7995ff6b3e4b1c0938afea582"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga51ca9d58f8a9d17da33aeebb6286db26">config_for_app</a> (const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read default configuration file and then overwrite it with a specific one from the directory.  <a href="#ga51ca9d58f8a9d17da33aeebb6286db26"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gad436b9a8d99658366c24edbed39a3cac">config_for_app_with_metadata</a> (const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set, uint32_t metaflags, struct collection_item **meta_default, struct collection_item **meta_appini)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read default configuration file and then overwrite it with a specific one from the directory.  <a href="#gad436b9a8d99658366c24edbed39a3cac"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga31b1d4554078eff5d9f565e29d219072">config_access_check</a> (struct collection_item *metadata, uint32_t flags, uid_t uid, gid_t gid, mode_t mode, mode_t mask)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to check ownership and permissions.  <a href="#ga31b1d4554078eff5d9f565e29d219072"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gab22ddd7dac44a4a587b11f833e76ff96">config_changed</a> (struct collection_item *metadata, struct collection_item *saved_metadata, int *changed)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function compares two meta data objects.  <a href="#gab22ddd7dac44a4a587b11f833e76ff96"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gae753228dbcbd8754e1dd20c3baf36e3b">free_ini_config</a> (struct collection_item *ini_config)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to free configuration object.  <a href="#gae753228dbcbd8754e1dd20c3baf36e3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga6703e6ce5fd737469dbc57b81613f0df">free_ini_config_errors</a> (struct collection_item *error_set)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to free configuration errors.  <a href="#ga6703e6ce5fd737469dbc57b81613f0df"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaff6697aae49e22c1503956deabbe496f">free_ini_config_metadata</a> (struct collection_item *metadata)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to free metadata.  <a href="#gaff6697aae49e22c1503956deabbe496f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gae5f325f643a7cc82723573702dbcf985">print_file_parsing_errors</a> (FILE *file, struct collection_item *error_list)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print errors and warnings that were detected while parsing one file.  <a href="#gae5f325f643a7cc82723573702dbcf985"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gae05f93ea81e47ceb2411e625510cde5c">print_config_parsing_errors</a> (FILE *file, struct collection_item *error_set)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print errors and warnings that were detected parsing configuration as a whole.  <a href="#gae05f93ea81e47ceb2411e625510cde5c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga10d73b1dea58a9d55cb5fed3962b54a1">get_section_list</a> (struct collection_item *ini_config, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get list of sections.  <a href="#ga10d73b1dea58a9d55cb5fed3962b54a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaec6c4b9374170724dfb6dbdcd02a9fff">free_section_list</a> (char **section_list)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free list of sections.  <a href="#gaec6c4b9374170724dfb6dbdcd02a9fff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gae5638e9788a4a4c8db1b12d0f38a50f8">get_attribute_list</a> (struct collection_item *ini_config, const char *section, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get list of attributes.  <a href="#gae5638e9788a4a4c8db1b12d0f38a50f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga76482639b82f60457482b551eebeb80e">free_attribute_list</a> (char **attr_list)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free list of attributes.  <a href="#ga76482639b82f60457482b551eebeb80e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item</a> (const char *section, const char *name, struct collection_item *ini_config, struct collection_item **item)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a configuration item form the configuration.  <a href="#ga10ecd2b40b01d59e490815055d27dae7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gabe1896964cabc142a4ea602b6a96a4ca">get_int_config_value</a> (struct collection_item *item, int strict, int def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to integer number.  <a href="#gabe1896964cabc142a4ea602b6a96a4ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gab98bf45e4bcdef6926bde3c91f9da0d8">get_long_config_value</a> (struct collection_item *item, int strict, long def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to long number.  <a href="#gab98bf45e4bcdef6926bde3c91f9da0d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga963d010797ff9a20e83cc6628926d280">get_unsigned_config_value</a> (struct collection_item *item, int strict, unsigned def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to unsigned integer number.  <a href="#ga963d010797ff9a20e83cc6628926d280"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga40609e5025aa61a9f3ba950dd4ba8f66">get_ulong_config_value</a> (struct collection_item *item, int strict, unsigned long def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to unsigned long number.  <a href="#ga40609e5025aa61a9f3ba950dd4ba8f66"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gae17d522a970db3128e7a2aa60af151dd">get_int32_config_value</a> (struct collection_item *item, int strict, int32_t def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to integer number.  <a href="#gae17d522a970db3128e7a2aa60af151dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaab2154d9fe2c4e4bae06e1ce2b0620e9">get_uint32_config_value</a> (struct collection_item *item, int strict, uint32_t def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to integer number.  <a href="#gaab2154d9fe2c4e4bae06e1ce2b0620e9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaf17fd6451e34c7ef85c0b1ea96a995ea">get_int64_config_value</a> (struct collection_item *item, int strict, int64_t def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to integer number.  <a href="#gaf17fd6451e34c7ef85c0b1ea96a995ea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga702fbd9076e63c284b754f379b3b24e3">get_uint64_config_value</a> (struct collection_item *item, int strict, uint64_t def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to integer number.  <a href="#ga702fbd9076e63c284b754f379b3b24e3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga3e101c4cdc00094b1863e9a31dc20243">get_double_config_value</a> (struct collection_item *item, int strict, double def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value to floating point number.  <a href="#ga3e101c4cdc00094b1863e9a31dc20243"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga4661ccbc4f2e83459104c2cd7112896e">get_bool_config_value</a> (struct collection_item *item, unsigned char def, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value into a logical value.  <a href="#ga4661ccbc4f2e83459104c2cd7112896e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gadd3911b077e7a37b6f636c1aa3a716ce">get_string_config_value</a> (struct collection_item *item, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get string configuration value.  <a href="#gadd3911b077e7a37b6f636c1aa3a716ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga63bd0c018fdaac74c1dcf82481539cf4">get_const_string_config_value</a> (struct collection_item *item, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function returns the string stored in the item.  <a href="#ga63bd0c018fdaac74c1dcf82481539cf4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga79b0cfcc32acf8c6cc44f89ce2a7b27b">get_bin_config_value</a> (struct collection_item *item, int *length, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert item value into a binary sequence.  <a href="#ga79b0cfcc32acf8c6cc44f89ce2a7b27b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga5295a7b88935995d890497700193fc9f">free_bin_config_value</a> (char *bin)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free binary buffer.  <a href="#ga5295a7b88935995d890497700193fc9f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga32f7b9ac7fcd7c03672add417a34c2f6">get_string_config_array</a> (struct collection_item *item, const char *sep, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert value to an array of strings.  <a href="#ga32f7b9ac7fcd7c03672add417a34c2f6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga6038bb74676a2a5ef7b79000dc621ba4">get_raw_string_config_array</a> (struct collection_item *item, const char *sep, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert value to an array of strings.  <a href="#ga6038bb74676a2a5ef7b79000dc621ba4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga4f55fb9461d3f9e7be47c35e6f6ee2db">get_long_config_array</a> (struct collection_item *item, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert value to an array of long values.  <a href="#ga4f55fb9461d3f9e7be47c35e6f6ee2db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga938e82dcad2dbb13fd7e9663d353d625">get_double_config_array</a> (struct collection_item *item, int *size, int *error)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert value to an array of floating point values.  <a href="#ga938e82dcad2dbb13fd7e9663d353d625"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gaae7f4b3678b2be71bbc3ed99c4e78f65">free_string_config_array</a> (char **str_config)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free array of string values.  <a href="#gaae7f4b3678b2be71bbc3ed99c4e78f65"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#ga04c81fb646dacd09ffec48c278e7fd21">free_long_config_array</a> (long *array)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free array of long values.  <a href="#ga04c81fb646dacd09ffec48c278e7fd21"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__functions.html#gac5f1b4e0f9b999cf08972ed711649b52">free_double_config_array</a> (double *array)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free array of floating pointer values.  <a href="#gac5f1b4e0f9b999cf08972ed711649b52"></a><br/></td></tr>
</table>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga31b1d4554078eff5d9f565e29d219072"></a><!-- doxytag: member="ini_config.h::config_access_check" ref="ga31b1d4554078eff5d9f565e29d219072" args="(struct collection_item *metadata, uint32_t flags, uid_t uid, gid_t gid, mode_t mode, mode_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_access_check </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uid_t&#160;</td>
          <td class="paramname"><em>uid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">gid_t&#160;</td>
          <td class="paramname"><em>gid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mode_t&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">mode_t&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to check ownership and permissions. </p>
<p>The function allow caller to make decision if the configuration file is from a trusted source or not.</p>
<p>The flags control how to perform check. See <a class="el" href="group__accesscheck.html">Access control check flags</a> section for more information.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">metadata</td><td>Meta data object. Can't be NULL. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>How and what to check. Must be nonzero. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">uid</td><td>UID to check. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">gid</td><td>GID to check. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>Mode to check. Only permission bits are used. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mask</td><td>Which mode bits to check. If 0 all permision bits are checked.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EACCESS - File properties do not match provided access parameters. </dd></dl>

</div>
</div>
<a class="anchor" id="gab22ddd7dac44a4a587b11f833e76ff96"></a><!-- doxytag: member="ini_config.h::config_changed" ref="gab22ddd7dac44a4a587b11f833e76ff96" args="(struct collection_item *metadata, struct collection_item *saved_metadata, int *changed)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_changed </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>saved_metadata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>changed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function compares two meta data objects. </p>
<p>Function compares two meta data objects to determine whether the configuration has changed since last time the meta data was collected. The function checks three things about the <a href="file:">file:</a></p>
<ul>
<li>time stamp</li>
<li>device ID</li>
<li>i-node If any of those changes function will indicate that configuration changed.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">metadata</td><td>Recent meta data object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">saved_metadata</td><td>Previously saved meta data object. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">changed</td><td>Will be set to a nonzero value if the configuration has changed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - No internal error </dd>
<dd>
EINVAL - Invalid argument </dd>
<dd>
ENOENT - Expected value is missing </dd>
<dd>
ENOMEM - No memory </dd></dl>

</div>
</div>
<a class="anchor" id="ga51ca9d58f8a9d17da33aeebb6286db26"></a><!-- doxytag: member="ini_config.h::config_for_app" ref="ga51ca9d58f8a9d17da33aeebb6286db26" args="(const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_for_app </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_set</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read default configuration file and then overwrite it with a specific one from the directory. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_file</td><td>Name of the configuration file, with default settings for all appplications. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_dir</td><td>Name of the directory where the configuration files for different applications reside. Function will look for file with the name constructed by appending ".ini" to the end of the "application" argument. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>A new configuration object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_set</td><td>Collection of error lists. One list per file.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EMOMEM - No memory. </dd>
<dd>
Any error returned by fopen(). </dd></dl>

</div>
</div>
<a class="anchor" id="gad436b9a8d99658366c24edbed39a3cac"></a><!-- doxytag: member="ini_config.h::config_for_app_with_metadata" ref="gad436b9a8d99658366c24edbed39a3cac" args="(const char *application, const char *config_file, const char *config_dir, struct collection_item **ini_config, int error_level, struct collection_item **error_set, uint32_t metaflags, struct collection_item **meta_default, struct collection_item **meta_appini)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_for_app_with_metadata </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_set</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>metaflags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>meta_default</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>meta_appini</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read default configuration file and then overwrite it with a specific one from the directory. </p>
<p>If requested collect meta data for both.</p>
<p>If the metadata argument is not NULL the calling function MUST always free meta data since it can be allocated even if the function returned error.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_file</td><td>Name of the configuration file, with default settings for all appplications. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_dir</td><td>Name of the directory where the configuration files for different applications reside. Function will look for file with the name constructed by appending ".ini" to the end of the "application" argument. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>A new configuration object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_set</td><td>Collection of error lists. One list per file. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">metaflags</td><td>A bit mask of flags that define what kind of metadata should be collected. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">meta_default</td><td>Collection of metadata values for the default common config file for all applications. See <a class="el" href="group__metadata.html">meta data</a> section for more details. Can be NULL. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">meta_appini</td><td>Collection of metadata values for the application specific config file. See <a class="el" href="group__metadata.html">meta data</a> section for more details. Can be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EMOMEM - No memory. </dd>
<dd>
Any error returned by fopen(). </dd></dl>

</div>
</div>
<a class="anchor" id="ga7545be0dd3de836cdb15b40cd0ac2a8b"></a><!-- doxytag: member="ini_config.h::config_from_fd" ref="ga7545be0dd3de836cdb15b40cd0ac2a8b" args="(const char *application, int fd, const char *config_source, struct collection_item **ini_config, int error_level, struct collection_item **error_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_from_fd </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_list</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read configuration information from a file descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fd</td><td>Previously opened file descriptor for the config file. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_source</td><td>Name of the file being parsed, for use when printing the error list. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>If *ini_config is NULL a new ini object will be allocated, otherwise the one that is pointed to will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_list</td><td>List of errors for the file detected during parsing.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EMOMEM - No memory. </dd>
<dd>
EINVAL - Invalid parameter. </dd></dl>

</div>
</div>
<a class="anchor" id="gabdc86bc7995ff6b3e4b1c0938afea582"></a><!-- doxytag: member="ini_config.h::config_from_fd_with_metadata" ref="gabdc86bc7995ff6b3e4b1c0938afea582" args="(const char *application, int fd, const char *config_source, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_from_fd_with_metadata </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>metaflags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>metadata</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read configuration information from a file descriptor with additional meta data. </p>
<p>Meta data consists of addition information about the file for example when it was created or who is the owner. For the detailed description of the meta data content and structure see <a class="el" href="group__metadata.html">meta data</a> section.</p>
<p>If the metadata argument is not NULL the calling function MUST always free meta data since it can be allocated even if the function returned error.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fd</td><td>Previously opened file descriptor for the config file. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_source</td><td>Name of the file being parsed, for use when printing the error list. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>If *ini_config is NULL a new ini object will be allocated, otherwise the one that is pointed to will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_list</td><td>List of errors for the file detected during parsing. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">metaflags</td><td>A bit mask of flags that define what kind of metadata should be collected. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">metadata</td><td>Collection of metadata values. See <a class="el" href="group__metadata.html">meta data</a> section for more details. Can be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EMOMEM - No memory. </dd></dl>

</div>
</div>
<a class="anchor" id="gaad1a6dd24dfbdc8d39e8deb10b72530d"></a><!-- doxytag: member="ini_config.h::config_from_file" ref="gaad1a6dd24dfbdc8d39e8deb10b72530d" args="(const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_from_file </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_filename</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_list</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read configuration information from a file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_filename</td><td>Name of the config file, if NULL the configuration collection will be empty. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>If *ini_config is NULL a new ini object will be allocated, otherwise the one that is pointed to will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_list</td><td>List of errors for the file detected during parsing.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EMOMEM - No memory. </dd>
<dd>
Any error returned by fopen(). </dd></dl>

</div>
</div>
<a class="anchor" id="ga7a560eb8fcdc050c82d41981d45e4db7"></a><!-- doxytag: member="ini_config.h::config_from_file_with_metadata" ref="ga7a560eb8fcdc050c82d41981d45e4db7" args="(const char *application, const char *config_filename, struct collection_item **ini_config, int error_level, struct collection_item **error_list, uint32_t metaflags, struct collection_item **metadata)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int config_from_file_with_metadata </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>application</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>config_filename</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error_level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>error_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>metaflags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>metadata</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read configuration information from a file with additional meta data. </p>
<p>Meta data consists of addition information about the file for example when it was created or who is the owner. For the detailed description of the meta data content and structure see <a class="el" href="group__metadata.html">meta data</a> section.</p>
<p>If the metadata argument is not NULL the calling function MUST always free meta data since it can be allocated even if the function returned error.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">application</td><td>Name of the application, will be used as name of the collection. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">config_filename</td><td>Name of the config file, if NULL the configuration collection will be empty. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ini_config</td><td>If *ini_config is NULL a new ini object will be allocated, otherwise the one that is pointed to will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_level</td><td>Break for errors, warnings or best effort (don't break). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error_list</td><td>List of errors for the file detected during parsing. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">metaflags</td><td>A bit mask of flags that define what kind of metadata should be collected. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">metadata</td><td>Collection of metadata values. See <a class="el" href="group__metadata.html">meta data</a> section for more details. Can be NULL.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
EMOMEM - No memory. </dd>
<dd>
Any error returned by fopen(). </dd></dl>

</div>
</div>
<a class="anchor" id="ga76482639b82f60457482b551eebeb80e"></a><!-- doxytag: member="ini_config.h::free_attribute_list" ref="ga76482639b82f60457482b551eebeb80e" args="(char **attr_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_attribute_list </td>
          <td>(</td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>attr_list</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free list of attributes. </p>
<p>The attribute array created by <a class="el" href="group__functions.html#gae5638e9788a4a4c8db1b12d0f38a50f8">get_attribute_list()</a> should be freed using this function.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">attr_list</td><td>Array of strings returned by <a class="el" href="group__functions.html#gae5638e9788a4a4c8db1b12d0f38a50f8">get_attribute_list()</a> function. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga5295a7b88935995d890497700193fc9f"></a><!-- doxytag: member="ini_config.h::free_bin_config_value" ref="ga5295a7b88935995d890497700193fc9f" args="(char *bin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_bin_config_value </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>bin</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free binary buffer. </p>
<p>Free binary value returned by <a class="el" href="group__functions.html#ga79b0cfcc32acf8c6cc44f89ce2a7b27b">get_bin_config_value()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">bin</td><td>Binary buffer to free. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gac5f1b4e0f9b999cf08972ed711649b52"></a><!-- doxytag: member="ini_config.h::free_double_config_array" ref="gac5f1b4e0f9b999cf08972ed711649b52" args="(double *array)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_double_config_array </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>array</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free array of floating pointer values. </p>
<p>Use this function to free the array returned by <a class="el" href="group__functions.html#ga938e82dcad2dbb13fd7e9663d353d625">get_double_config_array()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>Array of floating pointer values. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae753228dbcbd8754e1dd20c3baf36e3b"></a><!-- doxytag: member="ini_config.h::free_ini_config" ref="gae753228dbcbd8754e1dd20c3baf36e3b" args="(struct collection_item *ini_config)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_ini_config </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>ini_config</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to free configuration object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ini_config</td><td>Configuration object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6703e6ce5fd737469dbc57b81613f0df"></a><!-- doxytag: member="ini_config.h::free_ini_config_errors" ref="ga6703e6ce5fd737469dbc57b81613f0df" args="(struct collection_item *error_set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_ini_config_errors </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>error_set</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to free configuration errors. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">error_set</td><td>Configuration error set object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaff6697aae49e22c1503956deabbe496f"></a><!-- doxytag: member="ini_config.h::free_ini_config_metadata" ref="gaff6697aae49e22c1503956deabbe496f" args="(struct collection_item *metadata)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_ini_config_metadata </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>metadata</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to free metadata. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">metadata</td><td>Configuration meta data object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga04c81fb646dacd09ffec48c278e7fd21"></a><!-- doxytag: member="ini_config.h::free_long_config_array" ref="ga04c81fb646dacd09ffec48c278e7fd21" args="(long *array)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_long_config_array </td>
          <td>(</td>
          <td class="paramtype">long *&#160;</td>
          <td class="paramname"><em>array</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free array of long values. </p>
<p>Use this function to free the array returned by <a class="el" href="group__functions.html#ga4f55fb9461d3f9e7be47c35e6f6ee2db">get_long_config_array()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>Array of long values. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaec6c4b9374170724dfb6dbdcd02a9fff"></a><!-- doxytag: member="ini_config.h::free_section_list" ref="gaec6c4b9374170724dfb6dbdcd02a9fff" args="(char **section_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_section_list </td>
          <td>(</td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>section_list</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free list of sections. </p>
<p>The section array created by <a class="el" href="group__functions.html#ga10d73b1dea58a9d55cb5fed3962b54a1">get_section_list()</a> should be freed using this function.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">section_list</td><td>Array of strings returned by <a class="el" href="group__functions.html#ga10d73b1dea58a9d55cb5fed3962b54a1">get_section_list()</a> function. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaae7f4b3678b2be71bbc3ed99c4e78f65"></a><!-- doxytag: member="ini_config.h::free_string_config_array" ref="gaae7f4b3678b2be71bbc3ed99c4e78f65" args="(char **str_config)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_string_config_array </td>
          <td>(</td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>str_config</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free array of string values. </p>
<p>Use this function to free the array returned by <a class="el" href="group__functions.html#ga32f7b9ac7fcd7c03672add417a34c2f6">get_string_config_array()</a> or by <a class="el" href="group__functions.html#ga6038bb74676a2a5ef7b79000dc621ba4">get_raw_string_config_array()</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">str_config</td><td>Array of string values. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae5638e9788a4a4c8db1b12d0f38a50f8"></a><!-- doxytag: member="ini_config.h::get_attribute_list" ref="gae5638e9788a4a4c8db1b12d0f38a50f8" args="(struct collection_item *ini_config, const char *section, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char** get_attribute_list </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>section</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get list of attributes. </p>
<p>Get list of attributes in a section as an array of strings. Function allocates memory for the array of attributes. Use <a class="el" href="group__functions.html#ga76482639b82f60457482b551eebeb80e">free_attribute_list()</a> to free allocated memory.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ini_config</td><td>Configuration object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">section</td><td>Section name. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>If not NULL parameter will receive number of attributes in the section. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>If not NULL parameter will receive the error code. 0 - Success. EINVAL - Invalid parameter. ENOMEM - No memory.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of strings. </dd></dl>

</div>
</div>
<a class="anchor" id="ga79b0cfcc32acf8c6cc44f89ce2a7b27b"></a><!-- doxytag: member="ini_config.h::get_bin_config_value" ref="ga79b0cfcc32acf8c6cc44f89ce2a7b27b" args="(struct collection_item *item, int *length, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* get_bin_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value into a binary sequence. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into a sequence of bytes. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<p>The function allocates memory. It is the responsibility of the caller to free it after use. Use <a class="el" href="group__functions.html#ga5295a7b88935995d890497700193fc9f">free_bin_config_value()</a> for this purpose. Functions will return NULL if conversion failed.</p>
<p>Function assumes that the value being interpreted has a special format. The string should be taken in single quotes and consist of hex encoded value represented by two hex digits per byte. Case does not matter.</p>
<p>Example: '0a2BFeCc'</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">length</td><td>Variable that optionally receives the length of the binary sequence. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4661ccbc4f2e83459104c2cd7112896e"></a><!-- doxytag: member="ini_config.h::get_bool_config_value" ref="ga4661ccbc4f2e83459104c2cd7112896e" args="(struct collection_item *item, unsigned char def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char get_bool_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value into a logical value. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into a Boolean. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga10ecd2b40b01d59e490815055d27dae7"></a><!-- doxytag: member="ini_config.h::get_config_item" ref="ga10ecd2b40b01d59e490815055d27dae7" args="(const char *section, const char *name, struct collection_item *ini_config, struct collection_item **item)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int get_config_item </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>section</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item **&#160;</td>
          <td class="paramname"><em>item</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a configuration item form the configuration. </p>
<p>Check return error code first. If the function returns an error there is a serious problem. Then check if item is found. Function will set item parameter to NULL if no attribute with provided name is found in the collection.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">section</td><td>Section name. If NULL assumed default. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>Attribute name to find. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ini_config</td><td>Configuration object to search. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">item</td><td>Element of configuration collection. Will be set to NULL if element with the given name is not found. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid parameter. </dd>
<dd>
ENOMEM - No memory. </dd></dl>

</div>
</div>
<a class="anchor" id="ga63bd0c018fdaac74c1dcf82481539cf4"></a><!-- doxytag: member="ini_config.h::get_const_string_config_value" ref="ga63bd0c018fdaac74c1dcf82481539cf4" args="(struct collection_item *item, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* get_const_string_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function returns the string stored in the item. </p>
<p>Function returns a reference to the string value stored inside the item. This string can't be altered. The string will go out of scope if the item is deleted.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to use. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>String from the item. </dd></dl>

</div>
</div>
<a class="anchor" id="ga938e82dcad2dbb13fd7e9663d353d625"></a><!-- doxytag: member="ini_config.h::get_double_config_array" ref="ga938e82dcad2dbb13fd7e9663d353d625" args="(struct collection_item *item, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double* get_double_config_array </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert value to an array of floating point values. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an array of floating point values. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<p>Separators inside the string are detected automatically. The spaces are trimmed automatically around separators in the string.</p>
<p>The length of the allocated array is returned in "size". Size parameter can't be NULL.</p>
<p>Use <a class="el" href="group__functions.html#gac5f1b4e0f9b999cf08972ed711649b52">free_double_config_array()</a> to free the array after use.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Variable that receives the size of the array. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of floating point values. In case of failure the function returns NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3e101c4cdc00094b1863e9a31dc20243"></a><!-- doxytag: member="ini_config.h::get_double_config_value" ref="ga3e101c4cdc00094b1863e9a31dc20243" args="(struct collection_item *item, int strict, double def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double get_double_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to floating point number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into a floating point number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="gae17d522a970db3128e7a2aa60af151dd"></a><!-- doxytag: member="ini_config.h::get_int32_config_value" ref="gae17d522a970db3128e7a2aa60af151dd" args="(struct collection_item *item, int strict, int32_t def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int32_t get_int32_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an int32_t number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from INT_MIN to INT_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf17fd6451e34c7ef85c0b1ea96a995ea"></a><!-- doxytag: member="ini_config.h::get_int64_config_value" ref="gaf17fd6451e34c7ef85c0b1ea96a995ea" args="(struct collection_item *item, int strict, int64_t def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t get_int64_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an int64_t number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from LLONG_MIN to LLONG_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="gabe1896964cabc142a4ea602b6a96a4ca"></a><!-- doxytag: member="ini_config.h::get_int_config_value" ref="gabe1896964cabc142a4ea602b6a96a4ca" args="(struct collection_item *item, int strict, int def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int get_int_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an integer number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from INT_MIN to INT_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4f55fb9461d3f9e7be47c35e6f6ee2db"></a><!-- doxytag: member="ini_config.h::get_long_config_array" ref="ga4f55fb9461d3f9e7be47c35e6f6ee2db" args="(struct collection_item *item, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long* get_long_config_array </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert value to an array of long values. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an array of long values. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<p>Separators inside the string are detected automatically. The spaces are trimmed automatically around separators in the string.</p>
<p>The length of the allocated array is returned in "size". Size parameter can't be NULL.</p>
<p>Use <a class="el" href="group__functions.html#ga04c81fb646dacd09ffec48c278e7fd21">free_long_config_array()</a> to free the array after use.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Variable that receives the size of the array. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed.</li>
<li>ERANGE - Value is out of range.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of long values. In case of failure the function returns NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="gab98bf45e4bcdef6926bde3c91f9da0d8"></a><!-- doxytag: member="ini_config.h::get_long_config_value" ref="gab98bf45e4bcdef6926bde3c91f9da0d8" args="(struct collection_item *item, int strict, long def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long get_long_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to long number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into a long number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from LONG_MIN to LONG_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6038bb74676a2a5ef7b79000dc621ba4"></a><!-- doxytag: member="ini_config.h::get_raw_string_config_array" ref="ga6038bb74676a2a5ef7b79000dc621ba4" args="(struct collection_item *item, const char *sep, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char** get_raw_string_config_array </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert value to an array of strings. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an array of strings. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<p>Separator string includes up to three different separators. If separator NULL, comma is assumed. The spaces are trimmed automatically around separators in the string. The function does not drop empty tokens from the list. This means that the string like this: "apple, ,banana, ,orange ," will be translated into the list of five items: "apple", "", "banana", "" and "orange".</p>
<p>The length of the allocated array is returned in "size". Size and error parameters can be NULL. Use <a class="el" href="group__functions.html#gaae7f4b3678b2be71bbc3ed99c4e78f65">free_string_config_array()</a> to free the array after use.</p>
<p>The array is always NULL terminated so it is safe not to get size and just loop until array element is NULL.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sep</td><td>String cosisting of separator symbols. For example: ",.;" would mean that comma, dot and semicolon should be treated as separators in the value. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Variable that optionally receives the size of the array. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of strings. In case of failure the function returns NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="ga10d73b1dea58a9d55cb5fed3962b54a1"></a><!-- doxytag: member="ini_config.h::get_section_list" ref="ga10d73b1dea58a9d55cb5fed3962b54a1" args="(struct collection_item *ini_config, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char** get_section_list </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>ini_config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get list of sections. </p>
<p>Get list of sections from the configuration object as an array of strings. Function allocates memory for the array of the sections. Use <a class="el" href="group__functions.html#gaec6c4b9374170724dfb6dbdcd02a9fff">free_section_list()</a> to free allocated memory.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ini_config</td><td>Configuration object. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>If not NULL parameter will receive number of sections in the configuration. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>If not NULL parameter will receive the error code. 0 - Success. EINVAL - Invalid parameter. ENOMEM - No memory.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of strings. </dd></dl>

</div>
</div>
<a class="anchor" id="ga32f7b9ac7fcd7c03672add417a34c2f6"></a><!-- doxytag: member="ini_config.h::get_string_config_array" ref="ga32f7b9ac7fcd7c03672add417a34c2f6" args="(struct collection_item *item, const char *sep, int *size, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char** get_string_config_array </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert value to an array of strings. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an array of strings. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value.</p>
<p>Separator string includes up to three different separators. If separator NULL, comma is assumed. The spaces are trimmed automatically around separators in the string. The function drops empty tokens from the list. This means that the string like this: "apple, ,banana, ,orange ," will be translated into the list of three items: "apple","banana" and "orange".</p>
<p>The length of the allocated array is returned in "size". Size and error parameters can be NULL. Use <a class="el" href="group__functions.html#gaae7f4b3678b2be71bbc3ed99c4e78f65">free_string_config_array()</a> to free the array after use.</p>
<p>The array is always NULL terminated so it is safe not to get size and just loop until array element is NULL.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sep</td><td>String cosisting of separator symbols. For example: ",.;" would mean that comma, dot and semicolon should be treated as separators in the value. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">size</td><td>Variable that optionally receives the size of the array. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Array of strings. In case of failure the function returns NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="gadd3911b077e7a37b6f636c1aa3a716ce"></a><!-- doxytag: member="ini_config.h::get_string_config_value" ref="gadd3911b077e7a37b6f636c1aa3a716ce" args="(struct collection_item *item, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* get_string_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get string configuration value. </p>
<p>Function creates a copy of the string value stored in the item. Returned value needs to be freed after use. If error occurred the returned value will be NULL.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to use. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>ENOMEM - No memory.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Copy of the string or NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="gaab2154d9fe2c4e4bae06e1ce2b0620e9"></a><!-- doxytag: member="ini_config.h::get_uint32_config_value" ref="gaab2154d9fe2c4e4bae06e1ce2b0620e9" args="(struct collection_item *item, int strict, uint32_t def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t get_uint32_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an uint32_t number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from 0 to ULONG_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga702fbd9076e63c284b754f379b3b24e3"></a><!-- doxytag: member="ini_config.h::get_uint64_config_value" ref="ga702fbd9076e63c284b754f379b3b24e3" args="(struct collection_item *item, int strict, uint64_t def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint64_t get_uint64_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint64_t&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an uint64_t number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from 0 to ULLONG_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga40609e5025aa61a9f3ba950dd4ba8f66"></a><!-- doxytag: member="ini_config.h::get_ulong_config_value" ref="ga40609e5025aa61a9f3ba950dd4ba8f66" args="(struct collection_item *item, int strict, unsigned long def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long get_ulong_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned long&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to unsigned long number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an unsigned long number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from 0 to ULONG_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga963d010797ff9a20e83cc6628926d280"></a><!-- doxytag: member="ini_config.h::get_unsigned_config_value" ref="ga963d010797ff9a20e83cc6628926d280" args="(struct collection_item *item, int strict, unsigned def, int *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned get_unsigned_config_value </td>
          <td>(</td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>strict</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert item value to unsigned integer number. </p>
<p>This is a conversion function. It converts the value read from the INI file and stored in the configuration item into an unsigned integer number. Any of the conversion functions can be used to try to convert the value stored as a string inside the item. The results can be different depending upon how the caller tries to interpret the value. If "strict" parameter is non zero the function will fail if there are more characters after the last digit. The value range is from 0 to UINT_MAX.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">item</td><td>Item to interpret. It must be retrieved using <a class="el" href="group__functions.html#ga10ecd2b40b01d59e490815055d27dae7">get_config_item()</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">strict</td><td>Fail the function if the symbol after last digit is not valid. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">def</td><td>Default value to use if conversion failed. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">error</td><td>Variable will get the value of the error code if error happened. Can be NULL. In this case function does not set the code. Codes:<ul>
<li>0 - Success.</li>
<li>EINVAL - Argument is invalid.</li>
<li>EIO - Conversion failed due invalid characters.</li>
<li>ERANGE - Value is out of range.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Converted value. In case of failure the function returns default value and sets error code into the provided variable. </dd></dl>

</div>
</div>
<a class="anchor" id="ga159fe77c7ea83c613c0a062d57f047c8"></a><!-- doxytag: member="ini_config.h::parsing_error_str" ref="ga159fe77c7ea83c613c0a062d57f047c8" args="(int parsing_error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* parsing_error_str </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>parsing_error</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Function to return a parsing error as a string. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">parsing_error</td><td>Error code for the parsing error.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Error string. </dd></dl>

</div>
</div>
<a class="anchor" id="gae05f93ea81e47ceb2411e625510cde5c"></a><!-- doxytag: member="ini_config.h::print_config_parsing_errors" ref="gae05f93ea81e47ceb2411e625510cde5c" args="(FILE *file, struct collection_item *error_set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void print_config_parsing_errors </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>error_set</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print errors and warnings that were detected parsing configuration as a whole. </p>
<p>Use this function to print results of the <a class="el" href="group__functions.html#ga51ca9d58f8a9d17da33aeebb6286db26" title="Read default configuration file and then overwrite it with a specific one from the directory...">config_for_app()</a> call.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>File descriptor. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_set</td><td>List of lists of the parsing errors. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae5f325f643a7cc82723573702dbcf985"></a><!-- doxytag: member="ini_config.h::print_file_parsing_errors" ref="gae5f325f643a7cc82723573702dbcf985" args="(FILE *file, struct collection_item *error_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void print_file_parsing_errors </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct collection_item *&#160;</td>
          <td class="paramname"><em>error_list</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print errors and warnings that were detected while parsing one file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">file</td><td>File descriptor. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">error_list</td><td>List of the parsing errors. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated on Thu Sep 15 2011 for libini_config by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>