Annotation of embedaddon/confuse/doc/html/ftpconf_8c-example.html, revision 1.1.1.2

1.1.1.2 ! misho       1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        !             2: <html xmlns="http://www.w3.org/1999/xhtml">
1.1       misho       3: <head>
1.1.1.2 ! misho       4: <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
        !             5: <meta http-equiv="X-UA-Compatible" content="IE=9"/>
        !             6: <meta name="generator" content="Doxygen 1.8.17"/>
        !             7: <title>confuse: ftpconf.c</title>
        !             8: <link href="tabs.css" rel="stylesheet" type="text/css"/>
        !             9: <script type="text/javascript" src="jquery.js"></script>
        !            10: <script type="text/javascript" src="dynsections.js"></script>
        !            11: <link href="search/search.css" rel="stylesheet" type="text/css"/>
        !            12: <script type="text/javascript" src="search/searchdata.js"></script>
        !            13: <script type="text/javascript" src="search/search.js"></script>
        !            14: <link href="doxygen.css" rel="stylesheet" type="text/css" />
1.1       misho      15: </head>
                     16: <body>
1.1.1.2 ! misho      17: <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
        !            18: <div id="titlearea">
        !            19: <table cellspacing="0" cellpadding="0">
        !            20:  <tbody>
        !            21:  <tr style="height: 56px;">
        !            22:   <td id="projectalign" style="padding-left: 0.5em;">
        !            23:    <div id="projectname">confuse
        !            24:    &#160;<span id="projectnumber">3.3</span>
        !            25:    </div>
        !            26:   </td>
        !            27:  </tr>
        !            28:  </tbody>
        !            29: </table>
        !            30: </div>
        !            31: <!-- end header part -->
        !            32: <!-- Generated by Doxygen 1.8.17 -->
        !            33: <script type="text/javascript">
        !            34: /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
        !            35: var searchBox = new SearchBox("searchBox", "search",false,'Search');
        !            36: /* @license-end */
        !            37: </script>
        !            38: <script type="text/javascript" src="menudata.js"></script>
        !            39: <script type="text/javascript" src="menu.js"></script>
        !            40: <script type="text/javascript">
        !            41: /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
        !            42: $(function() {
        !            43:   initMenu('',true,false,'search.php','Search');
        !            44:   $(document).ready(function() { init_search(); });
        !            45: });
        !            46: /* @license-end */</script>
        !            47: <div id="main-nav"></div>
        !            48: </div><!-- top -->
        !            49: <!-- window showing the filter options -->
        !            50: <div id="MSearchSelectWindow"
        !            51:      onmouseover="return searchBox.OnSearchSelectShow()"
        !            52:      onmouseout="return searchBox.OnSearchSelectHide()"
        !            53:      onkeydown="return searchBox.OnSearchSelectKey(event)">
1.1       misho      54: </div>
                     55: 
1.1.1.2 ! misho      56: <!-- iframe showing the search results (closed by default) -->
        !            57: <div id="MSearchResultsWindow">
        !            58: <iframe src="javascript:void(0)" frameborder="0" 
        !            59:         name="MSearchResults" id="MSearchResults">
        !            60: </iframe>
        !            61: </div>
1.1       misho      62: 
1.1.1.2 ! misho      63: <div class="header">
        !            64:   <div class="headertitle">
        !            65: <div class="title">ftpconf.c</div>  </div>
        !            66: </div><!--header-->
        !            67: <div class="contents">
        !            68: <div class="fragment"><div class="line"><span class="comment">/*</span></div>
        !            69: <div class="line"><span class="comment"> * Parses and prints the configuration options for a fictous ftp client</span></div>
        !            70: <div class="line"><span class="comment"> */</span></div>
        !            71: <div class="line"> </div>
        !            72: <div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
        !            73: <div class="line"><span class="preprocessor">#include &lt;string.h&gt;</span></div>
        !            74: <div class="line"><span class="preprocessor">#include &lt;errno.h&gt;</span></div>
        !            75: <div class="line"><span class="preprocessor">#include &lt;locale.h&gt;</span></div>
        !            76: <div class="line"><span class="preprocessor">#include &lt;<a class="code" href="confuse_8h.html">confuse.h</a>&gt;</span></div>
        !            77: <div class="line"> </div>
        !            78: <div class="line"><span class="comment">/* valid values for the auto-create-bookmark option */</span></div>
        !            79: <div class="line"><span class="preprocessor">#define ACB_YES 1</span></div>
        !            80: <div class="line"><span class="preprocessor">#define ACB_NO 2</span></div>
        !            81: <div class="line"><span class="preprocessor">#define ACB_ASK 3</span></div>
        !            82: <div class="line"> </div>
        !            83: <div class="line"><span class="comment">/* called on alias() functions in the config file */</span></div>
        !            84: <div class="line"><span class="keywordtype">int</span> conf_alias(<a name="_a0"></a><a class="code" href="structcfg__t.html">cfg_t</a> *cfg, <a name="_a1"></a><a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> *opt, <span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span> **argv)</div>
        !            85: <div class="line">{</div>
        !            86: <div class="line">    <span class="keywordflow">if</span> (argc &lt; 2) {</div>
        !            87: <div class="line">        <a name="a2"></a><a class="code" href="confuse_8h.html#a5b448a145f12b67e90bd4e6bd387f129">cfg_error</a>(cfg, <span class="stringliteral">&quot;function &#39;%s&#39; requires 2 arguments&quot;</span>, <a name="a3"></a><a class="code" href="confuse_8h.html#a20e3b90b5fce510154d4053db0c8eba4">cfg_opt_name</a>(opt));</div>
        !            88: <div class="line">        <span class="keywordflow">return</span> -1;</div>
        !            89: <div class="line">    }</div>
        !            90: <div class="line">    printf(<span class="stringliteral">&quot;got alias &#39;%s&#39; = &#39;%s&#39;\n&quot;</span>, argv[0], argv[1]);</div>
        !            91: <div class="line">    <span class="keywordflow">return</span> 0;</div>
        !            92: <div class="line">}</div>
        !            93: <div class="line"> </div>
        !            94: <div class="line"><span class="comment">/* parse values for the auto-create-bookmark option */</span></div>
        !            95: <div class="line"><span class="keywordtype">int</span> conf_parse_acb(<a class="code" href="structcfg__t.html">cfg_t</a> *cfg, <a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">void</span> *result)</div>
        !            96: <div class="line">{</div>
        !            97: <div class="line">    <span class="keywordflow">if</span> (strcmp(value, <span class="stringliteral">&quot;yes&quot;</span>) == 0)</div>
        !            98: <div class="line">        *(<span class="keywordtype">int</span> *)result = ACB_YES;</div>
        !            99: <div class="line">    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(value, <span class="stringliteral">&quot;no&quot;</span>) == 0)</div>
        !           100: <div class="line">        *(<span class="keywordtype">int</span> *)result = ACB_NO;</div>
        !           101: <div class="line">    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(value, <span class="stringliteral">&quot;ask&quot;</span>) == 0)</div>
        !           102: <div class="line">        *(<span class="keywordtype">int</span> *)result = ACB_ASK;</div>
        !           103: <div class="line">    <span class="keywordflow">else</span> {</div>
        !           104: <div class="line">        <a class="code" href="confuse_8h.html#a5b448a145f12b67e90bd4e6bd387f129">cfg_error</a>(cfg, <span class="stringliteral">&quot;invalid value for option &#39;%s&#39;: %s&quot;</span>, <a class="code" href="confuse_8h.html#a20e3b90b5fce510154d4053db0c8eba4">cfg_opt_name</a>(opt), value);</div>
        !           105: <div class="line">        <span class="keywordflow">return</span> -1;</div>
        !           106: <div class="line">    }</div>
        !           107: <div class="line">    <span class="keywordflow">return</span> 0;</div>
        !           108: <div class="line">}</div>
        !           109: <div class="line"> </div>
        !           110: <div class="line"><span class="comment">/* validates a port option (must be positive) */</span></div>
        !           111: <div class="line"><span class="keywordtype">int</span> conf_validate_port(<a class="code" href="structcfg__t.html">cfg_t</a> *cfg, <a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> *opt)</div>
        !           112: <div class="line">{</div>
        !           113: <div class="line">    <span class="keywordtype">int</span> value = <a name="a4"></a><a class="code" href="confuse_8h.html#abaa00b2bb179bfc1062c67da8b2beae3">cfg_opt_getnint</a>(opt, 0);</div>
        !           114: <div class="line"> </div>
        !           115: <div class="line">    <span class="keywordflow">if</span> (value &lt;= 0) {</div>
        !           116: <div class="line">        <a class="code" href="confuse_8h.html#a5b448a145f12b67e90bd4e6bd387f129">cfg_error</a>(cfg, <span class="stringliteral">&quot;invalid port %d in section &#39;%s&#39;&quot;</span>, value, <a name="a5"></a><a class="code" href="confuse_8h.html#a5eee21bf6b453b81d477314333d4c47c">cfg_name</a>(cfg));</div>
        !           117: <div class="line">        <span class="keywordflow">return</span> -1;</div>
        !           118: <div class="line">    }</div>
        !           119: <div class="line">    <span class="keywordflow">return</span> 0;</div>
        !           120: <div class="line">}</div>
        !           121: <div class="line"> </div>
        !           122: <div class="line"><span class="comment">/* validates a bookmark section (host option required) */</span></div>
        !           123: <div class="line"><span class="keywordtype">int</span> conf_validate_bookmark(<a class="code" href="structcfg__t.html">cfg_t</a> *cfg, <a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> *opt)</div>
        !           124: <div class="line">{</div>
        !           125: <div class="line">    <a class="code" href="structcfg__t.html">cfg_t</a> *bookmark = <a name="a6"></a><a class="code" href="confuse_8h.html#a4312c6bc126283ad8b6dc849c1138a71">cfg_opt_getnsec</a>(opt, <a name="a7"></a><a class="code" href="confuse_8h.html#a1648e78297e9bc970b1f3fa90a715da6">cfg_opt_size</a>(opt) - 1);</div>
        !           126: <div class="line"> </div>
        !           127: <div class="line">    <span class="keywordflow">if</span> (<a name="a8"></a><a class="code" href="confuse_8h.html#acb8b2b9aa7d9e2e3c0eca67ea27bed15">cfg_size</a>(bookmark, <span class="stringliteral">&quot;host&quot;</span>) == 0) {</div>
        !           128: <div class="line">        <a class="code" href="confuse_8h.html#a5b448a145f12b67e90bd4e6bd387f129">cfg_error</a>(cfg, <span class="stringliteral">&quot;missing required option &#39;host&#39; in bookmark&quot;</span>);</div>
        !           129: <div class="line">        <span class="keywordflow">return</span> -1;</div>
        !           130: <div class="line">    }</div>
        !           131: <div class="line">    <span class="keywordflow">return</span> 0;</div>
        !           132: <div class="line">}</div>
        !           133: <div class="line"> </div>
        !           134: <div class="line"><a class="code" href="structcfg__t.html">cfg_t</a> *parse_conf(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename)</div>
        !           135: <div class="line">{</div>
        !           136: <div class="line">    <span class="keyword">static</span> <a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> bookmark_opts[] = {</div>
        !           137: <div class="line">        <a name="a9"></a><a class="code" href="confuse_8h.html#a963e2ee16396dcf36f6d1937faa00f0c">CFG_STR</a>(<span class="stringliteral">&quot;host&quot;</span>, 0, <a name="a10"></a><a class="code" href="confuse_8h.html#a9020ea37bfdb4f3e88a18d0a0d00cdd9">CFGF_NODEFAULT</a>),</div>
        !           138: <div class="line">        <a name="a11"></a><a class="code" href="confuse_8h.html#ac2b17561e944264c594ea0802e56d308">CFG_INT</a>(<span class="stringliteral">&quot;port&quot;</span>, 21, <a name="a12"></a><a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           139: <div class="line">        <a class="code" href="confuse_8h.html#a963e2ee16396dcf36f6d1937faa00f0c">CFG_STR</a>(<span class="stringliteral">&quot;login&quot;</span>, <span class="stringliteral">&quot;anonymous&quot;</span>, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           140: <div class="line">        <a class="code" href="confuse_8h.html#a963e2ee16396dcf36f6d1937faa00f0c">CFG_STR</a>(<span class="stringliteral">&quot;password&quot;</span>, <span class="stringliteral">&quot;anonymous@&quot;</span>, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           141: <div class="line">        <a class="code" href="confuse_8h.html#a963e2ee16396dcf36f6d1937faa00f0c">CFG_STR</a>(<span class="stringliteral">&quot;directory&quot;</span>, 0, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           142: <div class="line">        <a name="a13"></a><a class="code" href="confuse_8h.html#a6b29dd8a4c6cd3d392d4ab6b2e535597">CFG_END</a>()</div>
        !           143: <div class="line">    };</div>
        !           144: <div class="line"> </div>
        !           145: <div class="line">    <a class="code" href="structcfg__opt__t.html">cfg_opt_t</a> opts[] = {</div>
        !           146: <div class="line">        <a name="a14"></a><a class="code" href="confuse_8h.html#a043d5c79624269e5f60f59a698e461a6">CFG_SEC</a>(<span class="stringliteral">&quot;bookmark&quot;</span>, bookmark_opts, <a name="a15"></a><a class="code" href="confuse_8h.html#a86b522a5daef5c07066b28f1585d2d77">CFGF_MULTI</a> | <a name="a16"></a><a class="code" href="confuse_8h.html#a65d20dbd5b778dd1bf3b3895206b4497">CFGF_TITLE</a>),</div>
        !           147: <div class="line">        <a name="a17"></a><a class="code" href="confuse_8h.html#a5a49fffc6735970c739e34d51a39c95d">CFG_BOOL</a>(<span class="stringliteral">&quot;passive-mode&quot;</span>, cfg_false, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           148: <div class="line">        <a class="code" href="confuse_8h.html#a5a49fffc6735970c739e34d51a39c95d">CFG_BOOL</a>(<span class="stringliteral">&quot;remote-completion&quot;</span>, cfg_true, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           149: <div class="line">        <a name="a18"></a><a class="code" href="confuse_8h.html#ab1ff85d6346cdefeb2ec2b696e50fde9">CFG_FUNC</a>(<span class="stringliteral">&quot;alias&quot;</span>, conf_alias),</div>
        !           150: <div class="line">        <a name="a19"></a><a class="code" href="confuse_8h.html#adb9b1c168e72a3e065d2a06f2ed46c9f">CFG_STR_LIST</a>(<span class="stringliteral">&quot;xterm-terminals&quot;</span>, <span class="stringliteral">&quot;{xterm, rxvt}&quot;</span>, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>),</div>
        !           151: <div class="line">        <a name="a20"></a><a class="code" href="confuse_8h.html#a6f80d4ee3191ce3fb2f9e3b8fba50d49">CFG_INT_CB</a>(<span class="stringliteral">&quot;auto-create-bookmark&quot;</span>, ACB_YES, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>, conf_parse_acb),</div>
        !           152: <div class="line">        <a class="code" href="confuse_8h.html#ab1ff85d6346cdefeb2ec2b696e50fde9">CFG_FUNC</a>(<span class="stringliteral">&quot;include-file&quot;</span>, <a name="a21"></a><a class="code" href="confuse_8h.html#a73e8e62914759632e5d5165fa877f4b3">cfg_include</a>),</div>
        !           153: <div class="line">        <a class="code" href="confuse_8h.html#a6b29dd8a4c6cd3d392d4ab6b2e535597">CFG_END</a>()</div>
        !           154: <div class="line">    };</div>
        !           155: <div class="line"> </div>
        !           156: <div class="line">    <a class="code" href="structcfg__t.html">cfg_t</a> *cfg = <a name="a22"></a><a class="code" href="confuse_8h.html#aec07794916564c8ab437e030ac618aa8">cfg_init</a>(opts, <a class="code" href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a>);</div>
        !           157: <div class="line"> </div>
        !           158: <div class="line">    <a name="a23"></a><a class="code" href="confuse_8h.html#a8f07eca3c5e341ee6a81ecede2fbd5d8">cfg_set_validate_func</a>(cfg, <span class="stringliteral">&quot;bookmark|port&quot;</span>, conf_validate_port);</div>
        !           159: <div class="line">    <a class="code" href="confuse_8h.html#a8f07eca3c5e341ee6a81ecede2fbd5d8">cfg_set_validate_func</a>(cfg, <span class="stringliteral">&quot;bookmark&quot;</span>, conf_validate_bookmark);</div>
        !           160: <div class="line"> </div>
        !           161: <div class="line">    <span class="keywordflow">switch</span> (<a name="a24"></a><a class="code" href="confuse_8h.html#a0fca327466956c5580199e24397d49fe">cfg_parse</a>(cfg, filename)) {</div>
        !           162: <div class="line">    <span class="keywordflow">case</span> CFG_FILE_ERROR:</div>
        !           163: <div class="line">        printf(<span class="stringliteral">&quot;warning: configuration file &#39;%s&#39; could not be read: %s\n&quot;</span>, filename, strerror(errno));</div>
        !           164: <div class="line">        printf(<span class="stringliteral">&quot;continuing with default values...\n\n&quot;</span>);</div>
        !           165: <div class="line">    <span class="keywordflow">case</span> <a name="a25"></a><a class="code" href="confuse_8h.html#a66a1002180229809620b9bf2d3b888a6">CFG_SUCCESS</a>:</div>
        !           166: <div class="line">        <span class="keywordflow">break</span>;</div>
        !           167: <div class="line">    <span class="keywordflow">case</span> CFG_PARSE_ERROR:</div>
        !           168: <div class="line">        <span class="keywordflow">return</span> 0;</div>
        !           169: <div class="line">    }</div>
        !           170: <div class="line"> </div>
        !           171: <div class="line">    <span class="keywordflow">return</span> cfg;</div>
        !           172: <div class="line">}</div>
        !           173: <div class="line"> </div>
        !           174: <div class="line"><span class="comment">/* Parse the file ftp.conf and print the parsed configuration options */</span></div>
        !           175: <div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div>
        !           176: <div class="line">{</div>
        !           177: <div class="line">    <a class="code" href="structcfg__t.html">cfg_t</a> *cfg;</div>
        !           178: <div class="line"> </div>
        !           179: <div class="line">    <span class="comment">/* Localize messages &amp; types according to environment, since v2.9 */</span></div>
        !           180: <div class="line"><span class="preprocessor">#ifdef LC_MESSAGES</span></div>
        !           181: <div class="line">    setlocale(LC_MESSAGES, <span class="stringliteral">&quot;&quot;</span>);</div>
        !           182: <div class="line">    setlocale(LC_CTYPE, <span class="stringliteral">&quot;&quot;</span>);</div>
        !           183: <div class="line"><span class="preprocessor">#endif</span></div>
        !           184: <div class="line"> </div>
        !           185: <div class="line">    cfg = parse_conf(argc &gt; 1 ? argv[1] : <span class="stringliteral">&quot;ftp.conf&quot;</span>);</div>
        !           186: <div class="line">    <span class="keywordflow">if</span> (cfg) {</div>
        !           187: <div class="line">        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
        !           188: <div class="line"> </div>
        !           189: <div class="line">        printf(<span class="stringliteral">&quot;passive-mode = %s\n&quot;</span>, <a name="a26"></a><a class="code" href="confuse_8h.html#ab4903f75c29f9c2973696039c4f5c0df">cfg_getbool</a>(cfg, <span class="stringliteral">&quot;passive-mode&quot;</span>) ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>);</div>
        !           190: <div class="line">        printf(<span class="stringliteral">&quot;remote-completion = %s\n&quot;</span>, <a class="code" href="confuse_8h.html#ab4903f75c29f9c2973696039c4f5c0df">cfg_getbool</a>(cfg, <span class="stringliteral">&quot;remote-completion&quot;</span>) ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>);</div>
        !           191: <div class="line"> </div>
        !           192: <div class="line">        printf(<span class="stringliteral">&quot;number of bookmarks: %d\n&quot;</span>, <a class="code" href="confuse_8h.html#acb8b2b9aa7d9e2e3c0eca67ea27bed15">cfg_size</a>(cfg, <span class="stringliteral">&quot;bookmark&quot;</span>));</div>
        !           193: <div class="line">        <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="confuse_8h.html#acb8b2b9aa7d9e2e3c0eca67ea27bed15">cfg_size</a>(cfg, <span class="stringliteral">&quot;bookmark&quot;</span>); i++) {</div>
        !           194: <div class="line">            <a class="code" href="structcfg__t.html">cfg_t</a> *bookmark = <a name="a27"></a><a class="code" href="confuse_8h.html#ad5e8eea765588892053b73eed4017edd">cfg_getnsec</a>(cfg, <span class="stringliteral">&quot;bookmark&quot;</span>, i);</div>
        !           195: <div class="line"> </div>
        !           196: <div class="line">            printf(<span class="stringliteral">&quot;  bookmark #%d: %s:%s@%s:%ld%s\n&quot;</span>, i + 1,</div>
        !           197: <div class="line">                   <a name="a28"></a><a class="code" href="confuse_8h.html#a4a9c34acc55cca63649c088d98053905">cfg_getstr</a>(bookmark, <span class="stringliteral">&quot;login&quot;</span>),</div>
        !           198: <div class="line">                   <a class="code" href="confuse_8h.html#a4a9c34acc55cca63649c088d98053905">cfg_getstr</a>(bookmark, <span class="stringliteral">&quot;password&quot;</span>),</div>
        !           199: <div class="line">                   <a class="code" href="confuse_8h.html#a4a9c34acc55cca63649c088d98053905">cfg_getstr</a>(bookmark, <span class="stringliteral">&quot;host&quot;</span>), <a name="a29"></a><a class="code" href="confuse_8h.html#aaa50eb2942ae8e7cb7f9ccbfe002b3cd">cfg_getint</a>(bookmark, <span class="stringliteral">&quot;port&quot;</span>), <a class="code" href="confuse_8h.html#a4a9c34acc55cca63649c088d98053905">cfg_getstr</a>(bookmark, <span class="stringliteral">&quot;directory&quot;</span>));</div>
        !           200: <div class="line">        }</div>
        !           201: <div class="line"> </div>
        !           202: <div class="line">        <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="confuse_8h.html#acb8b2b9aa7d9e2e3c0eca67ea27bed15">cfg_size</a>(cfg, <span class="stringliteral">&quot;xterm-terminals&quot;</span>); i++) {</div>
        !           203: <div class="line">            printf(<span class="stringliteral">&quot;xterm-terminal #%d: %s\n&quot;</span>, i + 1, <a name="a30"></a><a class="code" href="confuse_8h.html#aabb00a590331a4d9d4e772201dff34d1">cfg_getnstr</a>(cfg, <span class="stringliteral">&quot;xterm-terminals&quot;</span>, i));</div>
        !           204: <div class="line">        }</div>
        !           205: <div class="line"> </div>
        !           206: <div class="line">        printf(<span class="stringliteral">&quot;auto-create-bookmark = %ld\n&quot;</span>, <a class="code" href="confuse_8h.html#aaa50eb2942ae8e7cb7f9ccbfe002b3cd">cfg_getint</a>(cfg, <span class="stringliteral">&quot;auto-create-bookmark&quot;</span>));</div>
        !           207: <div class="line">        <a name="a31"></a><a class="code" href="confuse_8h.html#aae5e08626bf53514a6ebf250580feba3">cfg_free</a>(cfg);</div>
        !           208: <div class="line">    }</div>
        !           209: <div class="line"> </div>
        !           210: <div class="line">    <span class="keywordflow">return</span> 0;</div>
        !           211: <div class="line">}</div>
        !           212: </div><!-- fragment --> </div><!-- contents -->
        !           213: <div class="ttc" id="aconfuse_8h_html_aec07794916564c8ab437e030ac618aa8"><div class="ttname"><a href="confuse_8h.html#aec07794916564c8ab437e030ac618aa8">cfg_init</a></div><div class="ttdeci">DLLIMPORT cfg_t *__export cfg_init(cfg_opt_t *opts, cfg_flag_t flags)</div><div class="ttdoc">Create and initialize a cfg_t structure.</div><div class="ttdef"><b>Definition:</b> confuse.c:1816</div></div>
        !           214: <div class="ttc" id="aconfuse_8h_html_a9020ea37bfdb4f3e88a18d0a0d00cdd9"><div class="ttname"><a href="confuse_8h.html#a9020ea37bfdb4f3e88a18d0a0d00cdd9">CFGF_NODEFAULT</a></div><div class="ttdeci">#define CFGF_NODEFAULT</div><div class="ttdoc">option has no default value</div><div class="ttdef"><b>Definition:</b> confuse.h:91</div></div>
        !           215: <div class="ttc" id="aconfuse_8h_html_a73e8e62914759632e5d5165fa877f4b3"><div class="ttname"><a href="confuse_8h.html#a73e8e62914759632e5d5165fa877f4b3">cfg_include</a></div><div class="ttdeci">DLLIMPORT int __export cfg_include(cfg_t *cfg, cfg_opt_t *opt, int argc, const char **argv)</div><div class="ttdoc">Predefined include-function.</div><div class="ttdef"><b>Definition:</b> confuse.c:1997</div></div>
        !           216: <div class="ttc" id="aconfuse_8h_html_ac2b17561e944264c594ea0802e56d308"><div class="ttname"><a href="confuse_8h.html#ac2b17561e944264c594ea0802e56d308">CFG_INT</a></div><div class="ttdeci">#define CFG_INT(name, def, flags)</div><div class="ttdoc">Initialize an integer option.</div><div class="ttdef"><b>Definition:</b> confuse.h:421</div></div>
        !           217: <div class="ttc" id="aconfuse_8h_html_acb8b2b9aa7d9e2e3c0eca67ea27bed15"><div class="ttname"><a href="confuse_8h.html#acb8b2b9aa7d9e2e3c0eca67ea27bed15">cfg_size</a></div><div class="ttdeci">DLLIMPORT unsigned int __export cfg_size(cfg_t *cfg, const char *name)</div><div class="ttdoc">Return the number of values this option has.</div><div class="ttdef"><b>Definition:</b> confuse.c:406</div></div>
        !           218: <div class="ttc" id="aconfuse_8h_html_a6b29dd8a4c6cd3d392d4ab6b2e535597"><div class="ttname"><a href="confuse_8h.html#a6b29dd8a4c6cd3d392d4ab6b2e535597">CFG_END</a></div><div class="ttdeci">#define CFG_END()</div><div class="ttdoc">Terminate list of options.</div><div class="ttdef"><b>Definition:</b> confuse.h:574</div></div>
        !           219: <div class="ttc" id="aconfuse_8h_html_a963e2ee16396dcf36f6d1937faa00f0c"><div class="ttname"><a href="confuse_8h.html#a963e2ee16396dcf36f6d1937faa00f0c">CFG_STR</a></div><div class="ttdeci">#define CFG_STR(name, def, flags)</div><div class="ttdoc">Initialize a string option.</div><div class="ttdef"><b>Definition:</b> confuse.h:340</div></div>
        !           220: <div class="ttc" id="aconfuse_8h_html"><div class="ttname"><a href="confuse_8h.html">confuse.h</a></div><div class="ttdoc">A configuration file parser library.</div></div>
        !           221: <div class="ttc" id="aconfuse_8h_html_a1648e78297e9bc970b1f3fa90a715da6"><div class="ttname"><a href="confuse_8h.html#a1648e78297e9bc970b1f3fa90a715da6">cfg_opt_size</a></div><div class="ttdeci">DLLIMPORT unsigned int __export cfg_opt_size(cfg_opt_t *opt)</div><div class="ttdoc">Return the number of values this option has.</div><div class="ttdef"><b>Definition:</b> confuse.c:399</div></div>
        !           222: <div class="ttc" id="aconfuse_8h_html_a65d20dbd5b778dd1bf3b3895206b4497"><div class="ttname"><a href="confuse_8h.html#a65d20dbd5b778dd1bf3b3895206b4497">CFGF_TITLE</a></div><div class="ttdeci">#define CFGF_TITLE</div><div class="ttdoc">option has a title (only applies to sections)</div><div class="ttdef"><b>Definition:</b> confuse.h:90</div></div>
        !           223: <div class="ttc" id="aconfuse_8h_html_a5a49fffc6735970c739e34d51a39c95d"><div class="ttname"><a href="confuse_8h.html#a5a49fffc6735970c739e34d51a39c95d">CFG_BOOL</a></div><div class="ttdeci">#define CFG_BOOL(name, def, flags)</div><div class="ttdoc">Initialize a boolean option.</div><div class="ttdef"><b>Definition:</b> confuse.h:490</div></div>
        !           224: <div class="ttc" id="aconfuse_8h_html_abaa00b2bb179bfc1062c67da8b2beae3"><div class="ttname"><a href="confuse_8h.html#abaa00b2bb179bfc1062c67da8b2beae3">cfg_opt_getnint</a></div><div class="ttdeci">DLLIMPORT signed long __export cfg_opt_getnint(cfg_opt_t *opt, unsigned int index)</div><div class="ttdoc">Returns the value of an integer option, given a cfg_opt_t pointer.</div><div class="ttdef"><b>Definition:</b> confuse.c:424</div></div>
        !           225: <div class="ttc" id="aconfuse_8h_html_adb9b1c168e72a3e065d2a06f2ed46c9f"><div class="ttname"><a href="confuse_8h.html#adb9b1c168e72a3e065d2a06f2ed46c9f">CFG_STR_LIST</a></div><div class="ttdeci">#define CFG_STR_LIST(name, def, flags)</div><div class="ttdoc">Initialize a string list option.</div><div class="ttdef"><b>Definition:</b> confuse.h:345</div></div>
        !           226: <div class="ttc" id="aconfuse_8h_html_a4312c6bc126283ad8b6dc849c1138a71"><div class="ttname"><a href="confuse_8h.html#a4312c6bc126283ad8b6dc849c1138a71">cfg_opt_getnsec</a></div><div class="ttdeci">DLLIMPORT cfg_t *__export cfg_opt_getnsec(cfg_opt_t *opt, unsigned int index)</div><div class="ttdoc">Returns the value of a section option, given a cfg_opt_t pointer.</div><div class="ttdef"><b>Definition:</b> confuse.c:549</div></div>
        !           227: <div class="ttc" id="aconfuse_8h_html_a8f07eca3c5e341ee6a81ecede2fbd5d8"><div class="ttname"><a href="confuse_8h.html#a8f07eca3c5e341ee6a81ecede2fbd5d8">cfg_set_validate_func</a></div><div class="ttdeci">DLLIMPORT cfg_validate_callback_t __export cfg_set_validate_func(cfg_t *cfg, const char *name, cfg_validate_callback_t vf)</div><div class="ttdoc">Register a validating callback function for an option.</div><div class="ttdef"><b>Definition:</b> confuse.c:2637</div></div>
        !           228: <div class="ttc" id="aconfuse_8h_html_ad5e8eea765588892053b73eed4017edd"><div class="ttname"><a href="confuse_8h.html#ad5e8eea765588892053b73eed4017edd">cfg_getnsec</a></div><div class="ttdeci">DLLIMPORT cfg_t *__export cfg_getnsec(cfg_t *cfg, const char *name, unsigned int index)</div><div class="ttdoc">Indexed version of cfg_getsec(), used for sections with the CFGF_MULTI flag set.</div><div class="ttdef"><b>Definition:</b> confuse.c:563</div></div>
        !           229: <div class="ttc" id="aconfuse_8h_html_aabb00a590331a4d9d4e772201dff34d1"><div class="ttname"><a href="confuse_8h.html#aabb00a590331a4d9d4e772201dff34d1">cfg_getnstr</a></div><div class="ttdeci">DLLIMPORT char *__export cfg_getnstr(cfg_t *cfg, const char *name, unsigned int index)</div><div class="ttdoc">Indexed version of cfg_getstr(), used for lists.</div><div class="ttdef"><b>Definition:</b> confuse.c:514</div></div>
        !           230: <div class="ttc" id="aconfuse_8h_html_a6f80d4ee3191ce3fb2f9e3b8fba50d49"><div class="ttname"><a href="confuse_8h.html#a6f80d4ee3191ce3fb2f9e3b8fba50d49">CFG_INT_CB</a></div><div class="ttdeci">#define CFG_INT_CB(name, def, flags, cb)</div><div class="ttdoc">Initialize an integer option with a value parsing callback.</div><div class="ttdef"><b>Definition:</b> confuse.h:431</div></div>
        !           231: <div class="ttc" id="aconfuse_8h_html_a0fca327466956c5580199e24397d49fe"><div class="ttname"><a href="confuse_8h.html#a0fca327466956c5580199e24397d49fe">cfg_parse</a></div><div class="ttdeci">DLLIMPORT int __export cfg_parse(cfg_t *cfg, const char *filename)</div><div class="ttdoc">Parse a configuration file.</div><div class="ttdef"><b>Definition:</b> confuse.c:1746</div></div>
        !           232: <div class="ttc" id="aconfuse_8h_html_ab4903f75c29f9c2973696039c4f5c0df"><div class="ttname"><a href="confuse_8h.html#ab4903f75c29f9c2973696039c4f5c0df">cfg_getbool</a></div><div class="ttdeci">DLLIMPORT cfg_bool_t __export cfg_getbool(cfg_t *cfg, const char *name)</div><div class="ttdoc">Returns the value of a boolean option.</div><div class="ttdef"><b>Definition:</b> confuse.c:494</div></div>
        !           233: <div class="ttc" id="astructcfg__opt__t_html"><div class="ttname"><a href="structcfg__opt__t.html">cfg_opt_t</a></div><div class="ttdoc">Data structure holding information about an option.</div><div class="ttdef"><b>Definition:</b> confuse.h:309</div></div>
        !           234: <div class="ttc" id="aconfuse_8h_html_ab1ff85d6346cdefeb2ec2b696e50fde9"><div class="ttname"><a href="confuse_8h.html#ab1ff85d6346cdefeb2ec2b696e50fde9">CFG_FUNC</a></div><div class="ttdeci">#define CFG_FUNC(name, func)</div><div class="ttdoc">Initialize a function.</div><div class="ttdef"><b>Definition:</b> confuse.h:538</div></div>
        !           235: <div class="ttc" id="aconfuse_8h_html_a043d5c79624269e5f60f59a698e461a6"><div class="ttname"><a href="confuse_8h.html#a043d5c79624269e5f60f59a698e461a6">CFG_SEC</a></div><div class="ttdeci">#define CFG_SEC(name, opts, flags)</div><div class="ttdoc">Initialize a section.</div><div class="ttdef"><b>Definition:</b> confuse.h:527</div></div>
        !           236: <div class="ttc" id="aconfuse_8h_html_a20e3b90b5fce510154d4053db0c8eba4"><div class="ttname"><a href="confuse_8h.html#a20e3b90b5fce510154d4053db0c8eba4">cfg_opt_name</a></div><div class="ttdeci">const DLLIMPORT char *__export cfg_opt_name(cfg_opt_t *opt)</div><div class="ttdoc">Return the name of an option.</div><div class="ttdef"><b>Definition:</b> confuse.c:387</div></div>
        !           237: <div class="ttc" id="aconfuse_8h_html_a5eee21bf6b453b81d477314333d4c47c"><div class="ttname"><a href="confuse_8h.html#a5eee21bf6b453b81d477314333d4c47c">cfg_name</a></div><div class="ttdeci">const DLLIMPORT char *__export cfg_name(cfg_t *cfg)</div><div class="ttdoc">Return the name of a section.</div><div class="ttdef"><b>Definition:</b> confuse.c:380</div></div>
        !           238: <div class="ttc" id="aconfuse_8h_html_a65df72d236bcc3e7f22c5b2b5c24bded"><div class="ttname"><a href="confuse_8h.html#a65df72d236bcc3e7f22c5b2b5c24bded">CFGF_NONE</a></div><div class="ttdeci">#define CFGF_NONE</div><div class="ttdoc">Flags.</div><div class="ttdef"><b>Definition:</b> confuse.h:86</div></div>
        !           239: <div class="ttc" id="aconfuse_8h_html_a86b522a5daef5c07066b28f1585d2d77"><div class="ttname"><a href="confuse_8h.html#a86b522a5daef5c07066b28f1585d2d77">CFGF_MULTI</a></div><div class="ttdeci">#define CFGF_MULTI</div><div class="ttdoc">option may be specified multiple times (only applies to sections)</div><div class="ttdef"><b>Definition:</b> confuse.h:87</div></div>
        !           240: <div class="ttc" id="astructcfg__t_html"><div class="ttname"><a href="structcfg__t.html">cfg_t</a></div><div class="ttdoc">Data structure holding information about a &quot;section&quot;.</div><div class="ttdef"><b>Definition:</b> confuse.h:252</div></div>
        !           241: <div class="ttc" id="aconfuse_8h_html_aaa50eb2942ae8e7cb7f9ccbfe002b3cd"><div class="ttname"><a href="confuse_8h.html#aaa50eb2942ae8e7cb7f9ccbfe002b3cd">cfg_getint</a></div><div class="ttdeci">DLLIMPORT long int __export cfg_getint(cfg_t *cfg, const char *name)</div><div class="ttdoc">Returns the value of an integer option.</div><div class="ttdef"><b>Definition:</b> confuse.c:444</div></div>
        !           242: <div class="ttc" id="aconfuse_8h_html_aae5e08626bf53514a6ebf250580feba3"><div class="ttname"><a href="confuse_8h.html#aae5e08626bf53514a6ebf250580feba3">cfg_free</a></div><div class="ttdeci">DLLIMPORT int __export cfg_free(cfg_t *cfg)</div><div class="ttdoc">Free a cfg_t context.</div><div class="ttdef"><b>Definition:</b> confuse.c:1962</div></div>
        !           243: <div class="ttc" id="aconfuse_8h_html_a66a1002180229809620b9bf2d3b888a6"><div class="ttname"><a href="confuse_8h.html#a66a1002180229809620b9bf2d3b888a6">CFG_SUCCESS</a></div><div class="ttdeci">#define CFG_SUCCESS</div><div class="ttdoc">Return codes from cfg_parse(), cfg_parse_boolean(), and cfg_set*() functions.</div><div class="ttdef"><b>Definition:</b> confuse.h:105</div></div>
        !           244: <div class="ttc" id="aconfuse_8h_html_a4a9c34acc55cca63649c088d98053905"><div class="ttname"><a href="confuse_8h.html#a4a9c34acc55cca63649c088d98053905">cfg_getstr</a></div><div class="ttdeci">DLLIMPORT char *__export cfg_getstr(cfg_t *cfg, const char *name)</div><div class="ttdoc">Returns the value of a string option.</div><div class="ttdef"><b>Definition:</b> confuse.c:519</div></div>
        !           245: <div class="ttc" id="aconfuse_8h_html_a5b448a145f12b67e90bd4e6bd387f129"><div class="ttname"><a href="confuse_8h.html#a5b448a145f12b67e90bd4e6bd387f129">cfg_error</a></div><div class="ttdeci">DLLIMPORT void __export cfg_error(cfg_t *cfg, const char *fmt,...)</div><div class="ttdoc">Show a parser error.</div><div class="ttdef"><b>Definition:</b> confuse.c:1211</div></div>
        !           246: <!-- start footer part -->
        !           247: <hr class="footer"/><address class="footer"><small>
        !           248: Generated by &#160;<a href="http://www.doxygen.org/index.html">
        !           249: <img class="footer" src="doxygen.png" alt="doxygen"/>
        !           250: </a> 1.8.17
        !           251: </small></address>
        !           252: </body>
1.1       misho     253: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>