|
|
1.1 ! root 1: divert(10) ! 2: # ! 3: # Copyright (c) 1983 Eric P. Allman ! 4: # Copyright (c) 1988 The Regents of the University of California. ! 5: # All rights reserved. ! 6: # ! 7: # Redistribution and use in source and binary forms are permitted ! 8: # provided that the above copyright notice and this paragraph are ! 9: # duplicated in all such forms and that any documentation, ! 10: # advertising materials, and other materials related to such ! 11: # distribution and use acknowledge that the software was developed ! 12: # by the University of California, Berkeley. The name of the ! 13: # University may not be used to endorse or promote products derived ! 14: # from this software without specific prior written permission. ! 15: # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: # ! 19: # @(#)rule3.m4 1.18 (Berkeley) 2/15/89 ! 20: # ! 21: divert(0) ! 22: ########################### ! 23: # Name Canonicalization # ! 24: ########################### ! 25: S3 ! 26: ! 27: # handle "from:<>" special case ! 28: R$*<>$* $@@ turn into magic token ! 29: ! 30: # basic textual canonicalization -- note RFC733 heuristic here ! 31: R$*<$*<$*<$+>$*>$*>$* $4 3-level <> nesting ! 32: R$*<$*<$+>$*>$* $3 2-level <> nesting ! 33: R$*<$+>$* $2 basic RFC821/822 parsing ! 34: ! 35: # make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later ! 36: R@$+,$+ @$1:$2 change all "," to ":" ! 37: ! 38: # localize and dispose of route-based addresses ! 39: R@$+:$+ $@$>6<@$1>:$2 handle <route-addr> ! 40: ! 41: # more miscellaneous cleanup ! 42: R$+ $:$>8$1 host dependent cleanup ! 43: R$+:$*;@$+ $@$1:$2;@$3 list syntax ! 44: R$+:$*; $@$1:$2; list syntax ! 45: R$+@$+ $:$1<@$2> focus on domain ! 46: R$+<$+@$+> $1$2<@$3> move gaze right ! 47: R$+<@$+> $@$>6$1<@$2> already canonical ! 48: ! 49: # convert old-style addresses to a domain-based address ! 50: R$+^$+ $1!$2 convert ^ to ! ! 51: R$-!$+ $@$>6$2<@$1.UUCP> resolve uucp names ! 52: R$+.$-!$+ $@$>6$3<@$1.$2> domain uucps ! 53: R$+!$+ $@$>6$2<@$1.UUCP> uucp subdomains ! 54: R$+%$+ $:$>9$1%$2 user%host ! 55: R$+<@$+> $@$>6$1<@$2> already canonical ! 56: R$-.$+ $@$>6$2<@$1> host.user ! 57: ! 58: ! 59: ################################# ! 60: # special local conversions # ! 61: ################################# ! 62: ! 63: S6 ! 64: R$*<@$=w>$* $:$1<@$w>$3 get into u@$w form ! 65: R$*<@$=w.$D>$* $:$1<@$w>$3 ! 66: R$*<@$=U.UUCP>$* $:$1<@$w>$3 ! 67: ! 68: ################################ ! 69: # Change rightmost % to @. # ! 70: ################################ ! 71: ! 72: S9 ! 73: R$*%$* $1@$2 First make them all @'s. ! 74: R$*@$*@$* $1%$2@$3 Undo all but the last. ! 75: R$*@$* $@$1<@$2> Put back the brackets. ! 76:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.