1<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>8.&#160;Functions</title><link rel="stylesheet" href="tutorial.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="libConfuse tutorial" /><link rel="up" href="index.html" title="libConfuse tutorial" /><link rel="prev" href="ar01s07.html" title="7.&#160;Value parsing callback" /><link rel="next" href="ar01s09.html" title="9.&#160;Saving configuration files" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">8.&#160;Functions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a>&#160;</td><th width="60%" align="center">&#160;</th><td width="20%" align="right">&#160;<a accesskey="n" href="ar01s09.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="8.&#160;Functions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id442474"></a>8.&#160;Functions</h2></div></div></div><p>
4            libConfuse supports functions to parse options that does not fit
5            well in the general syntax. Functions can be called with a variable
6            number of arguments. No data from the function or any arguments are
7            stored by libConfuse after the function has run. It is up to the caller
8            to process and/or save the data.
9        </p><p>
10            A function is defined with a <code class="function">CFG_FUNC</code> macro.
11            It takes two arguments: the name of the function and a function
12            callback. The callback is defined as:
13        </p><pre class="programlisting">
14typedef int (*cfg_func_t)(cfg_t *cfg, cfg_opt_t *opt,
15                          int argc, const char **argv);
16        </pre><p>
17        </p><div class="sect2" title="8.1.&#160;Predefined functions"><div class="titlepage"><div><div><h3 class="title"><a id="id442506"></a>8.1.&#160;Predefined functions</h3></div></div></div><p>
18                Currently there is only one pre-defined function:
19                <code class="function">cfg_include()</code>. This function includes
20                another configuration file. Configuration data is immediately
21                read from the included file, and is returned to the position
22                right after the include() statement upon end of file.
23            </p><p>
24                To use this function, include a <code class="function">CFG_FUNC()</code>
25                entry in your options:
26            </p><pre class="programlisting">
27cfg_opt_t opts[] = {
28    CFG_FUNC("include", cfg_include),
29    CFG_END()
30};
31            </pre><p>
32                In the configuration file, it is used in the following way:
33            </p><pre class="programlisting">
34include("included.conf")
35            </pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a>&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right">&#160;<a accesskey="n" href="ar01s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">7.&#160;Value parsing callback&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;9.&#160;Saving configuration files</td></tr></table></div></body></html>
36