sequence

Search a series of database maps V8.7 and later

The sequence type allows you to declare a single name that will be used to search a series of databases. It is declared like this:

Kname sequence  map1  map2 ...

Here, a key (in a later rule set) will be looked up first in the database map named map1, and if not found there, it will be looked up in the database map named map2. The type of each of the listed database maps should logically relate but need not be the same. Consider, for example, a rule’s RHS, where a lookup will match if the workspace contains either a user’s login name or the name of a host, with the hostname taking precedence:

Khosts host  -a<+> /etc/hosts
Kpasswd user -a<-> /etc/passwd
Kboth sequence hosts passwd

R$-     $: $(both $1 $)

Here, we say that the database map named both is of type sequence. Any single token in the LHS will be looked up first in the database map named hosts, and if it is found there the hostname will be returned with a <+> appended. If it is not found in the hosts database map, it will be next looked up in the passwd database map. If it is found there, the original workspace will be returned with a <-> appended. If the workspace is not found in either database map, the lookup fails and the workspace remains unchanged.

If any database map in the series of database maps declared with the K command does not exist, as for example:

Kboth sequence hosts passwd badname

the following error is logged and printed, and that database map is ignored:

Sequence ...

Get sendmail, 4th 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.