General-Purpose Mail Filter
Two types of comments are allowed: C-style, enclosed between ‘/*’ and ‘*/’, and shell-style, starting with ‘#’ character and extending up to the end of line:
/* This is a comment. */ # And this too.
There are, however, several special cases, where the characters following ‘#’ are not ignored.
If the first line begins with ‘#!/’ or ‘#! /’, this is treated as a start of a multi-line comment, which is closed by the characters ‘!#’ on a line by themselves. This feature allows for writing sophisticated scripts. See top-block, for a detailed description.
If ‘#’ is followed by word ‘include’ (with optional whitespace between them), this statement requires inclusion of the specified file, as in C. There are two forms of the ‘#include’ statement:
The quotes around file in the second form quotes are optional.
Both forms are equivalent if file is an absolute file name. Otherwise, the first form will look for file in the include search path. The second one will look for it in the current working directory first, and, if not found there, in the include search path.
The default include search path is:
Where prefix is the installation prefix.
New directories can be appended in front of it using -I
(--include) command line option, or
configuration statement (see include-path).
For example, invoking
$ mailfromd -I/var/mailfromd -I/com/mailfromd
creates the following include search path
#include, there is also a special form
#include_once, that has the same syntax:
#include_once <file> #include_once "file"
This form works exactly as
#include, except that, if the
file has already been included, it will not be included
again. As the name suggests, it will be included only once.
This form should be used to prevent re-inclusions of a code, which can cause problems due to function redefinitions, variable reassignments etc.
A line in the form
#line number "identifier"
causes the MFL compiler to believe, for purposes of error diagnostics, that the line number of the next source line is given by number and the current input file is named by identifier. If the identifier is absent, the remembered file name does not change.
This document was generated on January 3, 2019 using makeinfo.Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.