<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\subsubsection{Structure of the configuration files}

The config files are divided into sections and options/values.

Every section has a type, but does not necessarily have a name.
Every option has a name and a value and is assigned to the section
it was written under.

Syntax:

\begin{Verbatim}
config    &lt;type&gt; [&lt;name&gt;]	     # Section
  option  &lt;name&gt;  &lt;value&gt;      # Option
\end{Verbatim}

Every parameter needs to be a single string and is formatted exactly
like a parameter for a shell function. The same rules for Quoting and 
special characters also apply, as it is parsed by the shell.

\subsubsection{Parsing configuration files in custom scripts}

To be able to load configuration files, you need to include the common 
functions with:

\begin{Verbatim}
. /etc/functions.sh
\end{Verbatim}

Then you can use \texttt{config\_load \textit{&lt;name&gt;}} to load config files. The function 
first checks for \textit{&lt;name&gt;} as absolute filename and falls back to loading 
it from \texttt{/etc/config} (which is the most common way of using it).

If you want to use special callbacks for sections and/or options, you
need to define the following shell functions before running \texttt{config\_load}
(after including \texttt{/etc/functions.sh}):

\begin{Verbatim}
config_cb() {
	local type="$1"
	local name="$2"
	# commands to be run for every section
}

option_cb() {
	# commands to be run for every option
}
\end{Verbatim}

You can also alter \texttt{option\_cb} from \texttt{config\_cb} based on the section type.
This allows you to process every single config section based on its type
individually.

\texttt{config\_cb} is run every time a new section starts (before options are being
processed). You can access the last section through the \texttt{CONFIG\_SECTION}
variable. Also an extra call to \texttt{config\_cb} (without a new section) is generated
after \texttt{config\_load} is done.
That allows you to process sections both before and after all options were
processed.

You can access already processed options with the \texttt{config\_get} command
Syntax:

\begin{Verbatim}
config_get &lt;section&gt; &lt;option&gt;            # prints the value of the option
config_get &lt;variable&gt; &lt;section&gt; &lt;option&gt; # stores the value inside the variable
\end{Verbatim}

In busybox ash the three-option \texttt{config\_get} is faster, because it does not
result in an extra fork, so it is the preferred way.

Additionally you can also modify or add options to sections by using the 
\texttt{config\_set} command.

Syntax:

\begin{Verbatim}
config_set &lt;section&gt; &lt;option&gt; &lt;value&gt;
\end{Verbatim}

</pre></body></html>