Syntax:
\begin{Verbatim}
-config <type> [<name>] # Section
- option <name> <value> # Option
+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
+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
+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
+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
\begin{Verbatim}
config_cb() {
- local type="$1"
- local name="$2"
- # commands to be run for every section
+ local type="$1"
+ local name="$2"
+ # commands to be run for every section
}
option_cb() {
- # commands to be run for every option
+ # commands to be run for every option
}
\end{Verbatim}
That allows you to process sections both before and after all options were
processed.
+Another way of iterating on config sections is using the \texttt{config\_foreach} command.
+
+Syntax:
+\begin{Verbatim}
+config_foreach <function name> [<sectiontype>] [<arguments...>]
+\end{Verbatim}
+
+This command will run the supplied function for every single config section in the currently
+loaded config. The section name will be passed to the function as argument 1.
+If the section type is added to the command line, the function will only be called for
+sections of the given type.
+
+
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
+# print the value of the option
+config_get <section> <option>
+
+# store the value inside the variable
+config_get <variable> <section> <option>
\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
+Additionally you can also modify or add options to sections by using the
\texttt{config\_set} command.
Syntax:
config_set <section> <option> <value>
\end{Verbatim}
+If a config section is unnamed, an automatically generated name will
+be assigned internally, e.g. \texttt{cfg1}, \texttt{cfg2}, ...
+
+While it is possible, using unnamed sections through these autogenerated names is
+strongly discouraged. Use callbacks or \texttt{config\_foreach} instead.
+