Node:Require Statement, Next:Comparators, Previous:Preprocessor, Up:Input Language
Syntax: require string; require string-list;
The require statement informs the parser that a script makes use of a certain extension. Multiple capabilities can be declared using the second form of the statement. The actual handling of a capability name depends on its suffix.
If the name starts with comparator-
, it is understood
as a request to use the specified comparator. The comparator name
consists of the characters following the suffix.
If the name starts with test-
, it means a request to use
the given test. The test name consists of the characters following
the suffix.
Otherwise, the capability is understood as a name of an action to be used.
The require
statement, if present, must be used before any other
statement that is using the required capability. As an extension, the GNU
sieve allows the require
and any other statements to be
interspersed.
By default the following actions and comparators are always required:
Example:
require ["fileinto", "reject"]; require "fileinto"; require "comparator-i;ascii-numeric";
When processing arguments for require
statement, GNU libsieve
uses the following algorithm:
comparator-
it is looked up in the comparator table. If it
begins with test-
, the test table is used instead. Otherwise
the name is looked up in the action table.
comparator-
or
test-
prefix is stripped. Then, any character other than
alphanumeric characters, .
and ,
is replaced with
dash (-
). The name thus obtained is used as a file name
of an external loadable module.
$prefix/lib/mailutils
.
-L
options in
the command line
#searchpath
directive.
/etc/ld.so.conf
and the value of the environment variable
LD_LIBRARY_PATH).
The value of LTDL_LIBRARY_PATH and LD_LIBRARY_PATH must be a
colon-separated list of absolute directories, for example,
"/usr/lib/mypkg:/lib/foo"
.
In any of these directories, libsieve
first attempts to find
and load the given filename. If this fails, it tries to append the
following suffixes to the file name:
.la
.so
, .sl
, etc.
libsieve
executes its
initialization function (see below) and again looks up the name
in the symbol table. If found, search terminates successfully.
libsieve
then
issues the following diagnostic message:
source for the required action NAME is not available