This document describes run-time configuration of libucw-based
programs using config files. For compile-time configuration,
-see <<configure>>.
+see <<configure:>>.
+[[terminology]]
Terminology
-----------
Program modules can define their own special types (such as network
masks or attribute names) and decide how are they parsed.
+[[format]]
Format of configuration files
-----------------------------
Numerical values can be succeeded by a unit. The following units are
supported:
+[[units]]
+
d=86400 k=1000 K=1024
h=3600 m=1000000 M=1048576
%=0.01 g=1000000000 G=1073741824
have to write a colon immediately after the attribute name, followed by
the name of the operation. The following operations are supported:
+[[operations]]
+
List:clear # removes all nodes
List:append { attr1=value1; ... } # adds a new node at the end
List:prepend { attr1=value1; ... } # adds a new node at the beginning
List:after { attr1=search1 } { ... } # insert a node after a found node
List:before { attr1=search1 } { ... } # insert a node before a found node
List:copy { attr1=search1 } { ... } # duplicate a node and edit the copy
+ List:reset { attr=value1; ... } # equivalent to :clear and :append
You can specify several attributes in the search condition and the nodes
are tested for equality in all these attributes. In the editing
The commands :clear, :append, and :prepend are also supported by var-length
arrays. The command :clear can also be used on string values. The following
-operations can be used on bitmaps: :set, :remove, :clear, and :all.
+operations can be used on bitmaps: :set (which is equal to :append and :prepend),
+:remove, :clear, and :all (set all bits).
+[[include]]
Including other files
---------------------
(Beware that this command has to be the last one on the line.)
+[[command_line]]
Command-line parameters
-----------------------
All these switches must be used before any other parameters of the
program.
+[[preprocess]]
Preprocessing
-------------
During compilation, all configuration files are pre-processed by a simple
C-like preprocessor, which supports `#ifdef`, `#ifndef`, `#if`,
`#elsif`, `#else` and `#endif` directives referring to compile-time
-configuration variables. `#if` and `#elsif` can contain any Perl expression
-where each `CONFIG_xyz` configuration variable is substituted to 0 or 1
-depending on its value.
+configuration variables (the ones detected by `configure` script, you
+can see list of them in `obj/autoconf.h`). `#if` and `#elsif` can contain
+any Perl expression where each `CONFIG_xyz` configuration variable is
+substituted to 0 or 1 depending on its value.
The preprocessor also substitutes `@VARIABLE@` by the value of the variable,
which must be defined.
+[[caveats]]
Caveats
-------