summaryrefslogtreecommitdiffstats
path: root/docs/config.tex
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-10-13 22:41:34 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-10-13 22:41:34 +0000
commit550f17100a5e15f9a5ac96c2923e258c786ac454 (patch)
treef81e67632c355d1c9d1357c3d23728fec2c2267f /docs/config.tex
parent60c1f0f64d23003a19a07d6b9638542130f6641d (diff)
downloadmaster-31e0f0ae-550f17100a5e15f9a5ac96c2923e258c786ac454.tar.gz
master-31e0f0ae-550f17100a5e15f9a5ac96c2923e258c786ac454.tar.bz2
master-31e0f0ae-550f17100a5e15f9a5ac96c2923e258c786ac454.zip
add initial version of our new documentation - not too pretty yet, but will be improved
SVN-Revision: 5060
Diffstat (limited to 'docs/config.tex')
-rw-r--r--docs/config.tex79
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/config.tex b/docs/config.tex
new file mode 100644
index 0000000000..44b6689b53
--- /dev/null
+++ b/docs/config.tex
@@ -0,0 +1,79 @@
+\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}
+