Configuration file: config.cf
ML specific configuration file: config.cf
You can customize each ML differently.
&fml4; and &fmldevel; are same in this point.
In the case of &fml4;, there are $DIR and config.ph in ML home
directory. This "config.ph" file is a perl script.
There is a config.cf file in &fmldevel;, too.
But the format is diffrent. The format is like this:
variable = value
.
It is similar to postfix or .ini files.
Problems in &fml4;
The configuration file of &fml4;, config.ph, is a perl script.
Perl script is good for human editing but
it is not suitable for configuration tools.
It implies it is difficult to prepare configuration tools for config.ph.
So, in &fml4; two files, cf and config.ph are used.
It is similar to the conversion from .mc to .cf in sendmail.
The use of cf is suitable for configuration tools but introduces
another difficulty such as inconsistency between cf and config.ph
since human may edit config.ph but forgets cf editing. So, &fmldevel;
introduces a new format as .cf files. This format is postfix flavour.
config.cf format
The format of "config.cf" is "variable = value syntax".
If plural values are required, space or "\n" is a separator.
variable = value
valiable = value1 value2 value3
variable = value1
value2
value3
The syntax of files with the suffix .cf e.g.
/etc/fml/main.cf
, default_config.cf,
is same.
$variable at the right hand is expanded.
For example,
a = value1
b = $a/value2
is expanded to
a = value1
b = value1/value2
.
The variable expansion is done at the last.
So, the following definitions
a = value1
b = $a/value2/$c
c = value3
a = value4
are expaned to
b = valu4/value2/value3
since the last $a overwrites the previous one.
Extension to postfix style
variable += value
variable -= value
is used for adding or removing the specific value.
x = a b c d
x -= b
becoms
x = a c d
.
Another case,
x = a b c d
x += e
becomes
x = a b c d e
.
Overload variables in config.cf
Overloading of .cf files is possible.
It overwrites variables.
It enables separation of configuration files e.g.
the default file,
the host specific file,
the domain specific file,
and
ML specific file.
Fml reads these files sequentially. At the last, fml reads ML specific
config.cf and expand variables when variable reading is requested.
Modifying/adding variables
after all configuration files have been loaded.
The variable expansion is always done.
If some value with $ is added to some variable,
the next reading operation
tie() operation of perl
causes variable expansion.
For example, set
$config->{ key } = '$ml_home_dir/value';
here.
The next read operation e.g.
$config->{ another_key }
(where the key is any) evaluates the variable expansion.
Internal of variable expansion
%_fml_config hash holds pairs of key and value.
The format is $dir/$file in this hash, it is not expanded.
get() returns the value of %_fml_config_result.
The value in this hash is after the variable expansion.
The variable is expanded in calling get() method.
Variable list (alphabetical order)
&var.table.list.variables;
Variable list (class based)
&var.table.class.variables;