\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 <type> [<name>] # Section option <name> <value> # 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{<name>}} to load config files. The function first checks for \textit{<name>} 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 <section> <option> # prints the value of the option config_get <variable> <section> <option> # 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 <section> <option> <value> \end{Verbatim}