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: K name 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 $) 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 map both : unknown member map badname If the number of database maps that are sequenced exceeds the maximum allowed (MAXMAPSTACK in conf.h , currently 12), the following error is printed, and the overflow of database maps is ignored: Sequence map name : too many member maps ( max max) None of the K command switches can be used with the sequence type. If you try to use any, they will be wrongly interpreted as database-map names . |