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.