Name
macro
Synopsis
Not only is it possible to use defined macros in rule sets, as of
V8.10 sendmail it is also possible to place new
values into defined macros from inside rule sets. This marvel is
accomplished using the macro
type database map. It
is an internal type, always available regardless of how
sendmail was compiled.
The macro
type can be used in three ways. For
example:
Kstore_it_in macro R$* $: $(store_it_in {MyMacro} $@ $1 $) ← store new value into macro R$* $: $(store_it_in {MyMacro} $@ $) ← clear macro to empty string R$* $: $(store_it_in {MyMacro} $)← undefine the macro
The first line declares store_it_in
to be the name
of a macro
database-map type that is used in the
rules that follow. Those three rules show three different ways to
affect the value stored in the macro {MyMacro}
.
Note that the macro name must not be prefixed with a
$
. If it is, its value will be used as the name,
instead of its actual name. We cover the use of
$&
later.
The first rule shows that the value to be stored into the macro is
passed as the first $@
argument, the
$1
. If this value is that of an undefined macro,
the stored result is an empty string. Otherwise, the value is stored
as-is into the {MyMacro}
macro. If the value
contains macro-like expressions (such as $x
),
their values are copied used. If {MyMacro}
was
previously undefined, it becomes defined.
The second rule shows what happens when the value to be stored is missing (or undefined). A missing value has the effect of clearing the ...
Get Sendmail, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.