home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume24 / newsgate / part03 < prev    next >
SHell self-extracting ARchive  |  1991-10-09  |  54.3 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail text default
99% file C source, ASCII text default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/rfc822 default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 32 34 69 30 35 |Subject:| v24i05|
|00000010| 33 3a 20 20 4e 65 77 73 | 2f 6d 61 69 6c 20 67 61 |3: News|/mail ga|
|00000020| 74 65 77 61 79 20 70 61 | 63 6b 61 67 65 2c 20 50 |teway pa|ckage, P|
|00000030| 61 72 74 30 33 2f 30 34 | 0a 4e 65 77 73 67 72 6f |art03/04|.Newsgro|
|00000040| 75 70 73 3a 20 63 6f 6d | 70 2e 73 6f 75 72 63 65 |ups: com|p.source|
|00000050| 73 2e 75 6e 69 78 0a 41 | 70 70 72 6f 76 65 64 3a |s.unix.A|pproved:|
|00000060| 20 72 73 61 6c 7a 40 75 | 75 6e 65 74 2e 55 55 2e | rsalz@u|unet.UU.|
|00000070| 4e 45 54 0a 58 2d 43 68 | 65 63 6b 73 75 6d 2d 53 |NET.X-Ch|ecksum-S|
|00000080| 6e 65 66 72 75 3a 20 36 | 33 34 32 37 38 36 63 20 |nefru: 6|342786c |
|00000090| 32 33 64 36 32 31 32 30 | 20 62 61 34 31 35 37 32 |23d62120| ba41572|
|000000a0| 64 20 33 33 64 30 36 37 | 65 32 0a 0a 53 75 62 6d |d 33d067|e2..Subm|
|000000b0| 69 74 74 65 64 2d 62 79 | 3a 20 52 69 63 68 20 24 |itted-by|: Rich $|
|000000c0| 61 6c 7a 20 3c 72 73 61 | 6c 7a 40 62 62 6e 2e 63 |alz <rsa|lz@bbn.c|
|000000d0| 6f 6d 3e 0a 50 6f 73 74 | 69 6e 67 2d 6e 75 6d 62 |om>.Post|ing-numb|
|000000e0| 65 72 3a 20 56 6f 6c 75 | 6d 65 20 32 34 2c 20 49 |er: Volu|me 24, I|
|000000f0| 73 73 75 65 20 35 33 0a | 41 72 63 68 69 76 65 2d |ssue 53.|Archive-|
|00000100| 6e 61 6d 65 3a 20 6e 65 | 77 73 67 61 74 65 2f 70 |name: ne|wsgate/p|
|00000110| 61 72 74 30 33 0a 0a 23 | 21 20 2f 62 69 6e 2f 73 |art03..#|! /bin/s|
|00000120| 68 0a 23 20 54 68 69 73 | 20 69 73 20 61 20 73 68 |h.# This| is a sh|
|00000130| 65 6c 6c 20 61 72 63 68 | 69 76 65 2e 20 20 52 65 |ell arch|ive. Re|
|00000140| 6d 6f 76 65 20 61 6e 79 | 74 68 69 6e 67 20 62 65 |move any|thing be|
|00000150| 66 6f 72 65 20 74 68 69 | 73 20 6c 69 6e 65 2c 20 |fore thi|s line, |
|00000160| 74 68 65 6e 20 66 65 65 | 64 20 69 74 0a 23 20 69 |then fee|d it.# i|
|00000170| 6e 74 6f 20 61 20 73 68 | 65 6c 6c 20 76 69 61 20 |nto a sh|ell via |
|00000180| 22 73 68 20 66 69 6c 65 | 22 20 6f 72 20 73 69 6d |"sh file|" or sim|
|00000190| 69 6c 61 72 2e 20 20 54 | 6f 20 6f 76 65 72 77 72 |ilar. T|o overwr|
|000001a0| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|000001b0| 65 73 2c 0a 23 20 74 79 | 70 65 20 22 73 68 20 66 |es,.# ty|pe "sh f|
|000001c0| 69 6c 65 20 2d 63 22 2e | 0a 23 20 54 68 65 20 74 |ile -c".|.# The t|
|000001d0| 6f 6f 6c 20 74 68 61 74 | 20 67 65 6e 65 72 61 74 |ool that| generat|
|000001e0| 65 64 20 74 68 69 73 20 | 61 70 70 65 61 72 65 64 |ed this |appeared|
|000001f0| 20 69 6e 20 74 68 65 20 | 63 6f 6d 70 2e 73 6f 75 | in the |comp.sou|
|00000200| 72 63 65 73 2e 75 6e 69 | 78 20 6e 65 77 73 67 72 |rces.uni|x newsgr|
|00000210| 6f 75 70 3b 0a 23 20 73 | 65 6e 64 20 6d 61 69 6c |oup;.# s|end mail|
|00000220| 20 74 6f 20 63 6f 6d 70 | 2d 73 6f 75 72 63 65 73 | to comp|-sources|
|00000230| 2d 75 6e 69 78 40 75 75 | 6e 65 74 2e 75 75 2e 6e |-unix@uu|net.uu.n|
|00000240| 65 74 20 69 66 20 79 6f | 75 20 77 61 6e 74 20 74 |et if yo|u want t|
|00000250| 68 61 74 20 74 6f 6f 6c | 2e 0a 23 20 43 6f 6e 74 |hat tool|..# Cont|
|00000260| 65 6e 74 73 3a 20 20 67 | 61 74 65 2e 68 20 68 64 |ents: g|ate.h hd|
|00000270| 72 2e 63 20 6c 65 78 2e | 6c 20 6d 61 69 6c 2d 69 |r.c lex.|l mail-i|
|00000280| 6e 74 65 72 66 61 63 65 | 20 6d 61 69 6c 32 6e 65 |nterface| mail2ne|
|00000290| 77 73 2e 31 20 6d 69 73 | 63 2e 63 0a 23 20 20 20 |ws.1 mis|c.c.# |
|000002a0| 6e 65 77 73 32 6d 61 69 | 6c 2e 31 20 73 69 67 6e |news2mai|l.1 sign|
|000002b0| 6f 66 66 2e 63 20 73 79 | 73 65 78 69 74 73 2e 68 |off.c sy|sexits.h|
|000002c0| 20 75 75 63 70 2d 32 2d | 69 6e 65 74 0a 23 20 57 | uucp-2-|inet.# W|
|000002d0| 72 61 70 70 65 64 20 62 | 79 20 72 73 61 6c 7a 40 |rapped b|y rsalz@|
|000002e0| 6c 69 74 63 68 69 2e 62 | 62 6e 2e 63 6f 6d 20 6f |litchi.b|bn.com o|
|000002f0| 6e 20 46 72 69 20 4d 61 | 72 20 31 35 20 31 36 3a |n Fri Ma|r 15 16:|
|00000300| 34 32 3a 32 37 20 31 39 | 39 31 0a 50 41 54 48 3d |42:27 19|91.PATH=|
|00000310| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|00000320| 73 72 2f 75 63 62 20 3b | 20 65 78 70 6f 72 74 20 |sr/ucb ;| export |
|00000330| 50 41 54 48 0a 65 63 68 | 6f 20 49 66 20 74 68 69 |PATH.ech|o If thi|
|00000340| 73 20 61 72 63 68 69 76 | 65 20 69 73 20 63 6f 6d |s archiv|e is com|
|00000350| 70 6c 65 74 65 2c 20 79 | 6f 75 20 77 69 6c 6c 20 |plete, y|ou will |
|00000360| 73 65 65 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |see the |followin|
|00000370| 67 20 6d 65 73 73 61 67 | 65 3a 0a 65 63 68 6f 20 |g messag|e:.echo |
|00000380| 27 20 20 20 20 20 20 20 | 20 20 20 22 73 68 61 72 |' | "shar|
|00000390| 3a 20 45 6e 64 20 6f 66 | 20 61 72 63 68 69 76 65 |: End of| archive|
|000003a0| 20 33 20 28 6f 66 20 34 | 29 2e 22 27 0a 69 66 20 | 3 (of 4|)."'.if |
|000003b0| 74 65 73 74 20 2d 66 20 | 27 67 61 74 65 2e 68 27 |test -f |'gate.h'|
|000003c0| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|000003d0| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|000003e0| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|000003f0| 20 63 6c 6f 62 62 65 72 | 20 65 78 69 73 74 69 6e | clobber| existin|
|00000400| 67 20 66 69 6c 65 20 5c | 22 27 67 61 74 65 2e 68 |g file \|"'gate.h|
|00000410| 27 5c 22 0a 65 6c 73 65 | 0a 20 20 65 63 68 6f 20 |'\".else|. echo |
|00000420| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00000430| 20 5c 22 27 67 61 74 65 | 2e 68 27 5c 22 20 5c 28 | \"'gate|.h'\" \(|
|00000440| 36 35 31 38 20 63 68 61 | 72 61 63 74 65 72 73 5c |6518 cha|racters\|
|00000450| 29 0a 20 20 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |). sed |"s/^X//"|
|00000460| 20 3e 27 67 61 74 65 2e | 68 27 20 3c 3c 27 45 4e | >'gate.|h' <<'EN|
|00000470| 44 5f 4f 46 5f 46 49 4c | 45 27 0a 58 2f 2a 0a 58 |D_OF_FIL|E'.X/*.X|
|00000480| 2a 2a 20 20 48 45 41 44 | 45 52 20 46 49 4c 45 20 |** HEAD|ER FILE |
|00000490| 46 4f 52 20 4e 45 57 53 | 2f 4d 41 49 4c 20 47 41 |FOR NEWS|/MAIL GA|
|000004a0| 54 45 57 41 59 20 43 4f | 44 45 2e 0a 58 2a 2a 20 |TEWAY CO|DE..X** |
|000004b0| 20 24 48 65 61 64 65 72 | 3a 20 2f 6e 66 73 2f 70 | $Header|: /nfs/p|
|000004c0| 61 70 61 79 61 2f 75 32 | 2f 72 73 61 6c 7a 2f 73 |apaya/u2|/rsalz/s|
|000004d0| 72 63 2f 6e 65 77 73 67 | 61 74 65 2f 73 72 63 2f |rc/newsg|ate/src/|
|000004e0| 52 43 53 2f 67 61 74 65 | 2e 68 2c 76 20 31 2e 31 |RCS/gate|.h,v 1.1|
|000004f0| 32 20 39 31 2f 30 33 2f | 31 33 20 31 35 3a 35 39 |2 91/03/|13 15:59|
|00000500| 3a 32 33 20 72 73 61 6c | 7a 20 45 78 70 20 24 0a |:23 rsal|z Exp $.|
|00000510| 58 2a 2f 0a 58 0a 58 0a | 58 2f 2a 0a 58 2a 2a 20 |X*/.X.X.|X/*.X** |
|00000520| 20 53 54 41 52 54 20 4f | 46 20 43 4f 4e 46 49 47 | START O|F CONFIG|
|00000530| 55 52 41 54 49 4f 4e 20 | 53 45 43 54 49 4f 4e 0a |URATION |SECTION.|
|00000540| 58 2a 2f 0a 58 0a 58 0a | 58 2f 2a 20 50 61 74 68 |X*/.X.X.|X/* Path|
|00000550| 73 20 74 6f 20 73 6f 6d | 65 20 70 61 72 74 73 20 |s to som|e parts |
|00000560| 6f 66 20 79 6f 75 72 20 | 6e 65 74 6e 65 77 73 20 |of your |netnews |
|00000570| 69 6e 73 74 61 6c 6c 61 | 74 69 6f 6e 2e 20 20 52 |installa|tion. R|
|00000580| 65 71 75 69 72 65 64 2e | 20 2a 2f 0a 58 23 64 65 |equired.| */.X#de|
|00000590| 66 69 6e 65 20 49 4e 45 | 57 53 09 09 22 2f 75 73 |fine INE|WS.."/us|
|000005a0| 72 2f 6c 69 62 2f 6e 65 | 77 73 2f 69 6e 65 77 73 |r/lib/ne|ws/inews|
|000005b0| 22 0a 58 23 64 65 66 69 | 6e 65 20 41 43 54 49 56 |".X#defi|ne ACTIV|
|000005c0| 45 09 09 22 2f 75 73 72 | 2f 6c 69 62 2f 6e 65 77 |E.."/usr|/lib/new|
|000005d0| 73 2f 61 63 74 69 76 65 | 22 0a 58 23 64 65 66 69 |s/active|".X#defi|
|000005e0| 6e 65 20 4e 47 44 45 4c | 49 4d 09 09 27 2c 27 0a |ne NGDEL|IM..','.|
|000005f0| 58 0a 58 0a 58 2f 2a 20 | 49 6e 20 77 72 69 74 69 |X.X.X/* |In writi|
|00000600| 6e 67 20 50 61 74 68 73 | 20 69 6e 74 6f 20 46 72 |ng Paths| into Fr|
|00000610| 6f 6d 20 61 64 64 72 65 | 73 73 65 73 2c 20 77 65 |om addre|sses, we|
|00000620| 20 63 61 6e 20 6c 6f 6f | 6b 20 61 74 20 74 68 65 | can loo|k at the|
|00000630| 20 6f 75 74 70 75 74 0a | 58 20 2a 20 6f 66 20 75 | output.|X * of u|
|00000640| 75 6e 61 6d 65 20 66 72 | 6f 6d 20 74 68 65 20 4c |uname fr|om the L|
|00000650| 2e 73 79 73 20 66 69 6c | 65 2e 20 20 44 65 66 69 |.sys fil|e. Defi|
|00000660| 6e 65 20 62 6f 74 68 20 | 6f 72 20 6e 65 69 74 68 |ne both |or neith|
|00000670| 65 72 20 6f 66 20 74 68 | 65 20 6e 65 78 74 0a 58 |er of th|e next.X|
|00000680| 20 2a 20 74 77 6f 2e 20 | 20 57 65 20 63 61 6e 20 | * two. | We can |
|00000690| 61 6c 73 6f 20 6d 61 70 | 20 73 6f 6d 65 20 55 55 |also map| some UU|
|000006a0| 43 50 20 6e 61 6d 65 73 | 20 74 6f 20 74 68 65 69 |CP names| to thei|
|000006b0| 72 20 64 6f 6d 61 69 6e | 20 6e 61 6d 65 73 2c 20 |r domain| names, |
|000006c0| 69 66 0a 58 20 2a 20 74 | 68 65 20 74 68 69 72 64 |if.X * t|he third|
|000006d0| 20 6c 69 6e 65 20 69 73 | 20 65 6e 61 62 6c 65 64 | line is| enabled|
|000006e0| 2e 20 20 54 68 65 20 55 | 55 43 50 5f 49 4e 45 54 |. The U|UCP_INET|
|000006f0| 20 73 68 6f 75 6c 64 20 | 6d 61 74 63 68 20 74 68 | should |match th|
|00000700| 65 20 76 61 6c 75 65 0a | 58 20 2a 20 69 6e 20 74 |e value.|X * in t|
|00000710| 68 65 20 4d 61 6b 65 66 | 69 6c 65 2e 20 20 54 68 |he Makef|ile. Th|
|00000720| 69 73 20 76 69 6f 6c 61 | 74 65 73 20 74 68 65 20 |is viola|tes the |
|00000730| 22 77 72 69 74 65 20 6f | 6e 63 65 22 20 72 75 6c |"write o|nce" rul|
|00000740| 65 2c 20 62 75 74 20 69 | 74 27 73 0a 58 20 2a 20 |e, but i|t's.X * |
|00000750| 74 6f 6f 20 6d 75 63 68 | 20 6f 66 20 61 20 70 61 |too much| of a pa|
|00000760| 69 6e 20 74 6f 20 66 69 | 78 20 66 6f 72 20 74 68 |in to fi|x for th|
|00000770| 69 73 20 6f 6e 65 20 73 | 79 6d 62 6f 6c 2e 20 2a |is one s|ymbol. *|
|00000780| 2f 0a 58 23 64 65 66 69 | 6e 65 20 55 55 4e 41 4d |/.X#defi|ne UUNAM|
|00000790| 45 09 09 22 2f 75 73 72 | 2f 6c 69 62 2f 6e 65 77 |E.."/usr|/lib/new|
|000007a0| 73 2f 2e 61 64 6d 69 6e | 2f 75 75 6e 61 6d 65 2e |s/.admin|/uuname.|
|000007b0| 6f 75 74 22 0a 58 23 64 | 65 66 69 6e 65 20 4c 5f |out".X#d|efine L_|
|000007c0| 53 59 53 09 09 22 2f 75 | 73 72 2f 6c 69 62 2f 75 |SYS.."/u|sr/lib/u|
|000007d0| 75 63 70 2f 4c 2e 73 79 | 73 22 0a 58 23 64 65 66 |ucp/L.sy|s".X#def|
|000007e0| 69 6e 65 20 55 55 43 50 | 5f 49 4e 45 54 09 22 2f |ine UUCP|_INET."/|
|000007f0| 75 73 72 2f 6c 69 62 2f | 6e 65 77 73 2f 2e 61 64 |usr/lib/|news/.ad|
|00000800| 6d 69 6e 2f 75 75 63 70 | 2d 32 2d 69 6e 65 74 22 |min/uucp|-2-inet"|
|00000810| 0a 58 0a 58 0a 58 2f 2a | 20 57 68 65 72 65 20 64 |.X.X.X/*| Where d|
|00000820| 6f 65 73 20 74 68 65 20 | 63 6f 6e 74 72 6f 6c 20 |oes the |control |
|00000830| 66 69 6c 65 20 66 6f 72 | 20 74 61 6c 6b 2e 66 6f |file for| talk.fo|
|00000840| 6f 20 6c 69 76 65 3f 0a | 58 20 2a 09 49 4e 5f 4f |o live?.|X *.IN_O|
|00000850| 4e 45 50 4c 41 43 45 3a | 09 73 70 65 63 69 66 69 |NEPLACE:|.specifi|
|00000860| 65 64 20 66 69 6c 65 6e | 61 6d 65 0a 58 20 2a 09 |ed filen|ame.X *.|
|00000870| 49 4e 5f 53 50 4f 4f 4c | 44 49 52 3a 09 2f 75 73 |IN_SPOOL|DIR:./us|
|00000880| 72 2f 73 70 6f 6f 6c 2f | 6e 65 77 73 2f 74 61 6c |r/spool/|news/tal|
|00000890| 6b 2f 66 6f 6f 2f 72 65 | 63 6e 65 77 73 2e 63 6d |k/foo/re|cnews.cm|
|000008a0| 64 0a 58 20 2a 09 49 4e | 5f 43 4d 44 44 49 52 3a |d.X *.IN|_CMDDIR:|
|000008b0| 09 2f 75 73 72 2f 6c 69 | 62 2f 6e 65 77 73 2f 2e |./usr/li|b/news/.|
|000008c0| 61 64 6d 69 6e 2f 74 61 | 6c 6b 2e 66 6f 6f 0a 58 |admin/ta|lk.foo.X|
|000008d0| 20 2a 20 4f 6e 65 20 6f | 66 20 74 68 65 73 65 20 | * One o|f these |
|000008e0| 69 73 20 72 65 71 75 69 | 72 65 64 2c 20 62 75 74 |is requi|red, but|
|000008f0| 20 79 6f 75 20 63 61 6e | 20 73 65 74 20 49 4e 5f | you can| set IN_|
|00000900| 4f 4e 45 50 4c 41 43 45 | 20 74 6f 20 2f 64 65 76 |ONEPLACE| to /dev|
|00000910| 2f 6e 75 6c 6c 20 74 6f | 0a 58 20 2a 20 64 69 73 |/null to|.X * dis|
|00000920| 61 62 6c 65 20 74 68 65 | 20 6e 65 77 73 67 72 6f |able the| newsgro|
|00000930| 75 70 20 65 64 69 74 69 | 6e 67 2e 20 2a 2f 0a 58 |up editi|ng. */.X|
|00000940| 2f 2a 65 66 69 6e 65 20 | 49 4e 5f 4f 4e 45 50 4c |/*efine |IN_ONEPL|
|00000950| 41 43 45 09 22 2f 64 65 | 76 2f 6e 75 6c 6c 22 09 |ACE."/de|v/null".|
|00000960| 09 2f 2a 20 2e 2e 20 2a | 2f 0a 58 2f 2a 65 66 69 |./* .. *|/.X/*efi|
|00000970| 6e 65 20 49 4e 5f 53 50 | 4f 4f 4c 44 49 52 09 22 |ne IN_SP|OOLDIR."|
|00000980| 2f 75 73 72 2f 73 70 6f | 6f 6c 2f 6e 65 77 73 22 |/usr/spo|ol/news"|
|00000990| 09 2f 2a 20 2e 2e 20 2a | 2f 0a 58 23 64 65 66 69 |./* .. *|/.X#defi|
|000009a0| 6e 65 09 49 4e 5f 43 4d | 44 44 49 52 09 22 2f 75 |ne.IN_CM|DDIR."/u|
|000009b0| 73 72 2f 6c 69 62 2f 6e | 65 77 73 2f 2e 61 64 6d |sr/lib/n|ews/.adm|
|000009c0| 69 6e 22 09 2f 2a 20 2e | 2e 20 2a 2f 0a 58 0a 58 |in"./* .|. */.X.X|
|000009d0| 0a 58 2f 2a 20 57 68 61 | 74 20 64 6f 20 79 6f 75 |.X/* Wha|t do you|
|000009e0| 20 77 61 6e 74 20 74 6f | 20 64 6f 20 77 69 74 68 | want to| do with|
|000009f0| 20 74 68 65 20 50 61 74 | 68 3a 20 6c 69 6e 65 3f | the Pat|h: line?|
|00000a00| 20 20 50 75 74 20 69 6e | 20 61 20 66 69 78 65 64 | Put in| a fixed|
|00000a10| 20 73 74 72 69 6e 67 0a | 58 20 2a 20 28 73 75 63 | string.|X * (suc|
|00000a20| 68 20 61 73 20 70 6f 69 | 6e 74 69 6e 67 20 74 6f |h as poi|nting to|
|00000a30| 20 61 20 6d 61 69 6c 20 | 72 65 66 6c 65 63 74 6f | a mail |reflecto|
|00000a40| 72 20 73 61 79 69 6e 67 | 20 22 44 6f 6e 27 74 20 |r saying| "Don't |
|00000a50| 74 72 75 73 74 20 50 61 | 74 68 3a 0a 58 20 2a 20 |trust Pa|th:.X * |
|00000a60| 6c 69 6e 65 73 20 61 73 | 20 61 20 77 61 79 20 74 |lines as| a way t|
|00000a70| 6f 20 72 65 70 6c 79 22 | 29 2e 20 20 50 75 74 20 |o reply"|). Put |
|00000a80| 61 20 66 69 78 65 64 20 | 22 66 61 6b 65 20 68 6f |a fixed |"fake ho|
|00000a90| 73 74 22 20 69 6e 20 74 | 68 65 20 50 61 74 68 3a |st" in t|he Path:|
|00000aa0| 2c 0a 58 20 2a 20 6f 72 | 20 6a 75 73 74 20 70 75 |,.X * or| just pu|
|00000ab0| 74 20 74 68 65 20 75 73 | 65 72 27 73 20 68 6f 73 |t the us|er's hos|
|00000ac0| 74 20 74 68 65 72 65 2e | 20 20 54 68 65 20 6c 61 |t there.| The la|
|00000ad0| 74 74 65 72 20 74 77 6f | 20 63 61 6e 20 63 61 75 |tter two| can cau|
|00000ae0| 73 65 20 74 68 65 0a 58 | 20 2a 20 70 6f 73 74 65 |se the.X| * poste|
|00000af0| 72 27 73 20 73 69 74 65 | 20 74 6f 20 6e 65 76 65 |r's site| to neve|
|00000b00| 72 20 67 65 74 20 74 68 | 65 20 61 72 74 69 63 6c |r get th|e articl|
|00000b10| 65 2e 20 20 41 6e 79 68 | 6f 77 2c 20 70 69 63 6b |e. Anyh|ow, pick|
|00000b20| 20 6f 6e 65 2e 20 20 54 | 6f 20 70 69 63 6b 0a 58 | one. T|o pick.X|
|00000b30| 20 2a 20 6e 65 69 74 68 | 65 72 20 23 64 65 66 69 | * neith|er #defi|
|00000b40| 6e 65 20 69 73 20 74 6f | 20 67 65 74 20 74 68 65 |ne is to| get the|
|00000b50| 20 74 68 69 72 64 20 62 | 65 68 61 76 69 6f 72 20 | third b|ehavior |
|00000b60| 2d 2d 20 74 68 65 20 75 | 73 65 72 27 73 20 68 6f |-- the u|ser's ho|
|00000b70| 73 74 2e 20 2a 2f 0a 58 | 23 64 65 66 69 6e 65 20 |st. */.X|#define |
|00000b80| 46 49 58 45 44 5f 50 41 | 54 48 09 22 6e 65 77 73 |FIXED_PA|TH."news|
|00000b90| 2d 6d 61 69 6c 2d 67 61 | 74 65 77 61 79 22 09 2f |-mail-ga|teway"./|
|00000ba0| 2a 20 2e 2e 20 2a 2f 0a | 58 2f 2a 65 66 69 6e 65 |* .. */.|X/*efine|
|00000bb0| 09 47 41 54 45 57 41 59 | 5f 4e 41 4d 45 09 22 67 |.GATEWAY|_NAME."g|
|00000bc0| 61 74 65 77 61 79 22 09 | 09 2f 2a 20 2e 2e 20 2a |ateway".|./* .. *|
|00000bd0| 2f 0a 58 0a 58 0a 58 2f | 2a 20 54 68 65 20 63 6f |/.X.X.X/|* The co|
|00000be0| 64 65 20 69 6e 20 68 64 | 72 2e 63 20 64 6f 65 73 |de in hd|r.c does|
|00000bf0| 20 6c 6f 74 73 20 6f 66 | 20 77 6f 72 6b 20 74 6f | lots of| work to|
|00000c00| 20 63 61 6e 6f 6e 69 63 | 61 6c 69 7a 65 20 61 64 | canonic|alize ad|
|00000c10| 64 72 65 73 73 65 73 2e | 20 20 59 6f 75 0a 58 20 |dresses.| You.X |
|00000c20| 2a 20 73 68 6f 75 6c 64 | 6e 27 74 20 64 69 73 61 |* should|n't disa|
|00000c30| 62 6c 65 20 69 74 2c 20 | 62 75 74 20 61 74 20 6c |ble it, |but at l|
|00000c40| 65 61 73 74 20 6f 6e 65 | 20 62 65 74 61 2d 74 65 |east one| beta-te|
|00000c50| 73 74 65 72 20 77 61 6e | 74 65 64 20 74 6f 2c 20 |ster wan|ted to, |
|00000c60| 73 69 67 68 2e 20 2a 2f | 0a 58 23 64 65 66 69 6e |sigh. */|.X#defin|
|00000c70| 65 20 44 4f 5f 41 44 44 | 52 45 53 53 5f 43 4c 45 |e DO_ADD|RESS_CLE|
|00000c80| 41 4e 55 50 09 09 09 2f | 2a 20 2e 2e 20 2a 2f 0a |ANUP.../|* .. */.|
|00000c90| 58 0a 58 0a 58 2f 2a 20 | 41 72 65 20 79 6f 75 20 |X.X.X/* |Are you |
|00000ca0| 72 75 6e 6e 69 6e 67 20 | 73 65 6e 64 6d 61 69 6c |running |sendmail|
|00000cb0| 20 6f 72 20 4d 4d 44 46 | 3f 20 20 50 69 63 6b 20 | or MMDF|? Pick |
|00000cc0| 6f 6e 65 2e 20 20 49 66 | 20 79 6f 75 20 62 65 6c |one. If| you bel|
|00000cd0| 69 65 76 65 20 69 6e 0a | 58 20 2a 20 74 72 75 73 |ieve in.|X * trus|
|00000ce0| 74 65 64 20 75 73 65 72 | 73 20 28 4d 4d 44 46 20 |ted user|s (MMDF |
|00000cf0| 64 6f 65 73 6e 27 74 3f | 29 20 74 6f 20 6c 69 65 |doesn't?|) to lie|
|00000d00| 20 74 6f 20 79 6f 75 72 | 20 6d 61 69 6c 65 72 2c | to your| mailer,|
|00000d10| 20 73 65 74 20 74 68 65 | 0a 58 20 2a 20 75 73 65 | set the|.X * use|
|00000d20| 72 2d 49 44 2e 20 2a 2f | 0a 58 2f 2a 65 66 69 6e |r-ID. */|.X/*efin|
|00000d30| 65 20 53 45 4e 44 4d 41 | 49 4c 09 22 2f 75 73 72 |e SENDMA|IL."/usr|
|00000d40| 2f 6c 69 62 2f 73 65 6e | 64 6d 61 69 6c 22 09 2f |/lib/sen|dmail"./|
|00000d50| 2a 20 2e 2e 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |* .. */.|X#define|
|00000d60| 09 4d 4d 44 46 09 09 22 | 2f 75 73 72 2f 6d 6d 64 |.MMDF.."|/usr/mmd|
|00000d70| 66 2f 6c 69 62 2f 73 75 | 62 6d 69 74 22 09 2f 2a |f/lib/su|bmit"./*|
|00000d80| 20 2e 2e 20 2a 2f 0a 58 | 2f 2a 65 66 69 6e 65 20 | .. */.X|/*efine |
|00000d90| 54 52 55 53 54 45 44 09 | 09 31 09 09 09 2f 2a 20 |TRUSTED.|.1.../* |
|00000da0| 2e 2e 20 2a 2f 0a 58 0a | 58 0a 58 2f 2a 20 44 6f |.. */.X.|X.X/* Do|
|00000db0| 65 73 20 79 6f 75 72 20 | 53 65 6e 64 6d 61 69 6c |es your |Sendmail|
|00000dc0| 20 6d 61 69 6c 65 72 20 | 68 61 76 65 20 74 68 65 | mailer |have the|
|00000dd0| 20 4d 20 66 6c 61 67 20 | 6f 6e 3f 20 2a 2f 0a 58 | M flag |on? */.X|
|00000de0| 23 69 66 64 65 66 09 53 | 45 4e 44 4d 41 49 4c 0a |#ifdef.S|ENDMAIL.|
|00000df0| 58 23 64 65 66 69 6e 65 | 20 52 45 51 55 49 52 45 |X#define| REQUIRE|
|00000e00| 5f 4d 45 53 53 41 47 45 | 5f 49 44 09 09 09 2f 2a |_MESSAGE|_ID.../*|
|00000e10| 20 2e 2e 20 2a 2f 0a 58 | 23 65 6e 64 69 66 09 2f | .. */.X|#endif./|
|00000e20| 2a 20 53 45 4e 44 4d 41 | 49 4c 20 2a 2f 0a 58 0a |* SENDMA|IL */.X.|
|00000e30| 58 0a 58 2f 2a 20 49 20 | 6c 6f 76 65 20 68 6f 77 |X.X/* I |love how|
|00000e40| 20 77 65 20 61 6c 6c 20 | 73 70 65 61 6b 20 74 68 | we all |speak th|
|00000e50| 65 20 73 61 6d 65 20 6c | 61 6e 67 75 61 67 65 2e |e same l|anguage.|
|00000e60| 20 2a 2f 0a 58 2f 2a 65 | 66 69 6e 65 20 43 41 54 | */.X/*e|fine CAT|
|00000e70| 43 48 45 52 09 09 69 6e | 74 09 09 2f 2a 20 54 79 |CHER..in|t../* Ty|
|00000e80| 70 65 20 6f 66 20 61 20 | 73 69 67 6e 61 6c 2d 63 |pe of a |signal-c|
|00000e90| 61 74 63 68 65 72 09 2a | 2f 0a 58 23 64 65 66 69 |atcher.*|/.X#defi|
|00000ea0| 6e 65 20 43 41 54 43 48 | 45 52 09 09 76 6f 69 64 |ne CATCH|ER..void|
|00000eb0| 09 09 2f 2a 20 2e 2e 20 | 2a 2f 0a 58 23 64 65 66 |../* .. |*/.X#def|
|00000ec0| 69 6e 65 20 49 44 58 09 | 09 69 6e 64 65 78 09 09 |ine IDX.|.index..|
|00000ed0| 2f 2a 20 2e 2e 20 2a 2f | 0a 58 23 64 65 66 69 6e |/* .. */|.X#defin|
|00000ee0| 65 20 52 44 58 09 09 72 | 69 6e 64 65 78 09 09 2f |e RDX..r|index../|
|00000ef0| 2a 20 2e 2e 20 2a 2f 0a | 58 2f 2a 65 66 69 6e 65 |* .. */.|X/*efine|
|00000f00| 20 49 44 58 09 09 73 74 | 72 63 68 72 09 09 2f 2a | IDX..st|rchr../*|
|00000f10| 20 2e 2e 20 2a 2f 0a 58 | 2f 2a 65 66 69 6e 65 20 | .. */.X|/*efine |
|00000f20| 52 44 58 09 09 73 74 72 | 72 63 68 72 09 09 2f 2a |RDX..str|rchr../*|
|00000f30| 20 2e 2e 20 2a 2f 0a 58 | 74 79 70 65 64 65 66 20 | .. */.X|typedef |
|00000f40| 69 6e 74 09 09 2a 61 6c | 69 67 6e 5f 74 3b 09 2f |int..*al|ign_t;./|
|00000f50| 2a 20 57 6f 72 73 74 2d | 63 61 73 65 20 61 6c 69 |* Worst-|case ali|
|00000f60| 67 6e 6d 65 6e 74 2c 20 | 66 6f 72 20 6c 69 6e 74 |gnment, |for lint|
|00000f70| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 43 48 41 | */.X#de|fine CHA|
|00000f80| 52 53 54 41 52 5f 53 50 | 52 49 4e 54 46 09 09 2f |RSTAR_SP|RINTF../|
|00000f90| 2a 20 4e 65 65 64 20 65 | 78 74 65 72 6e 20 63 68 |* Need e|xtern ch|
|00000fa0| 61 72 20 2a 73 70 72 69 | 6e 74 66 28 29 3b 09 2a |ar *spri|ntf();.*|
|00000fb0| 2f 0a 58 23 64 65 66 69 | 6e 65 20 56 4f 49 44 5f |/.X#defi|ne VOID_|
|00000fc0| 45 58 49 54 09 09 09 2f | 2a 20 4e 65 65 64 20 65 |EXIT.../|* Need e|
|00000fd0| 78 74 65 72 6e 20 76 6f | 69 64 20 65 78 69 74 28 |xtern vo|id exit(|
|00000fe0| 29 3b 09 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 48 |);.*/.X#|define H|
|00000ff0| 41 56 45 5f 53 59 53 45 | 58 49 54 53 09 09 09 2f |AVE_SYSE|XITS.../|
|00001000| 2a 20 48 61 76 65 20 3c | 73 79 73 65 78 69 74 73 |* Have <|sysexits|
|00001010| 2e 68 3e 3f 09 09 2a 2f | 0a 58 23 64 65 66 69 6e |.h>?..*/|.X#defin|
|00001020| 65 20 48 41 56 45 5f 54 | 49 4d 45 42 09 09 09 2f |e HAVE_T|IMEB.../|
|00001030| 2a 20 48 61 76 65 20 3c | 73 79 73 2f 74 69 6d 65 |* Have <|sys/time|
|00001040| 62 2e 68 3e 3f 09 09 2a | 2f 0a 58 23 64 65 66 69 |b.h>?..*|/.X#defi|
|00001050| 6e 65 20 48 41 56 45 5f | 50 55 54 45 4e 56 09 09 |ne HAVE_|PUTENV..|
|00001060| 09 2f 2a 20 48 61 76 65 | 20 70 75 74 65 6e 76 28 |./* Have| putenv(|
|00001070| 33 29 09 09 2a 2f 0a 58 | 2f 2a 65 66 69 6e 65 20 |3)..*/.X|/*efine |
|00001080| 48 41 56 45 5f 53 54 52 | 45 52 52 4f 52 09 09 09 |HAVE_STR|ERROR...|
|00001090| 2f 2a 20 48 61 76 65 20 | 73 74 72 65 72 72 6f 72 |/* Have |strerror|
|000010a0| 28 33 29 3f 09 09 2a 2f | 0a 58 0a 58 23 64 65 66 |(3)?..*/|.X.X#def|
|000010b0| 69 6e 65 20 53 4d 5f 53 | 49 5a 45 09 09 35 31 32 |ine SM_S|IZE..512|
|000010c0| 09 09 2f 2a 20 41 20 73 | 6d 61 6c 6c 69 73 68 20 |../* A s|mallish |
|000010d0| 62 75 66 66 65 72 20 73 | 69 7a 65 09 2a 2f 0a 58 |buffer s|ize.*/.X|
|000010e0| 23 64 65 66 69 6e 65 20 | 4c 47 5f 53 49 5a 45 09 |#define |LG_SIZE.|
|000010f0| 09 31 30 32 34 09 09 2f | 2a 20 62 69 67 20 62 75 |.1024../|* big bu|
|00001100| 66 66 65 72 20 73 69 7a | 65 09 09 2a 2f 0a 58 0a |ffer siz|e..*/.X.|
|00001110| 58 2f 2a 20 45 72 72 6f | 72 20 6c 6f 67 20 28 73 |X/* Erro|r log (s|
|00001120| 74 64 65 72 72 29 20 66 | 6f 72 20 6e 65 77 73 32 |tderr) f|or news2|
|00001130| 6d 61 69 6c 2e 20 2a 2f | 0a 58 23 64 65 66 69 6e |mail. */|.X#defin|
|00001140| 65 20 45 52 52 5f 4c 4f | 47 09 09 22 2f 75 73 72 |e ERR_LO|G.."/usr|
|00001150| 2f 6c 69 62 2f 6e 65 77 | 73 2f 2e 61 64 6d 69 6e |/lib/new|s/.admin|
|00001160| 2f 6e 65 77 73 32 6d 61 | 69 6c 2e 6f 75 74 22 0a |/news2ma|il.out".|
|00001170| 58 23 64 65 66 69 6e 65 | 20 54 45 4d 50 46 49 4c |X#define| TEMPFIL|
|00001180| 45 09 22 2f 74 6d 70 2f | 67 61 74 65 58 58 58 58 |E."/tmp/|gateXXXX|
|00001190| 58 58 22 20 2f 2a 20 54 | 65 6d 70 6f 72 61 72 79 |XX" /* T|emporary|
|000011a0| 20 66 69 6c 65 20 70 61 | 74 74 65 72 6e 09 2a 2f | file pa|ttern.*/|
|000011b0| 0a 58 0a 58 0a 58 2f 2a | 20 45 6e 61 62 6c 65 20 |.X.X.X/*| Enable |
|000011c0| 64 65 62 75 67 67 69 6e | 67 20 63 6f 64 65 3f 20 |debuggin|g code? |
|000011d0| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 53 54 41 54 |*/.X#def|ine STAT|
|000011e0| 49 43 09 09 73 74 61 74 | 69 63 0a 58 23 69 66 64 |IC..stat|ic.X#ifd|
|000011f0| 65 66 09 6c 69 6e 74 0a | 58 23 75 6e 64 65 66 09 |ef.lint.|X#undef.|
|00001200| 52 43 53 49 44 0a 58 23 | 65 6c 73 65 0a 58 23 64 |RCSID.X#|else.X#d|
|00001210| 65 66 69 6e 65 20 52 43 | 53 49 44 0a 58 23 65 6e |efine RC|SID.X#en|
|00001220| 64 69 66 09 2f 2a 20 6c | 69 6e 74 20 2a 2f 0a 58 |dif./* l|int */.X|
|00001230| 0a 58 2f 2a 0a 58 2a 2a | 20 20 45 4e 44 20 4f 46 |.X/*.X**| END OF|
|00001240| 20 43 4f 4e 46 49 47 55 | 52 41 54 49 4f 4e 20 53 | CONFIGU|RATION S|
|00001250| 45 43 54 49 4f 4e 2e 0a | 58 2a 2f 0a 58 0a 58 0c |ECTION..|X*/.X.X.|
|00001260| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |.X.X#inc|lude <st|
|00001270| 64 69 6f 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |dio.h>.X|#include|
|00001280| 20 3c 63 74 79 70 65 2e | 68 3e 0a 58 23 69 6e 63 | <ctype.|h>.X#inc|
|00001290| 6c 75 64 65 20 3c 73 79 | 73 2f 74 79 70 65 73 2e |lude <sy|s/types.|
|000012a0| 68 3e 0a 58 0a 58 23 69 | 66 64 65 66 09 48 41 56 |h>.X.X#i|fdef.HAV|
|000012b0| 45 5f 53 59 53 45 58 49 | 54 53 0a 58 23 69 6e 63 |E_SYSEXI|TS.X#inc|
|000012c0| 6c 75 64 65 20 3c 73 79 | 73 65 78 69 74 73 2e 68 |lude <sy|sexits.h|
|000012d0| 3e 0a 58 23 65 6c 73 65 | 0a 58 23 69 6e 63 6c 75 |>.X#else|.X#inclu|
|000012e0| 64 65 20 22 73 79 73 65 | 78 69 74 73 2e 68 22 0a |de "syse|xits.h".|
|000012f0| 58 23 65 6e 64 69 66 09 | 2f 2a 20 48 41 56 45 5f |X#endif.|/* HAVE_|
|00001300| 53 59 53 45 58 49 54 53 | 20 2a 2f 0a 58 0a 58 0a |SYSEXITS| */.X.X.|
|00001310| 58 74 79 70 65 64 65 66 | 20 73 74 72 75 63 74 20 |Xtypedef| struct |
|00001320| 5f 48 42 55 46 20 7b 0a | 58 20 20 20 20 63 68 61 |_HBUF {.|X cha|
|00001330| 72 09 61 70 70 72 6f 76 | 65 64 5b 53 4d 5f 53 49 |r.approv|ed[SM_SI|
|00001340| 5a 45 5d 3b 09 2f 2a 20 | 41 70 70 72 6f 76 65 64 |ZE];./* |Approved|
|00001350| 3a 09 09 2a 2f 0a 58 20 | 20 20 20 63 68 61 72 09 |:..*/.X | char.|
|00001360| 63 74 6c 6d 73 67 5b 4c | 47 5f 53 49 5a 45 5d 3b |ctlmsg[L|G_SIZE];|
|00001370| 09 2f 2a 20 43 6f 6e 74 | 72 6f 6c 3a 09 09 2a 2f |./* Cont|rol:..*/|
|00001380| 0a 58 20 20 20 20 63 68 | 61 72 09 73 75 62 64 61 |.X ch|ar.subda|
|00001390| 74 65 5b 53 4d 5f 53 49 | 5a 45 5d 3b 09 2f 2a 20 |te[SM_SI|ZE];./* |
|000013a0| 44 61 74 65 3a 20 28 73 | 75 62 6d 69 73 73 69 6f |Date: (s|ubmissio|
|000013b0| 6e 29 09 2a 2f 0a 58 20 | 20 20 20 63 68 61 72 09 |n).*/.X | char.|
|000013c0| 64 69 73 74 72 69 62 75 | 74 69 6f 6e 5b 53 4d 5f |distribu|tion[SM_|
|000013d0| 53 49 5a 45 5d 3b 09 2f | 2a 20 44 69 73 74 72 69 |SIZE];./|* Distri|
|000013e0| 62 75 74 69 6f 6e 3a 09 | 2a 2f 0a 58 20 20 20 20 |bution:.|*/.X |
|000013f0| 63 68 61 72 09 65 78 70 | 64 61 74 65 5b 53 4d 5f |char.exp|date[SM_|
|00001400| 53 49 5a 45 5d 3b 09 2f | 2a 20 45 78 70 69 72 65 |SIZE];./|* Expire|
|00001410| 73 3a 09 09 2a 2f 0a 58 | 20 20 20 20 63 68 61 72 |s:..*/.X| char|
|00001420| 09 66 6f 6c 6c 6f 77 74 | 6f 5b 53 4d 5f 53 49 5a |.followt|o[SM_SIZ|
|00001430| 45 5d 3b 09 2f 2a 20 46 | 6f 6c 6c 6f 77 75 70 2d |E];./* F|ollowup-|
|00001440| 74 6f 3a 09 09 2a 2f 0a | 58 20 20 20 20 63 68 61 |to:..*/.|X cha|
|00001450| 72 09 66 72 6f 6d 5b 53 | 4d 5f 53 49 5a 45 5d 3b |r.from[S|M_SIZE];|
|00001460| 09 09 2f 2a 20 46 72 6f | 6d 3a 09 09 2a 2f 0a 58 |../* Fro|m:..*/.X|
|00001470| 20 20 20 20 63 68 61 72 | 09 66 6f 6c 6c 6f 77 69 | char|.followi|
|00001480| 64 5b 53 4d 5f 53 49 5a | 45 5d 3b 09 2f 2a 20 52 |d[SM_SIZ|E];./* R|
|00001490| 65 66 65 72 65 6e 63 65 | 73 3a 09 09 2a 2f 0a 58 |eference|s:..*/.X|
|000014a0| 20 20 20 20 63 68 61 72 | 09 6b 65 79 77 6f 72 64 | char|.keyword|
|000014b0| 73 5b 53 4d 5f 53 49 5a | 45 5d 3b 09 2f 2a 20 4b |s[SM_SIZ|E];./* K|
|000014c0| 65 79 77 6f 72 64 73 3a | 09 09 2a 2f 0a 58 20 20 |eywords:|..*/.X |
|000014d0| 20 20 63 68 61 72 09 69 | 64 65 6e 74 5b 53 4d 5f | char.i|dent[SM_|
|000014e0| 53 49 5a 45 5d 3b 09 09 | 2f 2a 20 4d 65 73 73 61 |SIZE];..|/* Messa|
|000014f0| 67 65 2d 49 44 3a 09 09 | 2a 2f 0a 58 20 20 20 20 |ge-ID:..|*/.X |
|00001500| 63 68 61 72 09 6e 62 75 | 66 5b 4c 47 5f 53 49 5a |char.nbu|f[LG_SIZ|
|00001510| 45 5d 3b 09 09 2f 2a 20 | 4e 65 77 73 67 72 6f 75 |E];../* |Newsgrou|
|00001520| 70 73 3a 09 09 2a 2f 0a | 58 20 20 20 20 63 68 61 |ps:..*/.|X cha|
|00001530| 72 09 6f 72 67 61 6e 69 | 7a 61 74 69 6f 6e 5b 53 |r.organi|zation[S|
|00001540| 4d 5f 53 49 5a 45 5d 3b | 09 2f 2a 20 4f 72 67 61 |M_SIZE];|./* Orga|
|00001550| 6e 69 7a 61 74 69 6f 6e | 3a 09 2a 2f 0a 58 20 20 |nization|:.*/.X |
|00001560| 20 20 63 68 61 72 09 74 | 69 74 6c 65 5b 53 4d 5f | char.t|itle[SM_|
|00001570| 53 49 5a 45 5d 3b 09 09 | 2f 2a 20 53 75 62 6a 65 |SIZE];..|/* Subje|
|00001580| 63 74 3a 09 09 2a 2f 0a | 58 20 20 20 20 63 68 61 |ct:..*/.|X cha|
|00001590| 72 09 72 65 70 6c 79 74 | 6f 5b 53 4d 5f 53 49 5a |r.replyt|o[SM_SIZ|
|000015a0| 45 5d 3b 09 2f 2a 20 52 | 65 70 6c 79 2d 54 6f 3a |E];./* R|eply-To:|
|000015b0| 09 09 2a 2f 0a 58 20 20 | 20 20 63 68 61 72 09 73 |..*/.X | char.s|
|000015c0| 75 6d 6d 61 72 79 5b 53 | 4d 5f 53 49 5a 45 5d 3b |ummary[S|M_SIZE];|
|000015d0| 09 2f 2a 20 53 75 6d 6d | 61 72 79 3a 09 09 2a 2f |./* Summ|ary:..*/|
|000015e0| 0a 58 20 20 20 20 63 68 | 61 72 09 70 61 74 68 5b |.X ch|ar.path[|
|000015f0| 4c 47 5f 53 49 5a 45 5d | 3b 09 09 2f 2a 20 50 61 |LG_SIZE]|;../* Pa|
|00001600| 74 68 3a 09 09 2a 2f 0a | 58 20 20 20 20 63 68 61 |th:..*/.|X cha|
|00001610| 72 09 73 65 6e 64 65 72 | 5b 53 4d 5f 53 49 5a 45 |r.sender|[SM_SIZE|
|00001620| 5d 3b 09 2f 2a 20 53 65 | 6e 64 65 72 3a 09 09 2a |];./* Se|nder:..*|
|00001630| 2f 0a 58 7d 20 48 42 55 | 46 3b 0a 58 0a 58 0a 58 |/.X} HBU|F;.X.X.X|
|00001640| 2f 2a 20 53 74 72 69 6e | 67 20 61 6e 64 20 6d 65 |/* Strin|g and me|
|00001650| 6d 6f 72 79 20 6d 61 6e | 69 70 75 6c 61 74 6f 72 |mory man|ipulator|
|00001660| 73 2e 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 41 |s. */.X#|define A|
|00001670| 50 50 45 4e 44 28 70 2c | 20 74 29 09 73 74 72 6c |PPEND(p,| t).strl|
|00001680| 65 6e 28 73 74 72 63 70 | 79 28 28 70 29 2c 20 28 |en(strcp|y((p), (|
|00001690| 74 29 29 29 0a 58 23 64 | 65 66 69 6e 65 20 4e 45 |t))).X#d|efine NE|
|000016a0| 57 28 54 2c 20 63 29 09 | 28 54 20 2a 29 4d 79 41 |W(T, c).|(T *)MyA|
|000016b0| 6c 6c 6f 63 28 28 63 29 | 20 2a 20 73 69 7a 65 6f |lloc((c)| * sizeo|
|000016c0| 66 20 28 54 29 29 0a 58 | 23 64 65 66 69 6e 65 20 |f (T)).X|#define |
|000016d0| 43 4f 50 59 28 73 29 09 | 09 28 28 73 29 20 3f 20 |COPY(s).|.((s) ? |
|000016e0| 73 74 72 63 70 79 28 4e | 45 57 28 63 68 61 72 2c |strcpy(N|EW(char,|
|000016f0| 20 73 74 72 6c 65 6e 28 | 28 73 29 29 20 2b 20 31 | strlen(|(s)) + 1|
|00001700| 29 2c 20 28 73 29 29 20 | 3a 20 4e 55 4c 4c 29 0a |), (s)) |: NULL).|
|00001710| 58 23 64 65 66 69 6e 65 | 20 52 45 41 4c 4c 4f 43 |X#define| REALLOC|
|00001720| 28 70 2c 20 73 29 09 72 | 65 61 6c 6c 6f 63 28 28 |(p, s).r|ealloc((|
|00001730| 63 68 61 72 20 2a 29 28 | 70 29 2c 20 28 75 6e 73 |char *)(|p), (uns|
|00001740| 69 67 6e 65 64 20 69 6e | 74 29 28 73 29 29 0a 58 |igned in|t)(s)).X|
|00001750| 0a 58 0a 58 2f 2a 20 41 | 72 72 61 79 20 73 69 7a |.X.X/* A|rray siz|
|00001760| 69 6e 67 2e 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |ing. */.|X#define|
|00001770| 20 53 49 5a 45 4f 46 28 | 78 29 09 28 73 69 7a 65 | SIZEOF(|x).(size|
|00001780| 6f 66 20 78 20 2f 20 73 | 69 7a 65 6f 66 20 78 5b |of x / s|izeof x[|
|00001790| 30 5d 29 0a 58 23 64 65 | 66 69 6e 65 20 45 4e 44 |0]).X#de|fine END|
|000017a0| 4f 46 28 78 29 09 28 26 | 78 5b 53 49 5a 45 4f 46 |OF(x).(&|x[SIZEOF|
|000017b0| 28 78 29 5d 29 0a 58 0a | 58 0a 58 2f 2a 20 53 74 |(x)]).X.|X.X/* St|
|000017c0| 72 69 6e 67 20 61 6e 64 | 20 63 68 61 72 61 63 74 |ring and| charact|
|000017d0| 65 72 20 6f 70 65 72 61 | 74 69 6f 6e 73 2e 20 2a |er opera|tions. *|
|000017e0| 2f 0a 58 23 64 65 66 69 | 6e 65 20 57 48 49 54 45 |/.X#defi|ne WHITE|
|000017f0| 28 63 29 09 28 28 63 29 | 20 3d 3d 20 27 20 27 20 |(c).((c)| == ' ' |
|00001800| 7c 7c 20 28 63 29 20 3d | 3d 20 27 5c 74 27 29 0a ||| (c) =|= '\t').|
|00001810| 58 23 64 65 66 69 6e 65 | 20 45 51 28 61 2c 20 62 |X#define| EQ(a, b|
|00001820| 29 09 28 28 61 29 5b 30 | 5d 20 3d 3d 20 28 62 29 |).((a)[0|] == (b)|
|00001830| 5b 30 5d 20 26 26 20 73 | 74 72 63 6d 70 28 28 61 |[0] && s|trcmp((a|
|00001840| 29 2c 20 28 62 29 29 20 | 3d 3d 20 30 29 0a 58 23 |), (b)) |== 0).X#|
|00001850| 64 65 66 69 6e 65 20 45 | 51 6e 28 61 2c 20 62 2c |define E|Qn(a, b,|
|00001860| 20 6e 29 09 28 28 61 29 | 5b 30 5d 20 3d 3d 20 28 | n).((a)|[0] == (|
|00001870| 62 29 5b 30 5d 20 26 26 | 20 73 74 72 6e 63 6d 70 |b)[0] &&| strncmp|
|00001880| 28 28 61 29 2c 20 28 62 | 29 2c 20 28 6e 29 29 20 |((a), (b|), (n)) |
|00001890| 3d 3d 20 30 29 0a 58 23 | 64 65 66 69 6e 65 20 4e |== 0).X#|define N|
|000018a0| 45 54 43 48 52 28 63 29 | 09 28 28 63 29 20 3d 3d |ETCHR(c)|.((c) ==|
|000018b0| 20 27 2e 27 20 7c 7c 20 | 28 63 29 20 3d 3d 20 27 | '.' || |(c) == '|
|000018c0| 25 27 20 7c 7c 20 28 63 | 29 20 3d 3d 20 27 40 27 |%' || (c|) == '@'|
|000018d0| 20 7c 7c 20 28 63 29 20 | 3d 3d 20 27 21 27 29 0a | || (c) |== '!').|
|000018e0| 58 23 64 65 66 69 6e 65 | 20 43 48 52 45 51 28 63 |X#define| CHREQ(c|
|000018f0| 2c 20 64 29 09 28 28 64 | 29 20 3d 3d 20 28 69 73 |, d).((d|) == (is|
|00001900| 6c 6f 77 65 72 28 28 63 | 29 29 20 3f 20 74 6f 75 |lower((c|)) ? tou|
|00001910| 70 70 65 72 28 28 63 29 | 29 20 3a 20 28 63 29 29 |pper((c)|) : (c))|
|00001920| 29 0a 58 0a 58 0a 58 2f | 2a 20 46 75 6e 64 61 6d |).X.X.X/|* Fundam|
|00001930| 65 6e 74 61 6c 20 63 6f | 6e 73 74 61 6e 74 73 20 |ental co|nstants |
|00001940| 6f 66 20 74 68 65 20 75 | 6e 69 76 65 72 73 65 2e |of the u|niverse.|
|00001950| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 54 52 55 | */.X#de|fine TRU|
|00001960| 45 09 09 31 0a 58 23 64 | 65 66 69 6e 65 20 46 41 |E..1.X#d|efine FA|
|00001970| 4c 53 45 09 09 30 0a 58 | 23 64 65 66 69 6e 65 20 |LSE..0.X|#define |
|00001980| 46 41 49 4c 09 09 28 2d | 31 29 0a 58 0a 58 0a 58 |FAIL..(-|1).X.X.X|
|00001990| 2f 2a 20 53 48 55 54 20 | 55 50 21 20 2a 2f 0a 58 |/* SHUT |UP! */.X|
|000019a0| 23 69 66 64 65 66 09 6c | 69 6e 74 0a 58 23 75 6e |#ifdef.l|int.X#un|
|000019b0| 64 65 66 09 70 75 74 63 | 0a 58 23 75 6e 64 65 66 |def.putc|.X#undef|
|000019c0| 09 70 75 74 63 68 61 72 | 0a 58 23 65 6e 64 69 66 |.putchar|.X#endif|
|000019d0| 09 2f 2a 20 6c 69 6e 74 | 20 2a 2f 0a 58 0a 58 23 |./* lint| */.X.X#|
|000019e0| 64 65 66 69 6e 65 20 43 | 6c 6f 73 65 09 09 28 76 |define C|lose..(v|
|000019f0| 6f 69 64 29 63 6c 6f 73 | 65 0a 58 23 64 65 66 69 |oid)clos|e.X#defi|
|00001a00| 6e 65 20 46 66 6c 75 73 | 68 09 09 28 76 6f 69 64 |ne Fflus|h..(void|
|00001a10| 29 66 66 6c 75 73 68 0a | 58 23 64 65 66 69 6e 65 |)fflush.|X#define|
|00001a20| 20 46 70 72 69 6e 74 66 | 09 09 28 76 6f 69 64 29 | Fprintf|..(void)|
|00001a30| 66 70 72 69 6e 74 66 0a | 58 23 64 65 66 69 6e 65 |fprintf.|X#define|
|00001a40| 20 46 70 75 74 73 09 09 | 28 76 6f 69 64 29 66 70 | Fputs..|(void)fp|
|00001a50| 75 74 73 0a 58 23 64 65 | 66 69 6e 65 20 53 69 67 |uts.X#de|fine Sig|
|00001a60| 6e 61 6c 09 09 28 76 6f | 69 64 29 73 69 67 6e 61 |nal..(vo|id)signa|
|00001a70| 6c 0a 58 23 64 65 66 69 | 6e 65 20 53 70 72 69 6e |l.X#defi|ne Sprin|
|00001a80| 74 66 09 09 28 76 6f 69 | 64 29 73 70 72 69 6e 74 |tf..(voi|d)sprint|
|00001a90| 66 0a 58 23 64 65 66 69 | 6e 65 20 53 74 72 63 70 |f.X#defi|ne Strcp|
|00001aa0| 79 09 09 28 76 6f 69 64 | 29 73 74 72 63 70 79 0a |y..(void|)strcpy.|
|00001ab0| 58 23 64 65 66 69 6e 65 | 20 53 74 72 63 61 74 09 |X#define| Strcat.|
|00001ac0| 09 28 76 6f 69 64 29 73 | 74 72 63 61 74 0a 58 23 |.(void)s|trcat.X#|
|00001ad0| 64 65 66 69 6e 65 20 53 | 74 72 6e 63 70 79 09 09 |define S|trncpy..|
|00001ae0| 28 76 6f 69 64 29 73 74 | 72 6e 63 70 79 0a 58 0a |(void)st|rncpy.X.|
|00001af0| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 45 78 74 65 72 |X.X/*.X*|* Exter|
|00001b00| 6e 61 6c 20 64 65 63 6c | 61 72 61 74 69 6f 6e 73 |nal decl|arations|
|00001b10| 2e 0a 58 2a 2f 0a 58 0a | 58 2f 2a 20 50 72 6f 67 |..X*/.X.|X/* Prog|
|00001b20| 72 61 6d 20 6e 61 6d 65 | 3b 20 65 78 69 73 74 73 |ram name|; exists|
|00001b30| 20 6f 6e 63 65 20 66 6f | 72 20 65 61 63 68 20 6d | once fo|r each m|
|00001b40| 61 69 6e 28 29 2e 20 2a | 2f 0a 58 65 78 74 65 72 |ain(). *|/.Xexter|
|00001b50| 6e 09 63 68 61 72 09 2a | 50 6e 61 6d 65 3b 0a 58 |n.char.*|Pname;.X|
|00001b60| 0a 58 2f 2a 20 52 6f 75 | 74 69 6e 65 73 20 77 65 |.X/* Rou|tines we|
|00001b70| 20 70 72 6f 76 69 64 65 | 2e 20 2a 2f 0a 58 65 78 | provide|. */.Xex|
|00001b80| 74 65 72 6e 20 61 6c 69 | 67 6e 5f 74 09 4d 79 41 |tern ali|gn_t.MyA|
|00001b90| 6c 6c 6f 63 28 29 3b 0a | 58 65 78 74 65 72 6e 20 |lloc();.|Xextern |
|00001ba0| 69 6e 74 09 53 70 6c 69 | 74 28 29 3b 0a 58 65 78 |int.Spli|t();.Xex|
|00001bb0| 74 65 72 6e 20 69 6e 74 | 09 43 72 61 63 6b 46 72 |tern int|.CrackFr|
|00001bc0| 6f 6d 28 29 3b 0a 58 65 | 78 74 65 72 6e 20 76 6f |om();.Xe|xtern vo|
|00001bd0| 69 64 09 72 65 5f 6d 6f | 64 77 28 29 3b 0a 58 65 |id.re_mo|dw();.Xe|
|00001be0| 78 74 65 72 6e 20 76 6f | 69 64 09 53 70 6c 69 74 |xtern vo|id.Split|
|00001bf0| 46 72 65 65 28 29 3b 0a | 58 65 78 74 65 72 6e 20 |Free();.|Xextern |
|00001c00| 76 6f 69 64 09 46 72 65 | 65 46 69 6c 65 28 29 3b |void.Fre|eFile();|
|00001c10| 0a 58 65 78 74 65 72 6e | 20 63 68 61 72 09 2a 2a |.Xextern| char.**|
|00001c20| 52 65 61 64 46 69 6c 65 | 28 29 3b 0a 58 65 78 74 |ReadFile|();.Xext|
|00001c30| 65 72 6e 20 63 68 61 72 | 09 2a 72 65 5f 63 6f 6d |ern char|.*re_com|
|00001c40| 70 28 29 3b 0a 58 65 78 | 74 65 72 6e 20 63 68 61 |p();.Xex|tern cha|
|00001c50| 72 09 2a 48 61 63 6b 48 | 65 61 64 65 72 28 29 3b |r.*HackH|eader();|
|00001c60| 0a 58 0a 58 65 78 74 65 | 72 6e 20 63 68 61 72 09 |.X.Xexte|rn char.|
|00001c70| 2a 73 74 72 65 72 72 6f | 72 28 29 3b 0a 58 0a 58 |*strerro|r();.X.X|
|00001c80| 2f 2a 20 56 61 72 69 61 | 62 6c 65 73 20 61 6e 64 |/* Varia|bles and|
|00001c90| 20 72 6f 75 74 69 6e 65 | 73 20 74 68 61 74 20 55 | routine|s that U|
|00001ca0| 6e 69 78 28 74 6d 29 20 | 70 72 6f 76 69 64 65 73 |nix(tm) |provides|
|00001cb0| 2e 20 2a 2f 0a 58 65 78 | 74 65 72 6e 20 69 6e 74 |. */.Xex|tern int|
|00001cc0| 09 65 72 72 6e 6f 3b 0a | 58 65 78 74 65 72 6e 20 |.errno;.|Xextern |
|00001cd0| 69 6e 74 09 73 79 73 5f | 6e 65 72 72 3b 0a 58 65 |int.sys_|nerr;.Xe|
|00001ce0| 78 74 65 72 6e 20 69 6e | 74 09 6f 70 74 69 6e 64 |xtern in|t.optind|
|00001cf0| 3b 0a 58 65 78 74 65 72 | 6e 20 63 68 61 72 09 2a |;.Xexter|n char.*|
|00001d00| 73 79 73 5f 65 72 72 6c | 69 73 74 5b 5d 3b 0a 58 |sys_errl|ist[];.X|
|00001d10| 65 78 74 65 72 6e 20 63 | 68 61 72 09 2a 2a 65 6e |extern c|har.**en|
|00001d20| 76 69 72 6f 6e 3b 0a 58 | 65 78 74 65 72 6e 20 63 |viron;.X|extern c|
|00001d30| 68 61 72 09 2a 6f 70 74 | 61 72 67 3b 0a 58 0a 58 |har.*opt|arg;.X.X|
|00001d40| 65 78 74 65 72 6e 20 46 | 49 4c 45 09 2a 70 6f 70 |extern F|ILE.*pop|
|00001d50| 65 6e 28 29 3b 0a 58 65 | 78 74 65 72 6e 20 63 68 |en();.Xe|xtern ch|
|00001d60| 61 72 09 2a 49 44 58 28 | 29 3b 0a 58 65 78 74 65 |ar.*IDX(|);.Xexte|
|00001d70| 72 6e 20 63 68 61 72 09 | 2a 52 44 58 28 29 3b 0a |rn char.|*RDX();.|
|00001d80| 58 65 78 74 65 72 6e 20 | 63 68 61 72 09 2a 63 74 |Xextern |char.*ct|
|00001d90| 69 6d 65 28 29 3b 0a 58 | 65 78 74 65 72 6e 20 63 |ime();.X|extern c|
|00001da0| 68 61 72 09 2a 6d 61 6c | 6c 6f 63 28 29 3b 0a 58 |har.*mal|loc();.X|
|00001db0| 65 78 74 65 72 6e 20 63 | 68 61 72 09 2a 6d 6b 74 |extern c|har.*mkt|
|00001dc0| 65 6d 70 28 29 3b 0a 58 | 65 78 74 65 72 6e 20 63 |emp();.X|extern c|
|00001dd0| 68 61 72 09 2a 72 65 61 | 6c 6c 6f 63 28 29 3b 0a |har.*rea|lloc();.|
|00001de0| 58 65 78 74 65 72 6e 20 | 63 68 61 72 09 2a 73 74 |Xextern |char.*st|
|00001df0| 72 63 61 74 28 29 3b 0a | 58 65 78 74 65 72 6e 20 |rcat();.|Xextern |
|00001e00| 63 68 61 72 09 2a 73 74 | 72 6e 63 61 74 28 29 3b |char.*st|rncat();|
|00001e10| 0a 58 65 78 74 65 72 6e | 20 63 68 61 72 09 2a 73 |.Xextern| char.*s|
|00001e20| 74 72 63 70 79 28 29 3b | 0a 58 65 78 74 65 72 6e |trcpy();|.Xextern|
|00001e30| 20 63 68 61 72 09 2a 73 | 74 72 6e 63 70 79 28 29 | char.*s|trncpy()|
|00001e40| 3b 0a 58 23 69 66 64 65 | 66 09 43 48 41 52 53 54 |;.X#ifde|f.CHARST|
|00001e50| 41 52 5f 53 50 52 49 4e | 54 46 0a 58 65 78 74 65 |AR_SPRIN|TF.Xexte|
|00001e60| 72 6e 20 63 68 61 72 09 | 2a 73 70 72 69 6e 74 66 |rn char.|*sprintf|
|00001e70| 28 29 3b 0a 58 23 65 6e | 64 69 66 09 2f 2a 20 43 |();.X#en|dif./* C|
|00001e80| 48 41 52 53 54 41 52 5f | 53 50 52 49 4e 54 46 20 |HARSTAR_|SPRINTF |
|00001e90| 2a 2f 0a 58 23 69 66 64 | 65 66 09 56 4f 49 44 5f |*/.X#ifd|ef.VOID_|
|00001ea0| 45 58 49 54 0a 58 65 78 | 74 65 72 6e 20 76 6f 69 |EXIT.Xex|tern voi|
|00001eb0| 64 09 65 78 69 74 28 29 | 3b 0a 58 23 65 6e 64 69 |d.exit()|;.X#endi|
|00001ec0| 66 09 2f 2a 20 56 4f 49 | 44 5f 45 58 49 54 20 2a |f./* VOI|D_EXIT *|
|00001ed0| 2f 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 20 20 |/.END_OF|_FILE. |
|00001ee0| 69 66 20 74 65 73 74 20 | 36 35 31 38 20 2d 6e 65 |if test |6518 -ne|
|00001ef0| 20 60 77 63 20 2d 63 20 | 3c 27 67 61 74 65 2e 68 | `wc -c |<'gate.h|
|00001f00| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00001f10| 6f 20 73 68 61 72 3a 20 | 5c 22 27 67 61 74 65 2e |o shar: |\"'gate.|
|00001f20| 68 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |h'\" unp|acked wi|
|00001f30| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 20 |th wrong| size!. |
|00001f40| 20 66 69 0a 20 20 23 20 | 65 6e 64 20 6f 66 20 27 | fi. # |end of '|
|00001f50| 67 61 74 65 2e 68 27 0a | 66 69 0a 69 66 20 74 65 |gate.h'.|fi.if te|
|00001f60| 73 74 20 2d 66 20 27 68 | 64 72 2e 63 27 20 2d 61 |st -f 'h|dr.c' -a|
|00001f70| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|00001f80| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|00001f90| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 63 6c |har: Wil|l not cl|
|00001fa0| 6f 62 62 65 72 20 65 78 | 69 73 74 69 6e 67 20 66 |obber ex|isting f|
|00001fb0| 69 6c 65 20 5c 22 27 68 | 64 72 2e 63 27 5c 22 0a |ile \"'h|dr.c'\".|
|00001fc0| 65 6c 73 65 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |else. e|cho shar|
|00001fd0| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 27 |: Extrac|ting \"'|
|00001fe0| 68 64 72 2e 63 27 5c 22 | 20 5c 28 31 30 36 35 32 |hdr.c'\"| \(10652|
|00001ff0| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 20 20 | charact|ers\). |
|00002000| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 68 |sed "s/^|X//" >'h|
|00002010| 64 72 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |dr.c' <<|'END_OF_|
|00002020| 46 49 4c 45 27 0a 58 2f | 2a 0a 58 2a 2a 20 20 48 |FILE'.X/|*.X** H|
|00002030| 65 61 64 65 72 2d 63 72 | 61 63 6b 69 6e 67 20 61 |eader-cr|acking a|
|00002040| 6e 64 20 61 64 64 72 65 | 73 73 20 72 65 2d 77 72 |nd addre|ss re-wr|
|00002050| 69 74 69 6e 67 20 72 6f | 75 74 69 6e 65 73 2c 20 |iting ro|utines, |
|00002060| 77 69 74 68 20 73 69 6e | 63 65 72 65 0a 58 2a 2a |with sin|cere.X**|
|00002070| 20 20 61 70 6f 6c 6f 67 | 69 65 73 20 74 6f 20 55 | apolog|ies to U|
|00002080| 70 61 73 20 61 6e 64 20 | 53 65 6e 64 6d 61 69 6c |pas and |Sendmail|
|00002090| 2e 0a 58 2a 2f 0a 58 23 | 69 6e 63 6c 75 64 65 20 |..X*/.X#|include |
|000020a0| 22 67 61 74 65 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |"gate.h"|.X#inclu|
|000020b0| 64 65 20 3c 6e 65 74 64 | 62 2e 68 3e 0a 58 23 69 |de <netd|b.h>.X#i|
|000020c0| 66 64 65 66 09 52 43 53 | 49 44 0a 58 73 74 61 74 |fdef.RCS|ID.Xstat|
|000020d0| 69 63 20 63 68 61 72 20 | 52 43 53 5b 5d 20 3d 0a |ic char |RCS[] =.|
|000020e0| 58 09 22 24 48 65 61 64 | 65 72 3a 20 2f 6e 66 73 |X."$Head|er: /nfs|
|000020f0| 2f 70 61 70 61 79 61 2f | 75 32 2f 72 73 61 6c 7a |/papaya/|u2/rsalz|
|00002100| 2f 73 72 63 2f 6e 65 77 | 73 67 61 74 65 2f 73 72 |/src/new|sgate/sr|
|00002110| 63 2f 52 43 53 2f 68 64 | 72 2e 63 2c 76 20 31 2e |c/RCS/hd|r.c,v 1.|
|00002120| 31 35 20 39 31 2f 30 33 | 2f 31 35 20 31 36 3a 33 |15 91/03|/15 16:3|
|00002130| 39 3a 34 32 20 72 73 61 | 6c 7a 20 45 78 70 20 24 |9:42 rsa|lz Exp $|
|00002140| 22 3b 0a 58 23 65 6e 64 | 69 66 09 2f 2a 20 52 43 |";.X#end|if./* RC|
|00002150| 53 49 44 20 2a 2f 0a 58 | 0a 58 0a 58 23 69 66 64 |SID */.X|.X.X#ifd|
|00002160| 65 66 09 54 45 53 54 0a | 58 23 69 66 6e 64 65 66 |ef.TEST.|X#ifndef|
|00002170| 09 44 4f 5f 46 49 58 5f | 41 44 44 52 45 53 53 0a |.DO_FIX_|ADDRESS.|
|00002180| 58 23 64 65 66 69 6e 65 | 20 44 4f 5f 46 49 58 5f |X#define| DO_FIX_|
|00002190| 41 44 44 52 45 53 53 0a | 58 23 65 6e 64 69 66 09 |ADDRESS.|X#endif.|
|000021a0| 2f 2a 20 44 4f 5f 46 49 | 58 5f 41 44 44 52 45 53 |/* DO_FI|X_ADDRES|
|000021b0| 53 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 64 70 |S */.X#d|efine dp|
|000021c0| 72 69 6e 74 66 28 73 74 | 72 69 6e 67 2c 20 62 75 |rintf(st|ring, bu|
|000021d0| 66 66 29 09 28 76 6f 69 | 64 29 70 72 69 6e 74 66 |ff).(voi|d)printf|
|000021e0| 28 28 73 74 72 69 6e 67 | 29 2c 20 28 62 75 66 66 |((string|), (buff|
|000021f0| 29 29 0a 58 23 65 6c 73 | 65 0a 58 23 64 65 66 69 |)).X#els|e.X#defi|
|00002200| 6e 65 20 64 70 72 69 6e | 74 66 28 73 74 72 69 6e |ne dprin|tf(strin|
|00002210| 67 2c 20 62 75 66 66 29 | 09 2f 2a 20 4e 55 4c 4c |g, buff)|./* NULL|
|00002220| 20 2a 2f 0a 58 23 65 6e | 64 69 66 09 2f 2a 20 54 | */.X#en|dif./* T|
|00002230| 45 53 54 20 2a 2f 0a 58 | 0a 58 0a 58 2f 2a 0a 58 |EST */.X|.X.X/*.X|
|00002240| 2a 2a 20 20 4c 69 73 74 | 20 6f 66 20 64 6f 6d 61 |** List| of doma|
|00002250| 69 6e 73 20 74 68 61 74 | 20 77 65 20 72 65 63 6f |ins that| we reco|
|00002260| 67 6e 69 7a 65 2e 0a 58 | 2a 2f 0a 58 53 54 41 54 |gnize..X|*/.XSTAT|
|00002270| 49 43 20 63 68 61 72 09 | 52 45 4c 41 59 5f 43 53 |IC char.|RELAY_CS|
|00002280| 5f 4e 45 54 5b 5d 20 3d | 20 22 52 45 4c 41 59 2e |_NET[] =| "RELAY.|
|00002290| 43 53 2e 4e 45 54 22 3b | 0a 58 53 54 41 54 49 43 |CS.NET";|.XSTATIC|
|000022a0| 20 63 68 61 72 09 2a 44 | 6f 6d 61 69 6e 73 5b 5d | char.*D|omains[]|
|000022b0| 20 3d 20 7b 0a 58 20 20 | 20 20 2f 2a 20 44 6f 6e | = {.X | /* Don|
|000022c0| 27 74 20 75 6e 64 6f 20 | 74 68 65 20 25 20 68 61 |'t undo |the % ha|
|000022d0| 63 6b 20 66 6f 72 20 73 | 69 74 65 73 20 40 52 45 |ck for s|ites @RE|
|000022e0| 4c 41 59 2e 43 53 2e 4e | 45 54 2c 20 73 69 67 68 |LAY.CS.N|ET, sigh|
|000022f0| 20 23 31 2e 20 2a 2f 0a | 58 09 52 45 4c 41 59 5f | #1. */.|X.RELAY_|
|00002300| 43 53 5f 4e 45 54 2c 0a | 58 20 20 20 20 2f 2a 20 |CS_NET,.|X /* |
|00002310| 54 68 65 73 65 20 61 72 | 65 6e 27 74 20 6f 66 66 |These ar|en't off|
|00002320| 69 63 69 61 6c 20 64 6f | 6d 61 69 6e 73 2c 20 62 |icial do|mains, b|
|00002330| 75 74 20 77 65 20 75 73 | 65 20 74 68 65 6d 2c 20 |ut we us|e them, |
|00002340| 73 69 67 68 20 23 32 2e | 20 2a 2f 0a 58 09 22 2e |sigh #2.| */.X.".|
|00002350| 42 49 54 4e 45 54 22 2c | 0a 58 09 22 2e 55 55 43 |BITNET",|.X.".UUC|
|00002360| 50 22 2c 0a 58 20 20 20 | 20 2f 2a 20 4f 66 66 69 |P",.X | /* Offi|
|00002370| 63 69 61 6c 20 6f 72 67 | 61 6e 69 7a 61 74 69 6f |cial org|anizatio|
|00002380| 6e 61 6c 20 64 6f 6d 61 | 69 6e 73 2e 20 2a 2f 0a |nal doma|ins. */.|
|00002390| 58 09 22 2e 41 52 50 41 | 22 2c 09 22 2e 43 4f 4d |X.".ARPA|",.".COM|
|000023a0| 22 2c 09 22 2e 45 44 55 | 22 2c 09 22 2e 47 4f 56 |",.".EDU|",.".GOV|
|000023b0| 22 2c 09 22 2e 49 4e 54 | 22 2c 09 22 2e 4d 49 4c |",.".INT|",.".MIL|
|000023c0| 22 2c 0a 58 09 22 2e 4e | 41 54 4f 22 2c 09 22 2e |",.X.".N|ATO",.".|
|000023d0| 4e 45 54 22 2c 09 22 2e | 4f 52 47 22 2c 0a 58 20 |NET",.".|ORG",.X |
|000023e0| 20 20 20 2f 2a 20 4f 66 | 66 69 63 69 61 6c 20 6e | /* Of|ficial n|
|000023f0| 61 74 6f 6e 61 6c 20 64 | 6f 6d 61 6e 73 2e 20 2a |atonal d|omans. *|
|00002400| 2f 0a 58 09 22 2e 41 52 | 22 2c 09 22 2e 41 54 22 |/.X.".AR|",.".AT"|
|00002410| 2c 09 22 2e 41 55 22 2c | 09 22 2e 42 45 22 2c 09 |,.".AU",|.".BE",.|
|00002420| 22 2e 42 52 22 2c 09 22 | 2e 43 41 22 2c 09 22 2e |".BR",."|.CA",.".|
|00002430| 43 48 22 2c 09 22 2e 43 | 4c 22 2c 0a 58 09 22 2e |CH",.".C|L",.X.".|
|00002440| 43 4e 22 2c 09 22 2e 43 | 52 22 2c 09 22 2e 43 53 |CN",.".C|R",.".CS|
|00002450| 22 2c 09 22 2e 44 45 22 | 2c 09 22 2e 44 4b 22 2c |",.".DE"|,.".DK",|
|00002460| 09 22 2e 45 43 22 2c 09 | 22 2e 45 47 22 2c 09 22 |.".EC",.|".EG",."|
|00002470| 2e 45 53 22 2c 0a 58 09 | 22 2e 46 49 22 2c 09 22 |.ES",.X.|".FI",."|
|00002480| 2e 46 52 22 2c 09 22 2e | 47 52 22 2c 09 22 2e 48 |.FR",.".|GR",.".H|
|00002490| 4b 22 2c 09 22 2e 48 55 | 22 2c 09 22 2e 49 45 22 |K",.".HU|",.".IE"|
|000024a0| 2c 09 22 2e 49 4c 22 2c | 09 22 2e 49 4e 22 2c 0a |,.".IL",|.".IN",.|
|000024b0| 58 09 22 2e 49 53 22 2c | 09 22 2e 49 54 22 2c 09 |X.".IS",|.".IT",.|
|000024c0| 22 2e 4a 50 22 2c 09 22 | 2e 4b 52 22 2c 09 22 2e |".JP",."|.KR",.".|
|000024d0| 4c 4b 22 2c 09 22 2e 4d | 58 22 2c 09 22 2e 4d 59 |LK",.".M|X",.".MY|
|000024e0| 22 2c 09 22 2e 4e 49 22 | 2c 0a 58 09 22 2e 4e 4c |",.".NI"|,.X.".NL|
|000024f0| 22 2c 09 22 2e 4e 4f 22 | 2c 09 22 2e 4e 5a 22 2c |",.".NO"|,.".NZ",|
|00002500| 09 22 2e 50 48 22 2c 09 | 22 2e 50 4c 22 2c 09 22 |.".PH",.|".PL",."|
|00002510| 2e 50 52 22 2c 09 22 2e | 50 54 22 2c 09 22 2e 53 |.PR",.".|PT",.".S|
|00002520| 45 22 2c 0a 58 09 22 2e | 53 47 22 2c 09 22 2e 53 |E",.X.".|SG",.".S|
|00002530| 55 22 2c 09 22 2e 54 48 | 22 2c 09 22 2e 54 52 22 |U",.".TH|",.".TR"|
|00002540| 2c 09 22 2e 54 57 22 2c | 09 22 2e 55 4b 22 2c 09 |,.".TW",|.".UK",.|
|00002550| 22 2e 55 53 22 2c 09 22 | 2e 55 59 22 2c 0a 58 09 |".US",."|.UY",.X.|
|00002560| 22 2e 59 55 22 2c 09 22 | 2e 5a 41 22 0a 58 7d 3b |".YU",."|.ZA".X};|
|00002570| 0a 58 0a 58 0a 58 2f 2a | 0a 58 2a 2a 20 20 4c 6f |.X.X.X/*|.X** Lo|
|00002580| 63 61 6c 20 75 73 65 72 | 3f 0a 58 2a 2f 0a 58 53 |cal user|?.X*/.XS|
|00002590| 54 41 54 49 43 20 69 6e | 74 0a 58 4c 6f 63 61 6c |TATIC in|t.XLocal|
|000025a0| 28 70 29 0a 58 20 20 20 | 20 72 65 67 69 73 74 65 |(p).X | registe|
|000025b0| 72 20 63 68 61 72 09 2a | 70 3b 0a 58 7b 0a 58 20 |r char.*|p;.X{.X |
|000025c0| 20 20 20 66 6f 72 20 28 | 20 3b 20 2a 70 3b 20 70 | for (| ; *p; p|
|000025d0| 2b 2b 29 0a 58 09 69 66 | 20 28 4e 45 54 43 48 52 |++).X.if| (NETCHR|
|000025e0| 28 2a 70 29 29 0a 58 09 | 20 20 20 20 62 72 65 61 |(*p)).X.| brea|
|000025f0| 6b 3b 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 2a |k;.X |return *|
|00002600| 70 20 3d 3d 20 27 5c 30 | 27 3b 0a 58 7d 0a 58 0a |p == '\0|';.X}.X.|
|00002610| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 43 61 73 65 2d |X.X/*.X*|* Case-|
|00002620| 69 6e 73 65 6e 73 69 74 | 69 76 65 20 73 74 72 6e |insensit|ive strn|
|00002630| 63 6d 70 2e 0a 58 2a 2f | 0a 58 53 54 41 54 49 43 |cmp..X*/|.XSTATIC|
|00002640| 20 63 68 61 72 20 2a 0a | 58 46 6f 75 6e 64 28 64 | char *.|XFound(d|
|00002650| 70 2c 20 70 29 0a 58 20 | 20 20 20 72 65 67 69 73 |p, p).X | regis|
|00002660| 74 65 72 20 63 68 61 72 | 09 2a 64 70 3b 0a 58 20 |ter char|.*dp;.X |
|00002670| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|00002680| 09 2a 70 3b 0a 58 7b 0a | 58 20 20 20 20 72 65 67 |.*p;.X{.|X reg|
|00002690| 69 73 74 65 72 20 63 68 | 61 72 09 2a 71 3b 0a 58 |ister ch|ar.*q;.X|
|000026a0| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 | regi|ster cha|
|000026b0| 72 09 2a 72 3b 0a 58 0a | 58 20 20 20 20 66 6f 72 |r.*r;.X.|X for|
|000026c0| 20 28 20 3b 20 2a 70 3b | 20 70 2b 2b 29 0a 58 09 | ( ; *p;| p++).X.|
|000026d0| 69 66 20 28 43 48 52 45 | 51 28 2a 70 2c 20 2a 64 |if (CHRE|Q(*p, *d|
|000026e0| 70 29 29 20 7b 0a 58 09 | 20 20 20 20 66 6f 72 20 |p)) {.X.| for |
|000026f0| 28 71 20 3d 20 70 2c 20 | 72 20 3d 20 64 70 3b 20 |(q = p, |r = dp; |
|00002700| 2a 72 20 26 26 20 43 48 | 52 45 51 28 2a 71 2c 20 |*r && CH|REQ(*q, |
|00002710| 2a 72 29 3b 20 71 2b 2b | 2c 20 72 2b 2b 29 0a 58 |*r); q++|, r++).X|
|00002720| 09 09 3b 0a 58 09 20 20 | 20 20 69 66 20 28 2a 72 |..;.X. | if (*r|
|00002730| 20 3d 3d 20 27 5c 30 27 | 29 0a 58 09 09 72 65 74 | == '\0'|).X..ret|
|00002740| 75 72 6e 20 70 3b 0a 58 | 09 7d 0a 58 0a 58 20 20 |urn p;.X|.}.X.X |
|00002750| 20 20 72 65 74 75 72 6e | 20 4e 55 4c 4c 3b 0a 58 | return| NULL;.X|
|00002760| 7d 0a 58 0a 58 0a 58 2f | 2a 0a 58 2a 2a 20 20 46 |}.X.X.X/|*.X** F|
|00002770| 69 6e 64 20 61 6c 6c 20 | 64 6f 6d 61 69 6e 20 6e |ind all |domain n|
|00002780| 61 6d 65 73 20 61 6e 64 | 20 6d 61 6b 65 20 74 68 |ames and| make th|
|00002790| 65 6d 20 75 70 70 65 72 | 63 61 73 65 3a 0a 58 2a |em upper|case:.X*|
|000027a0| 2a 09 6a 6f 65 25 73 69 | 74 65 2e 65 64 75 40 72 |*.joe%si|te.edu@r|
|000027b0| 65 6c 61 79 2e 63 73 2e | 6e 65 74 20 2d 2d 3e 20 |elay.cs.|net --> |
|000027c0| 6a 6f 65 25 73 69 74 65 | 2e 45 44 55 40 52 45 4c |joe%site|.EDU@REL|
|000027d0| 41 59 2e 43 53 2e 4e 45 | 54 0a 58 2a 2f 0a 58 53 |AY.CS.NE|T.X*/.XS|
|000027e0| 54 41 54 49 43 20 76 6f | 69 64 0a 58 43 61 73 69 |TATIC vo|id.XCasi|
|000027f0| 66 79 28 70 29 0a 58 20 | 20 20 20 72 65 67 69 73 |fy(p).X | regis|
|00002800| 74 65 72 20 63 68 61 72 | 09 2a 70 3b 0a 58 7b 0a |ter char|.*p;.X{.|
|00002810| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00002820| 61 72 09 2a 71 3b 0a 58 | 20 20 20 20 72 65 67 69 |ar.*q;.X| regi|
|00002830| 73 74 65 72 20 63 68 61 | 72 09 2a 72 3b 0a 58 20 |ster cha|r.*r;.X |
|00002840| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|00002850| 09 2a 2a 64 70 3b 0a 58 | 0a 58 20 20 20 20 66 6f |.**dp;.X|.X fo|
|00002860| 72 20 28 64 70 20 3d 20 | 44 6f 6d 61 69 6e 73 3b |r (dp = |Domains;|
|00002870| 20 64 70 20 3c 20 45 4e | 44 4f 46 28 44 6f 6d 61 | dp < EN|DOF(Doma|
|00002880| 69 6e 73 29 3b 20 64 70 | 2b 2b 29 0a 58 09 66 6f |ins); dp|++).X.fo|
|00002890| 72 20 28 71 20 3d 20 70 | 3b 20 71 20 3d 20 46 6f |r (q = p|; q = Fo|
|000028a0| 75 6e 64 28 2a 64 70 2c | 20 71 29 3b 20 29 0a 58 |und(*dp,| q); ).X|
|000028b0| 09 20 20 20 20 66 6f 72 | 20 28 72 20 3d 20 2a 64 |. for| (r = *d|
|000028c0| 70 3b 20 2a 72 3b 20 2a | 71 2b 2b 20 3d 20 2a 72 |p; *r; *|q++ = *r|
|000028d0| 2b 2b 29 0a 58 09 09 3b | 0a 58 7d 0a 58 0a 58 0a |++).X..;|.X}.X.X.|
|000028e0| 58 2f 2a 0a 58 2a 2a 20 | 20 48 61 6e 64 6c 65 20 |X/*.X** | Handle |
|000028f0| 72 6f 75 74 65 2d 61 64 | 64 72 65 73 73 65 73 3a |route-ad|dresses:|
|00002900| 0a 58 2a 2a 09 40 63 72 | 75 66 74 3a 6a 6f 65 40 |.X**.@cr|uft:joe@|
|00002910| 73 69 74 65 20 2d 2d 3e | 20 6a 6f 65 40 73 69 74 |site -->| joe@sit|
|00002920| 65 0a 58 2a 2f 0a 58 53 | 54 41 54 49 43 20 76 6f |e.X*/.XS|TATIC vo|
|00002930| 69 64 0a 58 52 6f 75 74 | 65 41 64 64 72 28 70 29 |id.XRout|eAddr(p)|
|00002940| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |.X re|gister c|
|00002950| 68 61 72 09 2a 70 3b 0a | 58 7b 0a 58 20 20 20 20 |har.*p;.|X{.X |
|00002960| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 2a 71 |register| char.*q|
|00002970| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00002980| 63 68 61 72 09 2a 72 3b | 0a 58 0a 58 20 20 20 20 |char.*r;|.X.X |
|00002990| 66 6f 72 20 28 72 20 3d | 20 70 3b 20 2a 70 20 3d |for (r =| p; *p =|
|000029a0| 3d 20 27 40 27 3b 20 70 | 20 3d 20 71 29 0a 58 09 |= '@'; p| = q).X.|
|000029b0| 69 66 20 28 28 71 20 3d | 20 49 44 58 28 70 2c 20 |if ((q =| IDX(p, |
|000029c0| 27 3a 27 29 29 20 26 26 | 20 49 44 58 28 71 2c 20 |':')) &&| IDX(q, |
|000029d0| 27 40 27 29 29 0a 58 09 | 20 20 20 20 2a 71 2b 2b |'@')).X.| *q++|
|000029e0| 20 3d 20 27 5c 30 27 3b | 0a 58 09 65 6c 73 65 0a | = '\0';|.X.else.|
|000029f0| 58 09 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 20 20 |X. br|eak;.X |
|00002a00| 20 20 69 66 20 28 70 20 | 3e 20 72 29 0a 58 09 2f | if (p |> r).X./|
|00002a10| 2a 20 41 76 6f 69 64 20 | 6f 76 65 72 6c 61 70 69 |* Avoid |overlapi|
|00002a20| 6e 67 20 73 74 72 63 70 | 79 28 29 20 63 61 6c 6c |ng strcp|y() call|
|00002a30| 2e 20 2a 2f 0a 58 09 77 | 68 69 6c 65 20 28 2a 72 |. */.X.w|hile (*r|
|00002a40| 2b 2b 20 3d 20 2a 70 2b | 2b 29 0a 58 09 20 20 20 |++ = *p+|+).X. |
|00002a50| 20 3b 0a 58 7d 0a 58 0a | 58 2f 2a 0a 58 2a 2a 20 | ;.X}.X.|X/*.X** |
|00002a60| 20 44 6f 65 73 20 74 68 | 65 20 70 61 74 74 65 72 | Does th|e patter|
|00002a70| 6e 20 65 78 69 73 74 20 | 69 6e 20 74 68 65 20 63 |n exist |in the c|
|00002a80| 68 61 72 61 63 74 65 72 | 20 72 61 6e 67 65 20 62 |haracter| range b|
|00002a90| 65 74 77 65 65 6e 20 70 | 20 61 6e 64 20 65 6e 64 |etween p| and end|
|00002aa0| 3f 0a 58 2a 2f 0a 58 53 | 54 41 54 49 43 20 69 6e |?.X*/.XS|TATIC in|
|00002ab0| 74 0a 58 42 65 74 77 65 | 65 6e 28 70 2c 20 70 61 |t.XBetwe|en(p, pa|
|00002ac0| 74 2c 20 71 29 0a 58 20 | 20 20 20 72 65 67 69 73 |t, q).X | regis|
|00002ad0| 74 65 72 20 63 68 61 72 | 09 2a 70 3b 0a 58 20 20 |ter char|.*p;.X |
|00002ae0| 20 20 72 65 67 69 73 74 | 65 72 20 63 68 61 72 09 | regist|er char.|
|00002af0| 2a 70 61 74 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |*pat;.X | regis|
|00002b00| 74 65 72 20 63 68 61 72 | 09 2a 71 3b 0a 58 7b 0a |ter char|.*q;.X{.|
|00002b10| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00002b20| 61 72 09 2a 72 3b 0a 58 | 0a 58 20 20 20 20 66 6f |ar.*r;.X|.X fo|
|00002b30| 72 20 28 72 20 3d 20 70 | 61 74 20 2b 20 73 74 72 |r (r = p|at + str|
|00002b40| 6c 65 6e 28 70 61 74 29 | 3b 20 70 20 3c 20 71 20 |len(pat)|; p < q |
|00002b50| 26 26 20 72 20 3e 3d 20 | 70 61 74 20 26 26 20 2a |&& r >= |pat && *|
|00002b60| 2d 2d 71 20 3d 3d 20 2a | 2d 2d 72 3b 20 29 0a 58 |--q == *|--r; ).X|
|00002b70| 09 3b 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 2a |.;.X |return *|
|00002b80| 72 20 3d 3d 20 27 5c 30 | 27 3b 0a 58 7d 0a 58 0a |r == '\0|';.X}.X.|
|00002b90| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 48 61 6e 64 6c |X.X/*.X*|* Handl|
|00002ba0| 65 20 74 68 65 20 27 25 | 27 20 73 79 6e 74 61 78 |e the '%|' syntax|
|00002bb0| 3a 0a 58 2a 2a 09 6a 6f | 65 25 73 69 74 65 2e 45 |:.X**.jo|e%site.E|
|00002bc0| 44 55 40 67 61 74 65 77 | 61 79 2e 44 4f 4d 41 49 |DU@gatew|ay.DOMAI|
|00002bd0| 4e 20 2d 3e 20 6a 6f 65 | 40 73 69 74 65 2e 45 44 |N -> joe|@site.ED|
|00002be0| 55 0a 58 2a 2f 0a 58 53 | 54 41 54 49 43 20 76 6f |U.X*/.XS|TATIC vo|
|00002bf0| 69 64 0a 58 50 65 72 63 | 65 6e 74 28 70 29 0a 58 |id.XPerc|ent(p).X|
|00002c00| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 | regi|ster cha|
|00002c10| 72 09 2a 70 3b 0a 58 7b | 0a 58 20 20 20 20 72 65 |r.*p;.X{|.X re|
|00002c20| 67 69 73 74 65 72 20 63 | 68 61 72 09 2a 71 3b 0a |gister c|har.*q;.|
|00002c30| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00002c40| 61 72 09 2a 72 3b 0a 58 | 20 20 20 20 72 65 67 69 |ar.*r;.X| regi|
|00002c50| 73 74 65 72 20 63 68 61 | 72 09 2a 2a 64 70 3b 0a |ster cha|r.**dp;.|
|00002c60| 58 0a 58 20 20 20 20 77 | 68 69 6c 65 20 28 28 72 |X.X w|hile ((r|
|00002c70| 20 3d 20 49 44 58 28 70 | 2c 20 27 25 27 29 29 20 | = IDX(p|, '%')) |
|00002c80| 26 26 20 28 71 20 3d 20 | 49 44 58 28 72 2c 20 27 |&& (q = |IDX(r, '|
|00002c90| 40 27 29 29 29 20 7b 0a | 58 09 66 6f 72 20 28 64 |@'))) {.|X.for (d|
|00002ca0| 70 20 3d 20 44 6f 6d 61 | 69 6e 73 3b 20 64 70 20 |p = Doma|ins; dp |
|00002cb0| 3c 20 45 4e 44 4f 46 28 | 44 6f 6d 61 69 6e 73 29 |< ENDOF(|Domains)|
|00002cc0| 3b 20 64 70 2b 2b 29 20 | 7b 0a 58 09 20 20 20 20 |; dp++) |{.X. |
|00002cd0| 69 66 20 28 2a 64 70 20 | 3d 3d 20 52 45 4c 41 59 |if (*dp |== RELAY|
|00002ce0| 5f 43 53 5f 4e 45 54 29 | 0a 58 09 09 63 6f 6e 74 |_CS_NET)|.X..cont|
|00002cf0| 69 6e 75 65 3b 0a 58 09 | 20 20 20 20 69 66 20 28 |inue;.X.| if (|
|00002d00| 42 65 74 77 65 65 6e 28 | 72 2c 20 2a 64 70 2c 20 |Between(|r, *dp, |
|00002d10| 71 29 29 20 7b 0a 58 09 | 09 2a 52 44 58 28 70 2c |q)) {.X.|.*RDX(p,|
|00002d20| 20 27 40 27 29 20 3d 20 | 27 5c 30 27 3b 0a 58 09 | '@') = |'\0';.X.|
|00002d30| 09 2a 52 44 58 28 70 2c | 20 27 25 27 29 20 3d 20 |.*RDX(p,| '%') = |
|00002d40| 27 40 27 3b 0a 58 09 09 | 62 72 65 61 6b 3b 0a 58 |'@';.X..|break;.X|
|00002d50| 09 20 20 20 20 7d 0a 58 | 09 7d 0a 58 09 69 66 20 |. }.X|.}.X.if |
|00002d60| 28 64 70 20 3d 3d 20 45 | 4e 44 4f 46 28 44 6f 6d |(dp == E|NDOF(Dom|
|00002d70| 61 69 6e 73 29 29 0a 58 | 09 20 20 20 20 62 72 65 |ains)).X|. bre|
|00002d80| 61 6b 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |ak;.X | }.X}.X.|
|00002d90| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 48 61 6e 64 6c |X.X/*.X*|* Handl|
|00002da0| 65 20 43 53 4e 45 54 2c | 20 77 68 69 63 68 20 69 |e CSNET,| which i|
|00002db0| 73 20 64 6f 6d 61 69 6e | 69 73 74 20 65 78 63 65 |s domain|ist exce|
|00002dc0| 70 74 20 69 6e 20 73 6f | 6d 65 20 70 65 6f 70 6c |pt in so|me peopl|
|00002dd0| 65 27 73 20 6d 69 6e 64 | 73 3a 0a 58 2a 2a 09 6a |e's mind|s:.X**.j|
|00002de0| 6f 65 25 73 69 74 65 40 | 52 45 4c 41 59 2e 43 53 |oe%site@|RELAY.CS|
|00002df0| 2e 4e 45 54 20 2d 2d 3e | 20 6a 6f 65 40 73 69 74 |.NET -->| joe@sit|
|00002e00| 65 2e 43 53 4e 45 54 0a | 58 2a 2a 09 6a 6f 65 25 |e.CSNET.|X**.joe%|
|00002e10| 73 69 74 65 2e 45 44 55 | 40 52 45 4c 41 59 2e 43 |site.EDU|@RELAY.C|
|00002e20| 53 2e 4e 45 54 20 2d 2d | 3e 20 6a 6f 65 40 73 69 |S.NET --|> joe@si|
|00002e30| 74 65 2e 45 44 55 0a 58 | 2a 2f 0a 58 53 54 41 54 |te.EDU.X|*/.XSTAT|
|00002e40| 49 43 20 76 6f 69 64 0a | 58 43 73 6e 65 74 28 70 |IC void.|XCsnet(p|
|00002e50| 29 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |).X r|egister |
|00002e60| 63 68 61 72 09 2a 70 3b | 0a 58 7b 0a 58 20 20 20 |char.*p;|.X{.X |
|00002e70| 20 72 65 67 69 73 74 65 | 72 20 63 68 61 72 09 2a | registe|r char.*|
|00002e80| 71 3b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |q;.X |register|
|00002e90| 20 63 68 61 72 09 2a 72 | 3b 0a 58 0a 58 20 20 20 | char.*r|;.X.X |
|00002ea0| 20 69 66 20 28 28 71 20 | 3d 20 52 44 58 28 70 2c | if ((q |= RDX(p,|
|00002eb0| 20 27 40 27 29 29 0a 58 | 20 20 20 20 20 26 26 20 | '@')).X| && |
|00002ec0| 73 74 72 63 6d 70 28 71 | 2c 20 22 40 52 45 4c 41 |strcmp(q|, "@RELA|
|00002ed0| 59 2e 43 53 2e 4e 45 54 | 22 29 20 3d 3d 20 30 0a |Y.CS.NET|") == 0.|
|00002ee0| 58 20 20 20 20 20 26 26 | 20 28 72 20 3d 20 52 44 |X &&| (r = RD|
|00002ef0| 58 28 70 2c 20 27 25 27 | 29 29 29 20 7b 0a 58 09 |X(p, '%'|))) {.X.|
|00002f00| 2a 52 44 58 28 70 2c 20 | 27 40 27 29 20 3d 20 27 |*RDX(p, |'@') = '|
|00002f10| 5c 30 27 3b 0a 58 09 2a | 72 20 3d 20 27 40 27 3b |\0';.X.*|r = '@';|
|00002f20| 0a 58 09 69 66 20 28 49 | 44 58 28 72 2c 20 27 2e |.X.if (I|DX(r, '.|
|00002f30| 27 29 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 20 20 |') == NU|LL).X. |
|00002f40| 20 20 53 74 72 63 61 74 | 28 70 2c 20 22 2e 43 53 | Strcat|(p, ".CS|
|00002f50| 4e 45 54 22 29 3b 0a 58 | 20 20 20 20 7d 0a 58 7d |NET");.X| }.X}|
|00002f60| 0a 58 0a 58 0a 58 2f 2a | 0a 58 2a 2a 20 20 48 61 |.X.X.X/*|.X** Ha|
|00002f70| 6e 64 6c 65 20 68 79 62 | 72 69 64 20 22 21 22 20 |ndle hyb|rid "!" |
|00002f80| 61 6e 64 20 22 40 22 20 | 61 64 64 72 65 73 73 65 |and "@" |addresse|
|00002f90| 73 3a 0a 58 2a 2a 09 61 | 21 73 69 74 65 21 6a 6f |s:.X**.a|!site!jo|
|00002fa0| 65 40 73 69 74 65 20 2d | 2d 3e 20 6a 6f 65 40 73 |e@site -|-> joe@s|
|00002fb0| 69 74 65 0a 58 2a 2a 09 | 61 21 73 69 74 65 21 6a |ite.X**.|a!site!j|
|00002fc0| 6f 65 20 2d 2d 3e 20 6a | 6f 65 40 73 69 74 65 2e |oe --> j|oe@site.|
|00002fd0| 55 55 43 50 0a 58 2a 2a | 09 61 21 73 69 74 65 2e |UUCP.X**|.a!site.|
|00002fe0| 45 44 55 21 6a 6f 65 20 | 2d 2d 3e 20 6a 6f 65 40 |EDU!joe |--> joe@|
|00002ff0| 73 69 74 65 2e 45 44 55 | 0a 58 2a 2f 0a 58 53 54 |site.EDU|.X*/.XST|
|00003000| 41 54 49 43 20 76 6f 69 | 64 0a 58 48 79 62 72 69 |ATIC voi|d.XHybri|
|00003010| 64 28 70 29 0a 58 20 20 | 20 20 72 65 67 69 73 74 |d(p).X | regist|
|00003020| 65 72 20 63 68 61 72 09 | 2a 70 3b 0a 58 7b 0a 58 |er char.|*p;.X{.X|
|00003030| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 | regi|ster cha|
|00003040| 72 09 2a 71 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |r.*q;.X | regis|
|00003050| 74 65 72 20 63 68 61 72 | 09 2a 75 73 65 72 3b 0a |ter char|.*user;.|
|00003060| 58 20 20 20 20 63 68 61 | 72 09 09 62 75 66 66 5b |X cha|r..buff[|
|00003070| 53 4d 5f 53 49 5a 45 5d | 3b 0a 58 0a 58 20 20 20 |SM_SIZE]|;.X.X |
|00003080| 20 69 66 20 28 75 73 65 | 72 20 3d 20 52 44 58 28 | if (use|r = RDX(|
|00003090| 70 2c 20 27 21 27 29 29 | 20 7b 0a 58 09 2a 75 73 |p, '!'))| {.X.*us|
|000030a0| 65 72 2b 2b 20 3d 20 27 | 5c 30 27 3b 0a 58 09 69 |er++ = '|\0';.X.i|
|000030b0| 66 20 28 71 20 3d 20 49 | 44 58 28 75 73 65 72 2c |f (q = I|DX(user,|
|000030c0| 20 27 40 27 29 29 0a 58 | 09 20 20 20 20 2a 71 20 | '@')).X|. *q |
|000030d0| 3d 20 27 5c 30 27 3b 0a | 58 09 71 20 3d 20 28 71 |= '\0';.|X.q = (q|
|000030e0| 20 3d 20 52 44 58 28 70 | 2c 20 27 21 27 29 29 20 | = RDX(p|, '!')) |
|000030f0| 3f 20 71 20 2b 20 31 20 | 3a 20 70 3b 0a 58 09 53 |? q + 1 |: p;.X.S|
|00003100| 70 72 69 6e 74 66 28 62 | 75 66 66 2c 20 22 25 73 |printf(b|uff, "%s|
|00003110| 40 25 73 22 2c 20 75 73 | 65 72 2c 20 71 29 3b 0a |@%s", us|er, q);.|
|00003120| 58 09 69 66 20 28 49 44 | 58 28 71 2c 20 27 2e 27 |X.if (ID|X(q, '.'|
|00003130| 29 20 3d 3d 20 4e 55 4c | 4c 29 0a 58 09 20 20 20 |) == NUL|L).X. |
|00003140| 20 53 74 72 63 61 74 28 | 62 75 66 66 2c 20 22 2e | Strcat(|buff, ".|
|00003150| 55 55 43 50 22 29 3b 0a | 58 09 53 74 72 63 70 79 |UUCP");.|X.Strcpy|
|00003160| 28 70 2c 20 62 75 66 66 | 29 3b 0a 58 20 20 20 20 |(p, buff|);.X |
|00003170| 7d 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |}.X}.X.X|.X/*.X**|
|00003180| 20 20 48 61 6e 64 6c 65 | 20 73 70 65 63 69 61 6c | Handle| special|
|00003190| 20 63 61 73 65 20 66 6f | 72 20 41 75 73 74 72 61 | case fo|r Austra|
|000031a0| 6c 69 61 3a 0a 58 2a 2a | 09 75 73 65 72 40 73 69 |lia:.X**|.user@si|
|000031b0| 74 65 2e 4f 5a 20 2d 2d | 3e 20 75 73 65 72 40 73 |te.OZ --|> user@s|
|000031c0| 69 74 65 2e 4f 5a 2e 41 | 55 0a 58 2a 2f 0a 58 53 |ite.OZ.A|U.X*/.XS|
|000031d0| 54 41 54 49 43 20 76 6f | 69 64 0a 58 45 6e 64 70 |TATIC vo|id.XEndp|
|000031e0| 61 72 74 28 70 29 0a 58 | 20 20 20 20 72 65 67 69 |art(p).X| regi|
|000031f0| 73 74 65 72 20 63 68 61 | 72 09 2a 70 3b 0a 58 7b |ster cha|r.*p;.X{|
|00003200| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |.X re|gister c|
|00003210| 68 61 72 09 2a 72 3b 0a | 58 0a 58 20 20 20 20 69 |har.*r;.|X.X i|
|00003220| 66 20 28 28 72 20 3d 20 | 52 44 58 28 70 2c 20 27 |f ((r = |RDX(p, '|
|00003230| 2e 27 29 29 20 26 26 20 | 72 5b 31 5d 20 3d 3d 20 |.')) && |r[1] == |
|00003240| 27 4f 27 20 26 26 20 72 | 5b 32 5d 20 3d 3d 20 27 |'O' && r|[2] == '|
|00003250| 5a 27 20 26 26 20 72 5b | 33 5d 20 3d 3d 20 27 5c |Z' && r[|3] == '\|
|00003260| 30 27 29 0a 58 09 53 74 | 72 63 70 79 28 26 72 5b |0').X.St|rcpy(&r[|
|00003270| 33 5d 2c 20 22 2e 41 55 | 22 29 3b 0a 58 7d 0a 58 |3], ".AU|");.X}.X|
|00003280| 0a 58 0a 58 2f 2a 0a 58 | 2a 2a 20 20 47 65 6e 65 |.X.X/*.X|** Gene|
|00003290| 72 61 6c 20 61 64 64 72 | 65 73 73 20 63 61 6e 6f |ral addr|ess cano|
|000032a0| 6e 69 63 61 6c 69 7a 65 | 72 2e 0a 58 2a 2f 0a 58 |nicalize|r..X*/.X|
|000032b0| 53 54 41 54 49 43 20 63 | 68 61 72 20 2a 0a 58 46 |STATIC c|har *.XF|
|000032c0| 69 78 41 64 64 72 65 73 | 73 28 70 29 0a 58 20 20 |ixAddres|s(p).X |
|000032d0| 20 20 72 65 67 69 73 74 | 65 72 20 63 68 61 72 09 | regist|er char.|
|000032e0| 2a 70 3b 0a 58 7b 0a 58 | 20 20 20 20 73 74 61 74 |*p;.X{.X| stat|
|000032f0| 69 63 20 63 68 61 72 09 | 09 62 75 66 66 5b 31 30 |ic char.|.buff[10|
|00003300| 32 34 5d 3b 0a 58 20 20 | 20 20 63 68 61 72 09 09 |24];.X | char..|
|00003310| 68 6f 73 74 5b 31 32 38 | 5d 3b 0a 58 0a 58 20 20 |host[128|];.X.X |
|00003320| 20 20 69 66 20 28 4c 6f | 63 61 6c 28 70 29 29 20 | if (Lo|cal(p)) |
|00003330| 7b 0a 58 09 69 66 20 28 | 67 65 74 68 6f 73 74 6e |{.X.if (|gethostn|
|00003340| 61 6d 65 28 68 6f 73 74 | 2c 20 73 69 7a 65 6f 66 |ame(host|, sizeof|
|00003350| 20 68 6f 73 74 29 20 3c | 20 30 29 20 7b 0a 58 09 | host) <| 0) {.X.|
|00003360| 20 20 20 20 46 70 72 69 | 6e 74 66 28 73 74 64 65 | Fpri|ntf(stde|
|00003370| 72 72 2c 20 22 25 73 3a | 20 20 43 61 6e 27 74 20 |rr, "%s:| Can't |
|00003380| 67 65 74 20 6d 79 20 68 | 6f 73 74 6e 61 6d 65 2c |get my h|ostname,|
|00003390| 20 25 73 2e 5c 6e 22 2c | 0a 58 09 09 20 20 20 20 | %s.\n",|.X.. |
|000033a0| 50 6e 61 6d 65 2c 20 73 | 74 72 65 72 72 6f 72 28 |Pname, s|trerror(|
|000033b0| 65 72 72 6e 6f 29 29 3b | 0a 58 09 20 20 20 20 65 |errno));|.X. e|
|000033c0| 78 69 74 28 45 58 5f 54 | 45 4d 50 46 41 49 4c 29 |xit(EX_T|EMPFAIL)|
|000033d0| 3b 0a 58 09 7d 0a 58 09 | 53 70 72 69 6e 74 66 28 |;.X.}.X.|Sprintf(|
|000033e0| 62 75 66 66 2c 20 22 25 | 73 40 25 73 22 2c 20 70 |buff, "%|s@%s", p|
|000033f0| 2c 20 68 6f 73 74 29 3b | 0a 58 20 20 20 20 7d 0a |, host);|.X }.|
|00003400| 58 20 20 20 20 65 6c 73 | 65 20 7b 0a 58 09 53 74 |X els|e {.X.St|
|00003410| 72 63 70 79 28 62 75 66 | 66 2c 20 70 29 3b 0a 58 |rcpy(buf|f, p);.X|
|00003420| 09 43 61 73 69 66 79 28 | 62 75 66 66 29 3b 0a 58 |.Casify(|buff);.X|
|00003430| 09 64 70 72 69 6e 74 66 | 28 22 20 20 20 43 61 73 |.dprintf|(" Cas|
|00003440| 69 66 79 20 72 65 74 75 | 72 6e 73 20 25 73 5c 6e |ify retu|rns %s\n|
|00003450| 22 2c 20 62 75 66 66 29 | 3b 0a 58 09 52 6f 75 74 |", buff)|;.X.Rout|
|00003460| 65 41 64 64 72 28 62 75 | 66 66 29 3b 0a 58 09 64 |eAddr(bu|ff);.X.d|
|00003470| 70 72 69 6e 74 66 28 22 | 52 6f 75 74 65 41 64 64 |printf("|RouteAdd|
|00003480| 72 20 72 65 74 75 72 6e | 73 20 25 73 5c 6e 22 2c |r return|s %s\n",|
|00003490| 20 62 75 66 66 29 3b 0a | 58 09 50 65 72 63 65 6e | buff);.|X.Percen|
|000034a0| 74 28 62 75 66 66 29 3b | 0a 58 09 64 70 72 69 6e |t(buff);|.X.dprin|
|000034b0| 74 66 28 22 20 20 50 65 | 72 63 65 6e 74 20 72 65 |tf(" Pe|rcent re|
|000034c0| 74 75 72 6e 73 20 25 73 | 5c 6e 22 2c 20 62 75 66 |turns %s|\n", buf|
|000034d0| 66 29 3b 0a 58 09 43 73 | 6e 65 74 28 62 75 66 66 |f);.X.Cs|net(buff|
|000034e0| 29 3b 0a 58 09 64 70 72 | 69 6e 74 66 28 22 20 20 |);.X.dpr|intf(" |
|000034f0| 20 20 43 73 6e 65 74 20 | 72 65 74 75 72 6e 73 20 | Csnet |returns |
|00003500| 25 73 5c 6e 22 2c 20 62 | 75 66 66 29 3b 0a 58 09 |%s\n", b|uff);.X.|
|00003510| 48 79 62 72 69 64 28 62 | 75 66 66 29 3b 0a 58 09 |Hybrid(b|uff);.X.|
|00003520| 64 70 72 69 6e 74 66 28 | 22 20 20 20 48 79 62 72 |dprintf(|" Hybr|
|00003530| 69 64 20 72 65 74 75 72 | 6e 73 20 25 73 5c 6e 22 |id retur|ns %s\n"|
|00003540| 2c 20 62 75 66 66 29 3b | 0a 58 09 45 6e 64 70 61 |, buff);|.X.Endpa|
|00003550| 72 74 28 62 75 66 66 29 | 3b 0a 58 09 64 70 72 69 |rt(buff)|;.X.dpri|
|00003560| 6e 74 66 28 22 20 20 45 | 6e 64 70 61 72 74 20 72 |ntf(" E|ndpart r|
|00003570| 65 74 75 72 6e 73 20 25 | 73 5c 6e 22 2c 20 62 75 |eturns %|s\n", bu|
|00003580| 66 66 29 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 |ff);.X | }.X |
|00003590| 20 72 65 74 75 72 6e 20 | 62 75 66 66 3b 0a 58 7d | return |buff;.X}|
|000035a0| 0a 58 0c 0a 58 0a 58 2f | 2a 0a 58 2a 2a 20 20 54 |.X..X.X/|*.X** T|
|000035b0| 68 69 73 20 73 75 62 72 | 6f 75 74 69 6e 65 20 69 |his subr|outine i|
|000035c0| 73 20 61 20 63 6f 6e 63 | 65 73 73 69 6f 6e 20 74 |s a conc|ession t|
|000035d0| 6f 20 74 68 65 20 72 65 | 61 6c 69 74 69 65 73 20 |o the re|alities |
|000035e0| 6f 66 20 74 68 65 20 49 | 6e 74 65 72 6e 65 74 20 |of the I|nternet |
|000035f0| 61 6e 64 0a 58 2a 2a 20 | 20 61 6e 64 20 74 68 65 |and.X** | and the|
|00003600| 20 55 53 45 4e 45 54 2e | 20 4d 75 63 68 20 61 73 | USENET.| Much as|
|00003610| 20 74 68 65 20 69 64 65 | 61 20 69 73 20 64 69 73 | the ide|a is dis|
|00003620| 74 61 73 74 65 66 75 6c | 20 61 6e 64 20 6c 69 6b |tasteful| and lik|
|00003630| 65 6c 79 20 74 6f 20 67 | 65 74 20 6d 65 0a 58 2a |ely to g|et me.X*|
|00003640| 2a 20 20 69 6e 20 74 72 | 6f 75 62 6c 65 2c 20 49 |* in tr|ouble, I|
|00003650| 20 68 61 76 65 20 74 6f | 20 68 61 63 6b 20 6d 65 | have to| hack me|
|00003660| 73 73 61 67 65 2d 69 64 | 73 20 69 6e 74 6f 20 61 |ssage-id|s into a|
|00003670| 20 66 6f 72 6d 61 74 20 | 74 68 61 74 20 74 68 65 | format |that the|
|00003680| 20 55 53 45 4e 45 54 0a | 58 2a 2a 20 20 77 6f 6e | USENET.|X** won|
|00003690| 27 74 20 63 68 6f 6b 65 | 20 6f 6e 2e 20 20 50 72 |'t choke| on. Pr|
|000036a0| 61 79 20 74 68 61 74 20 | 69 66 20 77 65 27 72 65 |ay that |if we're|
|000036b0| 20 64 6f 69 6e 67 20 6d | 75 6c 74 69 70 6c 65 20 | doing m|ultiple |
|000036c0| 69 6e 73 65 72 74 69 6f | 6e 20 70 6f 69 6e 74 0a |insertio|n point.|
|000036d0| 58 2a 2a 20 20 67 61 74 | 65 77 61 79 69 6e 67 20 |X** gat|ewaying |
|000036e0| 74 68 61 74 20 41 4c 4c | 20 74 68 65 20 67 61 74 |that ALL| the gat|
|000036f0| 65 77 61 79 73 20 6d 75 | 6e 67 20 65 78 61 63 74 |eways mu|ng exact|
|00003700| 6c 79 20 74 68 65 20 73 | 61 6d 65 20 74 68 69 6e |ly the s|ame thin|
|00003710| 67 73 2e 0a 58 2a 2a 0a | 58 2a 2a 20 20 28 44 65 |gs..X**.|X** (De|
|00003720| 61 74 68 20 74 6f 20 48 | 45 52 4d 45 53 21 20 44 |ath to H|ERMES! D|
|00003730| 65 61 74 68 20 74 6f 20 | 55 4e 49 58 2f 4d 4d 2d |eath to |UNIX/MM-|
|00003740| 31 31 21 20 44 65 61 74 | 68 20 74 6f 20 45 41 4e |11! Deat|h to EAN|
|00003750| 21 29 0a 58 2a 2f 0a 58 | 53 54 41 54 49 43 20 69 |!).X*/.X|STATIC i|
|00003760| 6e 74 0a 58 46 69 78 4d | 65 73 73 61 67 65 49 44 |nt.XFixM|essageID|
|00003770| 28 73 29 0a 58 20 20 20 | 20 72 65 67 69 73 74 65 |(s).X | registe|
|00003780| 72 20 63 68 61 72 09 2a | 73 3b 0a 58 7b 0a 58 20 |r char.*|s;.X{.X |
|00003790| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 | regis|ter int.|
|000037a0| 61 74 64 6f 74 3b 0a 58 | 20 20 20 20 72 65 67 69 |atdot;.X| regi|
|000037b0| 73 74 65 72 20 69 6e 74 | 09 63 6c 6f 73 65 64 3b |ster int|.closed;|
|000037c0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 51 75 69 63 6b |.X.X |/* Quick|
|000037d0| 69 65 20 74 65 73 74 73 | 20 2d 2d 20 77 68 79 20 |ie tests| -- why |
|000037e0| 77 61 73 74 65 20 74 69 | 6d 65 3f 20 2a 2f 0a 58 |waste ti|me? */.X|
|000037f0| 20 20 20 20 69 66 20 28 | 2a 73 20 21 3d 20 27 3c | if (|*s != '<|
|00003800| 27 29 0a 58 09 72 65 74 | 75 72 6e 20 46 41 4c 53 |').X.ret|urn FALS|
|00003810| 45 3b 0a 58 0a 58 20 20 | 20 20 66 6f 72 20 28 61 |E;.X.X | for (a|
|00003820| 74 64 6f 74 20 3d 20 46 | 41 4c 53 45 2c 20 63 6c |tdot = F|ALSE, cl|
|00003830| 6f 73 65 64 20 3d 20 46 | 41 4c 53 45 3b 20 2a 2b |osed = F|ALSE; *+|
|00003840| 2b 73 3b 20 29 0a 58 09 | 73 77 69 74 63 68 20 28 |+s; ).X.|switch (|
|00003850| 2a 73 29 20 7b 0a 58 09 | 64 65 66 61 75 6c 74 3a |*s) {.X.|default:|
|00003860| 0a 58 09 20 20 20 20 69 | 66 20 28 21 69 73 61 73 |.X. i|f (!isas|
|00003870| 63 69 69 28 2a 73 29 20 | 7c 7c 20 69 73 63 6e 74 |cii(*s) ||| iscnt|
|00003880| 72 6c 28 2a 73 29 20 7c | 7c 20 69 73 73 70 61 63 |rl(*s) ||| isspac|
|00003890| 65 28 2a 73 29 29 0a 58 | 09 09 72 65 74 75 72 6e |e(*s)).X|..return|
|000038a0| 20 46 41 4c 53 45 3b 0a | 58 09 20 20 20 20 62 72 | FALSE;.|X. br|
|000038b0| 65 61 6b 3b 0a 58 09 63 | 61 73 65 20 27 3c 27 3a |eak;.X.c|ase '<':|
|000038c0| 0a 58 09 20 20 20 20 2f | 2a 20 41 6c 72 65 61 64 |.X. /|* Alread|
|000038d0| 79 20 67 6f 74 20 6f 6e | 65 2e 20 2a 2f 0a 58 09 |y got on|e. */.X.|
|000038e0| 20 20 20 20 72 65 74 75 | 72 6e 20 46 41 4c 53 45 | retu|rn FALSE|
|000038f0| 3b 0a 58 09 63 61 73 65 | 20 27 3e 27 3a 0a 58 09 |;.X.case| '>':.X.|
|00003900| 20 20 20 20 2f 2a 20 49 | 20 68 6f 70 65 20 6e 6f | /* I| hope no|
|00003910| 20 6f 6e 65 20 69 73 20 | 73 74 75 70 69 64 20 65 | one is |stupid e|
|00003920| 6e 6f 75 67 68 20 74 6f | 20 71 75 6f 74 65 20 74 |nough to| quote t|
|00003930| 68 69 73 2e 2e 2e 20 2a | 2f 0a 58 09 20 20 20 20 |his... *|/.X. |
|00003940| 63 6c 6f 73 65 64 20 3d | 20 54 52 55 45 3b 0a 58 |closed =| TRUE;.X|
|00003950| 09 20 20 20 20 73 5b 31 | 5d 20 3d 20 27 5c 30 27 |. s[1|] = '\0'|
|00003960| 3b 0a 58 09 20 20 20 20 | 62 72 65 61 6b 3b 0a 58 |;.X. |break;.X|
|00003970| 09 63 61 73 65 20 27 2e | 27 3a 0a 58 09 63 61 73 |.case '.|':.X.cas|
|00003980| 65 20 27 40 27 3a 0a 58 | 09 20 20 20 20 2f 2a 20 |e '@':.X|. /* |
|00003990| 57 65 20 73 68 6f 75 6c | 64 20 63 68 65 63 6b 20 |We shoul|d check |
|000039a0| 66 6f 72 20 61 20 64 6f | 6d 61 69 6e 20 73 70 65 |for a do|main spe|
|000039b0| 63 2c 20 6e 6f 74 20 6a | 75 73 74 20 65 69 74 68 |c, not j|ust eith|
|000039c0| 65 72 2f 6f 72 2e 20 2a | 2f 0a 58 09 20 20 20 20 |er/or. *|/.X. |
|000039d0| 61 74 64 6f 74 20 3d 20 | 54 52 55 45 3b 0a 58 09 |atdot = |TRUE;.X.|
|000039e0| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 09 63 61 73 | brea|k;.X.cas|
|000039f0| 65 20 27 5c 74 27 3a 0a | 58 09 63 61 73 65 20 27 |e '\t':.|X.case '|
|00003a00| 20 27 3a 0a 58 09 63 61 | 73 65 20 27 2f 27 3a 0a | ':.X.ca|se '/':.|
|00003a10| 58 09 20 20 20 20 2f 2a | 20 41 76 6f 69 64 20 76 |X. /*| Avoid v|
|00003a20| 61 72 69 6f 75 73 20 70 | 72 6f 62 6c 65 6d 20 63 |arious p|roblem c|
|00003a30| 68 61 72 61 63 74 65 72 | 73 2e 20 2a 2f 0a 58 09 |haracter|s. */.X.|
|00003a40| 20 20 20 20 2a 73 20 3d | 20 27 2e 27 3b 0a 58 09 | *s =| '.';.X.|
|00003a50| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 09 7d 0a 58 | brea|k;.X.}.X|
|00003a60| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 61 74 64 |.X re|turn atd|
|00003a70| 6f 74 20 26 26 20 63 6c | 6f 73 65 64 3b 0a 58 7d |ot && cl|osed;.X}|
|00003a80| 0a 58 0a 58 0a 58 2f 2a | 0a 58 2a 2a 20 20 46 69 |.X.X.X/*|.X** Fi|
|00003a90| 78 20 75 70 20 74 68 65 | 20 63 6f 6e 74 65 6e 74 |x up the| content|
|00003aa0| 73 20 6f 66 20 49 6e 2d | 52 65 70 6c 79 2d 54 6f |s of In-|Reply-To|
|00003ab0| 3a 20 66 69 65 6c 64 73 | 20 61 6e 64 20 52 65 66 |: fields| and Ref|
|00003ac0| 65 72 65 6e 63 65 73 3a | 20 66 69 65 6c 64 73 2e |erences:| fields.|
|00003ad0| 0a 58 2a 2f 0a 58 53 54 | 41 54 49 43 20 76 6f 69 |.X*/.XST|ATIC voi|
|00003ae0| 64 0a 58 46 69 78 52 65 | 66 65 72 65 6e 63 65 73 |d.XFixRe|ferences|
|00003af0| 28 68 70 29 0a 58 20 20 | 20 20 72 65 67 69 73 74 |(hp).X | regist|
|00003b00| 65 72 20 48 42 55 46 09 | 09 2a 68 70 3b 0a 58 7b |er HBUF.|.*hp;.X{|
|00003b10| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |.X re|gister c|
|00003b20| 68 61 72 09 09 2a 63 70 | 3b 0a 58 20 20 20 20 72 |har..*cp|;.X r|
|00003b30| 65 67 69 73 74 65 72 20 | 63 68 61 72 09 09 2a 65 |egister |char..*e|
|00003b40| 70 3b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |p;.X |register|
|00003b50| 20 63 68 61 72 09 09 2a | 70 3b 0a 58 20 20 20 20 | char..*|p;.X |
|00003b60| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 09 2a |register| char..*|
|00003b70| 6d 61 78 3b 0a 58 20 20 | 20 20 63 68 61 72 09 09 |max;.X | char..|
|00003b80| 09 73 63 72 61 74 63 68 | 5b 4c 47 5f 53 49 5a 45 |.scratch|[LG_SIZE|
|00003b90| 5d 3b 0a 58 0a 58 20 20 | 20 20 63 70 20 3d 20 68 |];.X.X | cp = h|
|00003ba0| 70 2d 3e 66 6f 6c 6c 6f | 77 69 64 3b 0a 58 20 20 |p->follo|wid;.X |
|00003bb0| 20 20 6d 61 78 20 3d 20 | 63 70 20 2b 20 73 74 72 | max = |cp + str|
|00003bc0| 6c 65 6e 28 63 70 29 3b | 0a 58 20 20 20 20 66 6f |len(cp);|.X fo|
|00003bd0| 72 20 28 70 20 3d 20 73 | 63 72 61 74 63 68 3b 20 |r (p = s|cratch; |
|00003be0| 63 70 20 3d 20 49 44 58 | 28 63 70 2c 20 27 3c 27 |cp = IDX|(cp, '<'|
|00003bf0| 29 3b 20 29 20 7b 0a 58 | 09 69 66 20 28 28 65 70 |); ) {.X|.if ((ep|
|00003c00| 20 3d 20 49 44 58 28 63 | 70 2c 20 27 3e 27 29 29 | = IDX(c|p, '>'))|
|00003c10| 20 3d 3d 20 4e 55 4c 4c | 0a 58 09 20 7c 7c 20 28 | == NULL|.X. || (|
|00003c20| 28 65 70 20 2d 20 63 70 | 29 20 2b 20 31 29 20 3e |(ep - cp|) + 1) >|
|00003c30| 20 73 69 7a 65 6f 66 20 | 73 63 72 61 74 63 68 20 | sizeof |scratch |
|00003c40| 2d 20 28 70 20 2d 20 73 | 63 72 61 74 63 68 20 2b |- (p - s|cratch +|
|00003c50| 20 32 29 29 0a 58 09 20 | 20 20 20 2f 2a 20 55 6e | 2)).X. | /* Un|
|00003c60| 74 65 72 6d 69 6e 61 74 | 65 64 20 49 44 2c 20 6f |terminat|ed ID, o|
|00003c70| 72 20 6e 6f 20 6d 6f 72 | 65 20 72 6f 6f 6d 2e 20 |r no mor|e room. |
|00003c80| 2a 2f 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |*/.X. | break;.|
|00003c90| 58 0a 58 09 69 66 20 28 | 46 69 78 4d 65 73 73 61 |X.X.if (|FixMessa|
|00003ca0| 67 65 49 44 28 63 70 29 | 29 20 7b 0a 58 09 20 20 |geID(cp)|) {.X. |
|00003cb0| 20 20 69 66 20 28 70 20 | 3e 20 73 63 72 61 74 63 | if (p |> scratc|
|00003cc0| 68 29 20 7b 0a 58 09 09 | 2a 70 2b 2b 20 3d 20 27 |h) {.X..|*p++ = '|
|00003cd0| 20 27 3b 0a 58 09 09 2a | 70 2b 2b 20 3d 20 27 5c | ';.X..*|p++ = '\|
|00003ce0| 30 27 3b 0a 58 09 20 20 | 20 20 7d 0a 58 09 20 20 |0';.X. | }.X. |
|00003cf0| 20 20 70 20 2b 3d 20 41 | 50 50 45 4e 44 28 70 2c | p += A|PPEND(p,|
|00003d00| 20 63 70 29 3b 0a 58 09 | 7d 0a 58 09 63 70 20 3d | cp);.X.|}.X.cp =|
|00003d10| 20 65 70 20 2b 20 32 3b | 0a 58 09 69 66 20 28 63 | ep + 2;|.X.if (c|
|00003d20| 70 20 3e 3d 20 6d 61 78 | 29 0a 58 09 20 20 20 20 |p >= max|).X. |
|00003d30| 62 72 65 61 6b 3b 0a 58 | 20 20 20 20 7d 0a 58 20 |break;.X| }.X |
|00003d40| 20 20 20 53 74 72 63 70 | 79 28 68 70 2d 3e 66 6f | Strcp|y(hp->fo|
|00003d50| 6c 6c 6f 77 69 64 2c 20 | 73 63 72 61 74 63 68 29 |llowid, |scratch)|
|00003d60| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |;.X}.X.X|.X/*.X**|
|00003d70| 20 20 43 6f 75 6e 74 20 | 74 68 65 20 6e 75 6d 62 | Count |the numb|
|00003d80| 65 72 20 6f 66 20 27 40 | 27 20 69 6e 20 74 68 65 |er of '@|' in the|
|00003d90| 20 73 74 72 69 6e 67 2e | 0a 58 2a 2f 0a 58 53 54 | string.|.X*/.XST|
|00003da0| 41 54 49 43 20 69 6e 74 | 0a 58 41 74 43 6f 75 6e |ATIC int|.XAtCoun|
|00003db0| 74 28 73 29 0a 58 20 20 | 20 20 72 65 67 69 73 74 |t(s).X | regist|
|00003dc0| 65 72 20 63 68 61 72 09 | 2a 73 3b 0a 58 7b 0a 58 |er char.|*s;.X{.X|
|00003dd0| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 | regi|ster int|
|00003de0| 09 6e 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 |.n;.X.X | for (|
|00003df0| 6e 20 3d 20 30 3b 20 2a | 73 3b 20 73 2b 2b 29 0a |n = 0; *|s; s++).|
|00003e00| 58 09 69 66 20 28 2a 73 | 20 3d 3d 20 27 40 27 29 |X.if (*s| == '@')|
|00003e10| 0a 58 09 20 20 20 20 6e | 2b 2b 3b 0a 58 20 20 20 |.X. n|++;.X |
|00003e20| 20 72 65 74 75 72 6e 20 | 6e 3b 0a 58 7d 0a 58 0a | return |n;.X}.X.|
|00003e30| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 43 61 6e 6f 6e |X.X/*.X*|* Canon|
|00003e40| 69 63 61 6c 69 7a 65 20 | 74 68 65 20 22 46 72 6f |icalize |the "Fro|
|00003e50| 6d 3a 22 20 6c 69 6e 65 | 20 69 6e 74 6f 20 74 68 |m:" line| into th|
|00003e60| 65 20 66 6f 72 6d 0a 58 | 2a 2a 09 46 72 6f 6d 3a |e form.X|**.From:|
|00003e70| 20 6c 6f 63 61 6c 2d 70 | 61 72 74 40 64 6f 6d 61 | local-p|art@doma|
|00003e80| 69 6e 20 28 66 75 6c 6c | 2d 6e 61 6d 65 29 0a 58 |in (full|-name).X|
|00003e90| 2a 2a 20 52 46 43 38 32 | 32 20 64 6f 65 73 6e 27 |** RFC82|2 doesn'|
|00003ea0| 74 20 72 65 71 75 69 72 | 65 20 74 68 65 20 63 6f |t requir|e the co|
|00003eb0| 6d 6d 65 6e 74 20 74 6f | 20 62 65 20 61 74 20 74 |mment to| be at t|
|00003ec0| 68 65 20 65 6e 64 20 6f | 66 20 74 68 65 20 73 74 |he end o|f the st|
|00003ed0| 72 69 6e 67 0a 58 2a 2a | 20 6c 69 6b 65 20 74 68 |ring.X**| like th|
|00003ee0| 61 74 2e 0a 58 2a 2f 0a | 58 53 54 41 54 49 43 20 |at..X*/.|XSTATIC |
|00003ef0| 76 6f 69 64 0a 58 46 69 | 78 46 72 6f 6d 28 68 70 |void.XFi|xFrom(hp|
|00003f00| 29 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |).X r|egister |
|00003f10| 48 42 55 46 09 09 2a 68 | 70 3b 0a 58 7b 0a 58 20 |HBUF..*h|p;.X{.X |
|00003f20| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|00003f30| 09 09 2a 70 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |..*p;.X | regis|
|00003f40| 74 65 72 20 73 74 72 75 | 63 74 20 68 6f 73 74 65 |ter stru|ct hoste|
|00003f50| 6e 74 09 2a 68 6f 73 74 | 3b 0a 58 20 20 20 20 63 |nt.*host|;.X c|
|00003f60| 68 61 72 09 09 09 61 64 | 64 72 65 73 73 5b 4c 47 |har...ad|dress[LG|
|00003f70| 5f 53 49 5a 45 5d 3b 0a | 58 20 20 20 20 63 68 61 |_SIZE];.|X cha|
|00003f80| 72 09 09 09 66 75 6c 6c | 6e 61 6d 65 5b 4c 47 5f |r...full|name[LG_|
|00003f90| 53 49 5a 45 5d 3b 0a 58 | 20 20 20 20 63 68 61 72 |SIZE];.X| char|
|00003fa0| 09 09 09 73 63 72 61 74 | 63 68 5b 73 69 7a 65 6f |...scrat|ch[sizeo|
|00003fb0| 66 20 61 64 64 72 65 73 | 73 5d 3b 0a 58 0a 58 20 |f addres|s];.X.X |
|00003fc0| 20 20 20 2f 2a 20 57 65 | 20 73 68 6f 75 6c 64 20 | /* We| should |
|00003fd0| 68 61 6e 64 6c 65 20 22 | 46 75 6c 6c 2d 4e 61 6d |handle "|Full-Nam|
|00003fe0| 65 3a 22 20 74 6f 6f 2c | 20 62 75 74 20 69 74 20 |e:" too,| but it |
|00003ff0| 64 6f 65 73 6e 27 74 20 | 67 65 74 20 72 65 61 64 |doesn't |get read|
|00004000| 20 62 79 20 74 68 65 0a | 58 20 20 20 20 20 2a 20 | by the.|X * |
|00004010| 6e 65 77 73 20 68 65 61 | 64 65 72 20 72 65 61 64 |news hea|der read|
|00004020| 65 72 2e 20 2a 2f 0a 58 | 20 20 20 20 28 76 6f 69 |er. */.X| (voi|
|00004030| 64 29 43 72 61 63 6b 46 | 72 6f 6d 28 61 64 64 72 |d)CrackF|rom(addr|
|00004040| 65 73 73 2c 20 66 75 6c | 6c 6e 61 6d 65 2c 20 68 |ess, ful|lname, h|
|00004050| 70 2d 3e 66 72 6f 6d 29 | 3b 0a 58 23 69 66 64 65 |p->from)|;.X#ifde|
|00004060| 66 09 44 4f 5f 41 44 44 | 52 45 53 53 5f 43 4c 45 |f.DO_ADD|RESS_CLE|
|00004070| 41 4e 55 50 0a 58 20 20 | 20 20 53 74 72 63 70 79 |ANUP.X | Strcpy|
|00004080| 28 61 64 64 72 65 73 73 | 2c 20 46 69 78 41 64 64 |(address|, FixAdd|
|00004090| 72 65 73 73 28 61 64 64 | 72 65 73 73 29 29 3b 0a |ress(add|ress));.|
|000040a0| 58 23 65 6e 64 69 66 09 | 2f 2a 20 44 4f 5f 41 44 |X#endif.|/* DO_AD|
|000040b0| 44 52 45 53 53 5f 43 4c | 45 41 4e 55 50 20 2a 2f |DRESS_CL|EANUP */|
|000040c0| 0a 58 0a 58 20 20 20 20 | 69 66 20 28 41 74 43 6f |.X.X |if (AtCo|
|000040d0| 75 6e 74 28 61 64 64 72 | 65 73 73 29 20 21 3d 20 |unt(addr|ess) != |
|000040e0| 31 29 0a 58 09 70 20 3d | 20 4e 55 4c 4c 3b 0a 58 |1).X.p =| NULL;.X|
|000040f0| 20 20 20 20 65 6c 73 65 | 20 7b 0a 58 09 70 20 3d | else| {.X.p =|
|00004100| 20 49 44 58 28 61 64 64 | 72 65 73 73 2c 20 27 40 | IDX(add|ress, '@|
|00004110| 27 29 3b 0a 58 09 2a 70 | 2b 2b 20 3d 20 27 5c 30 |');.X.*p|++ = '\0|
|00004120| 27 3b 0a 58 0a 58 23 69 | 66 64 65 66 09 44 4f 5f |';.X.X#i|fdef.DO_|
|00004130| 41 44 44 52 45 53 53 5f | 43 4c 45 41 4e 55 50 0a |ADDRESS_|CLEANUP.|
|00004140| 58 09 2f 2a 20 49 66 20 | 77 65 20 63 61 6e 20 66 |X./* If |we can f|
|00004150| 69 6e 64 20 74 68 65 20 | 68 6f 73 74 27 73 20 6f |ind the |host's o|
|00004160| 66 66 69 63 69 61 6c 20 | 6e 61 6d 65 20 75 73 65 |fficial |name use|
|00004170| 20 74 68 61 74 2e 20 2a | 2f 0a 58 09 69 66 20 28 | that. *|/.X.if (|
|00004180| 68 6f 73 74 20 3d 20 67 | 65 74 68 6f 73 74 62 79 |host = g|ethostby|
|00004190| 6e 61 6d 65 28 70 29 29 | 0a 58 09 20 20 20 20 70 |name(p))|.X. p|
|000041a0| 20 3d 20 68 6f 73 74 2d | 3e 68 5f 6e 61 6d 65 3b | = host-|>h_name;|
|000041b0| 0a 58 23 65 6e 64 69 66 | 09 2f 2a 20 44 4f 5f 41 |.X#endif|./* DO_A|
|000041c0| 44 44 52 45 53 53 5f 43 | 4c 45 41 4e 55 50 20 2a |DDRESS_C|LEANUP *|
|000041d0| 2f 0a 58 0a 58 09 2f 2a | 20 57 65 20 6b 6e 6f 77 |/.X.X./*| We know|
|000041e0| 20 68 61 76 65 20 74 68 | 65 20 63 61 6e 6f 6e 69 | have th|e canoni|
|000041f0| 63 61 6c 20 68 6f 73 74 | 6e 61 6d 65 3b 20 67 6c |cal host|name; gl|
|00004200| 75 65 20 62 61 63 6b 20 | 74 6f 67 65 74 68 65 72 |ue back |together|
|00004210| 2e 20 2a 2f 0a 58 09 53 | 70 72 69 6e 74 66 28 73 |. */.X.S|printf(s|
|00004220| 63 72 61 74 63 68 2c 20 | 22 25 73 40 25 73 22 2c |cratch, |"%s@%s",|
|00004230| 20 61 64 64 72 65 73 73 | 2c 20 70 29 3b 0a 58 09 | address|, p);.X.|
|00004240| 53 74 72 6e 63 70 79 28 | 61 64 64 72 65 73 73 2c |Strncpy(|address,|
|00004250| 20 73 63 72 61 74 63 68 | 2c 20 73 69 7a 65 6f 66 | scratch|, sizeof|
|00004260| 20 61 64 64 72 65 73 73 | 29 3b 0a 58 09 61 64 64 | address|);.X.add|
|00004270| 72 65 73 73 5b 73 69 7a | 65 6f 66 20 61 64 64 72 |ress[siz|eof addr|
|00004280| 65 73 73 20 2d 20 31 5d | 20 3d 20 27 5c 30 27 3b |ess - 1]| = '\0';|
|00004290| 0a 58 09 70 20 3d 20 49 | 44 58 28 61 64 64 72 65 |.X.p = I|DX(addre|
|000042a0| 73 73 2c 20 27 40 27 29 | 3b 0a 58 09 2a 70 2b 2b |ss, '@')|;.X.*p++|
|000042b0| 20 3d 20 27 5c 30 27 3b | 0a 58 20 20 20 20 7d 0a | = '\0';|.X }.|
|000042c0| 58 0a 58 20 20 20 20 2f | 2a 20 50 6f 6c 69 63 79 |X.X /|* Policy|
|000042d0| 20 64 65 63 69 73 69 6f | 6e 3b 20 77 68 61 74 20 | decisio|n; what |
|000042e0| 74 6f 20 70 75 74 20 69 | 6e 20 74 68 65 20 70 61 |to put i|n the pa|
|000042f0| 74 68 3f 20 2a 2f 0a 58 | 23 69 66 64 65 66 09 46 |th? */.X|#ifdef.F|
|00004300| 49 58 45 44 5f 50 41 54 | 48 0a 58 20 20 20 20 53 |IXED_PAT|H.X S|
|00004310| 74 72 63 70 79 28 68 70 | 2d 3e 70 61 74 68 2c 20 |trcpy(hp|->path, |
|00004320| 46 49 58 45 44 5f 50 41 | 54 48 29 3b 0a 58 23 65 |FIXED_PA|TH);.X#e|
|00004330| 6c 73 65 0a 58 23 69 66 | 64 65 66 09 47 41 54 45 |lse.X#if|def.GATE|
|00004340| 57 41 59 0a 58 20 20 20 | 20 53 70 72 69 6e 74 66 |WAY.X | Sprintf|
|00004350| 28 73 63 72 61 74 63 68 | 2c 20 22 25 73 21 25 73 |(scratch|, "%s!%s|
|00004360| 21 25 73 22 2c 20 47 41 | 54 45 57 41 59 2c 20 70 |!%s", GA|TEWAY, p|
|00004370| 2c 20 61 64 64 72 65 73 | 73 29 3b 0a 58 23 65 6c |, addres|s);.X#el|
|00004380| 73 65 0a 58 20 20 20 20 | 53 70 72 69 6e 74 66 28 |se.X |Sprintf(|
|00004390| 73 63 72 61 74 63 68 2c | 20 22 25 73 21 25 73 22 |scratch,| "%s!%s"|
|000043a0| 2c 20 70 2c 20 61 64 64 | 72 65 73 73 29 3b 0a 58 |, p, add|ress);.X|
|000043b0| 23 65 6e 64 69 66 09 2f | 2a 20 47 41 54 45 57 41 |#endif./|* GATEWA|
|000043c0| 59 20 2a 2f 0a 58 20 20 | 20 20 53 74 72 6e 63 70 |Y */.X | Strncp|
|000043d0| 79 28 68 70 2d 3e 70 61 | 74 68 2c 20 73 63 72 61 |y(hp->pa|th, scra|
|000043e0| 74 63 68 2c 20 73 69 7a | 65 6f 66 20 68 70 2d 3e |tch, siz|eof hp->|
|000043f0| 70 61 74 68 29 3b 0a 58 | 20 20 20 20 68 70 2d 3e |path);.X| hp->|
|00004400| 70 61 74 68 5b 73 69 7a | 65 6f 66 20 68 70 2d 3e |path[siz|eof hp->|
|00004410| 70 61 74 68 20 2d 20 31 | 5d 20 3d 20 27 5c 30 27 |path - 1|] = '\0'|
|00004420| 3b 0a 58 23 65 6e 64 69 | 66 09 2f 2a 20 46 49 58 |;.X#endi|f./* FIX|
|00004430| 45 44 5f 50 41 54 48 20 | 2a 2f 0a 58 0a 58 20 20 |ED_PATH |*/.X.X |
|00004440| 20 20 2f 2a 20 52 65 73 | 74 6f 72 65 20 74 68 65 | /* Res|tore the|
|00004450| 20 40 20 69 66 20 77 65 | 20 74 6f 6f 6b 20 69 74 | @ if we| took it|
|00004460| 20 6f 75 74 2e 20 2a 2f | 0a 58 20 20 20 20 69 66 | out. */|.X if|
|00004470| 20 28 70 29 0a 58 09 2a | 2d 2d 70 20 3d 20 27 40 | (p).X.*|--p = '@|
|00004480| 27 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 66 75 |';.X.X | if (fu|
|00004490| 6c 6c 6e 61 6d 65 5b 30 | 5d 29 20 7b 0a 58 09 70 |llname[0|]) {.X.p|
|000044a0| 20 3d 20 61 64 64 72 65 | 73 73 20 2b 20 73 74 72 | = addre|ss + str|
|000044b0| 6c 65 6e 28 61 64 64 72 | 65 73 73 29 3b 0a 58 09 |len(addr|ess);.X.|
|000044c0| 2a 70 2b 2b 20 3d 20 27 | 20 27 3b 0a 58 09 2a 70 |*p++ = '| ';.X.*p|
|000044d0| 2b 2b 20 3d 20 27 28 27 | 3b 0a 58 09 70 20 2b 3d |++ = '('|;.X.p +=|
|000044e0| 20 41 50 50 45 4e 44 28 | 70 2c 20 66 75 6c 6c 6e | APPEND(|p, fulln|
|000044f0| 61 6d 65 29 3b 0a 58 09 | 2a 70 2b 2b 20 3d 20 27 |ame);.X.|*p++ = '|
|00004500| 29 27 3b 0a 58 09 2a 70 | 2b 2b 20 3d 20 27 5c 30 |)';.X.*p|++ = '\0|
|00004510| 27 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |';.X |}.X.X |
|00004520| 20 2f 2a 20 53 74 69 63 | 6b 20 74 68 65 20 63 61 | /* Stic|k the ca|
|00004530| 6e 6f 6e 69 63 61 6c 69 | 7a 65 64 20 46 72 6f 6d |nonicali|zed From|
|00004540| 3a 20 62 61 63 6b 20 69 | 6e 2e 20 2a 2f 0a 58 20 |: back i|n. */.X |
|00004550| 20 20 20 53 74 72 63 70 | 79 28 68 70 2d 3e 66 72 | Strcp|y(hp->fr|
|00004560| 6f 6d 2c 20 61 64 64 72 | 65 73 73 29 3b 0a 58 7d |om, addr|ess);.X}|
|00004570| 0a 58 0a 58 0a 58 23 64 | 65 66 69 6e 65 20 45 52 |.X.X.X#d|efine ER|
|00004580| 52 4f 52 20 22 5c 0a 58 | 4d 65 73 73 61 67 65 2d |ROR "\.X|Message-|
|00004590| 49 44 20 73 79 6e 74 61 | 78 20 65 72 72 6f 72 2e |ID synta|x error.|
|000045a0| 5c 6e 5c 0a 58 2a 2a 2a | 20 50 6c 65 61 73 65 20 |\n\.X***| Please |
|000045b0| 72 65 66 65 72 20 74 6f | 20 70 61 67 65 20 32 33 |refer to| page 23|
|000045c0| 2c 20 70 61 72 61 67 72 | 61 70 68 20 34 2e 36 2e |, paragr|aph 4.6.|
|000045d0| 31 2e 20 61 6e 64 20 41 | 70 70 65 6e 64 69 78 20 |1. and A|ppendix |
|000045e0| 44 5c 6e 5c 0a 58 2a 2a | 2a 20 6f 66 20 4e 49 43 |D\n\.X**|* of NIC|
|000045f0| 20 52 46 43 20 23 38 32 | 32 20 66 6f 72 20 74 68 | RFC #82|2 for th|
|00004600| 65 20 63 6f 72 72 65 63 | 74 20 73 79 6e 74 61 78 |e correc|t syntax|
|00004610| 2c 20 61 6e 64 20 66 69 | 78 20 79 6f 75 72 20 6d |, and fi|x your m|
|00004620| 61 69 6c 65 72 2e 22 0a | 58 0a 58 2f 2a 0a 58 2a |ailer.".|X.X/*.X*|
|00004630| 2a 20 43 68 65 63 6b 20 | 61 6e 20 52 46 43 38 32 |* Check |an RFC82|
|00004640| 32 20 68 65 61 64 65 72 | 20 66 6f 72 20 76 61 6c |2 header| for val|
|00004650| 69 64 69 74 79 20 61 6e | 64 20 68 61 63 6b 20 69 |idity an|d hack i|
|00004660| 74 20 74 6f 20 52 46 43 | 31 30 33 36 20 73 70 65 |t to RFC|1036 spe|
|00004670| 63 2e 0a 58 2a 2a 20 72 | 65 74 75 72 6e 73 20 4e |c..X** r|eturns N|
|00004680| 55 4c 4c 20 66 6f 72 20 | 65 76 65 72 79 74 68 69 |ULL for |everythi|
|00004690| 6e 67 20 4f 4b 2c 20 6f | 72 20 61 20 63 68 61 72 |ng OK, o|r a char|
|000046a0| 61 63 74 65 72 20 70 6f | 69 6e 74 65 72 20 74 6f |acter po|inter to|
|000046b0| 20 61 6e 0a 58 2a 2a 20 | 65 72 72 6f 72 20 6d 65 | an.X** |error me|
|000046c0| 73 73 61 67 65 2e 0a 58 | 2a 2f 0a 58 63 68 61 72 |ssage..X|*/.Xchar|
|000046d0| 20 2a 0a 58 48 61 63 6b | 48 65 61 64 65 72 28 68 | *.XHack|Header(h|
|000046e0| 70 2c 20 53 75 62 6a 65 | 63 74 52 65 71 75 69 72 |p, Subje|ctRequir|
|000046f0| 65 64 29 0a 58 20 20 20 | 20 72 65 67 69 73 74 65 |ed).X | registe|
|00004700| 72 20 48 42 55 46 09 09 | 2a 68 70 3b 0a 58 20 20 |r HBUF..|*hp;.X |
|00004710| 20 20 69 6e 74 09 09 09 | 09 53 75 62 6a 65 63 74 | int...|.Subject|
|00004720| 52 65 71 75 69 72 65 64 | 3b 0a 58 7b 0a 58 23 69 |Required|;.X{.X#i|
|00004730| 66 64 65 66 09 52 45 51 | 55 49 52 45 5f 4d 45 53 |fdef.REQ|UIRE_MES|
|00004740| 53 41 47 45 5f 49 44 0a | 58 20 20 20 20 2f 2a 20 |SAGE_ID.|X /* |
|00004750| 53 65 6e 64 6d 61 69 6c | 20 28 61 6c 6d 6f 73 74 |Sendmail| (almost|
|00004760| 29 20 61 6c 77 61 79 73 | 20 68 61 73 20 61 20 4d |) always| has a M|
|00004770| 65 73 73 61 67 65 2d 49 | 44 20 2a 2f 0a 58 20 20 |essage-I|D */.X |
|00004780| 20 20 69 66 20 28 68 70 | 2d 3e 69 64 65 6e 74 5b | if (hp|->ident[|
|00004790| 30 5d 20 3d 3d 20 27 5c | 30 27 29 0a 58 09 72 65 |0] == '\|0').X.re|
|000047a0| 74 75 72 6e 20 22 4d 65 | 73 73 61 67 65 2d 49 44 |turn "Me|ssage-ID|
|000047b0| 20 68 65 61 64 65 72 20 | 6d 69 73 73 69 6e 67 22 | header |missing"|
|000047c0| 3b 0a 58 20 20 20 20 69 | 66 20 28 21 46 69 78 4d |;.X i|f (!FixM|
|000047d0| 65 73 73 61 67 65 49 44 | 28 68 70 2d 3e 69 64 65 |essageID|(hp->ide|
|000047e0| 6e 74 29 29 0a 58 09 72 | 65 74 75 72 6e 20 45 52 |nt)).X.r|eturn ER|
|000047f0| 52 4f 52 3b 0a 58 23 65 | 6c 73 65 0a 58 20 20 20 |ROR;.X#e|lse.X |
|00004800| 20 2f 2a 20 4d 4d 44 46 | 20 64 6f 65 73 6e 27 74 | /* MMDF| doesn't|
|00004810| 20 61 6c 77 61 79 73 20 | 68 61 76 65 20 61 20 4d | always |have a M|
|00004820| 65 73 73 61 67 65 2d 49 | 44 2e 20 2a 2f 0a 58 20 |essage-I|D. */.X |
|00004830| 20 20 20 69 66 20 28 68 | 70 2d 3e 69 64 65 6e 74 | if (h|p->ident|
|00004840| 5b 30 5d 20 26 26 20 21 | 46 69 78 4d 65 73 73 61 |[0] && !|FixMessa|
|00004850| 67 65 49 44 28 68 70 2d | 3e 69 64 65 6e 74 29 29 |geID(hp-|>ident))|
|00004860| 0a 58 09 72 65 74 75 72 | 6e 20 45 52 52 4f 52 3b |.X.retur|n ERROR;|
|00004870| 0a 58 23 65 6e 64 69 66 | 09 2f 2a 20 52 45 51 55 |.X#endif|./* REQU|
|00004880| 49 52 45 5f 4d 45 53 53 | 41 47 45 5f 49 44 20 2a |IRE_MESS|AGE_ID *|
|00004890| 2f 0a 58 0a 58 20 20 20 | 20 2f 2a 20 4e 65 77 73 |/.X.X | /* News|
|000048a0| 67 72 6f 75 70 73 20 2a | 2f 0a 58 20 20 20 20 69 |groups *|/.X i|
|000048b0| 66 20 28 68 70 2d 3e 6e | 62 75 66 5b 30 5d 20 3d |f (hp->n|buf[0] =|
|000048c0| 3d 20 27 5c 30 27 29 0a | 58 09 72 65 74 75 72 6e |= '\0').|X.return|
|000048d0| 20 22 4e 65 77 73 67 72 | 6f 75 70 73 20 68 65 61 | "Newsgr|oups hea|
|000048e0| 64 65 72 20 6d 69 73 73 | 69 6e 67 22 3b 0a 58 0a |der miss|ing";.X.|
|000048f0| 58 20 20 20 20 2f 2a 20 | 53 75 62 6a 65 63 74 20 |X /* |Subject |
|00004900| 2a 2f 0a 58 20 20 20 20 | 69 66 20 28 68 70 2d 3e |*/.X |if (hp->|
|00004910| 74 69 74 6c 65 5b 30 5d | 20 3d 3d 20 27 5c 30 27 |title[0]| == '\0'|
|00004920| 29 20 7b 0a 58 09 69 66 | 20 28 53 75 62 6a 65 63 |) {.X.if| (Subjec|
|00004930| 74 52 65 71 75 69 72 65 | 64 29 0a 58 09 20 20 20 |tRequire|d).X. |
|00004940| 20 72 65 74 75 72 6e 20 | 22 53 75 62 6a 65 63 74 | return |"Subject|
|00004950| 20 68 65 61 64 65 72 20 | 6d 69 73 73 69 6e 67 22 | header |missing"|
|00004960| 3b 0a 58 09 53 74 72 63 | 70 79 28 68 70 2d 3e 74 |;.X.Strc|py(hp->t|
|00004970| 69 74 6c 65 2c 20 22 28 | 6e 6f 6e 65 29 22 29 3b |itle, "(|none)");|
|00004980| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 2f |.X }.|X.X /|
|00004990| 2a 20 46 72 6f 6d 20 2a | 2f 0a 58 20 20 20 20 69 |* From *|/.X i|
|000049a0| 66 20 28 68 70 2d 3e 66 | 72 6f 6d 5b 30 5d 20 3d |f (hp->f|rom[0] =|
|000049b0| 3d 20 27 5c 30 27 29 0a | 58 09 72 65 74 75 72 6e |= '\0').|X.return|
|000049c0| 20 22 46 72 6f 6d 20 68 | 65 61 64 65 72 20 6d 69 | "From h|eader mi|
|000049d0| 73 73 69 6e 67 22 3b 0a | 58 20 20 20 20 46 69 78 |ssing";.|X Fix|
|000049e0| 46 72 6f 6d 28 68 70 29 | 3b 0a 58 0a 58 20 20 20 |From(hp)|;.X.X |
|000049f0| 20 2f 2a 20 52 65 66 65 | 72 65 6e 63 65 73 20 61 | /* Refe|rences a|
|00004a00| 6e 64 20 49 6e 2d 52 65 | 70 6c 79 2d 54 6f 20 2a |nd In-Re|ply-To *|
|00004a10| 2f 0a 58 20 20 20 20 69 | 66 20 28 68 70 2d 3e 66 |/.X i|f (hp->f|
|00004a20| 6f 6c 6c 6f 77 69 64 5b | 30 5d 29 20 0a 58 09 46 |ollowid[|0]) .X.F|
|00004a30| 69 78 52 65 66 65 72 65 | 6e 63 65 73 28 68 70 29 |ixRefere|nces(hp)|
|00004a40| 3b 0a 58 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 |;.X.X | return |
|00004a50| 4e 55 4c 4c 3b 0a 58 7d | 0a 58 0a 58 0a 58 23 69 |NULL;.X}|.X.X.X#i|
|00004a60| 66 64 65 66 09 54 45 53 | 54 0a 58 6d 61 69 6e 28 |fdef.TES|T.Xmain(|
|00004a70| 29 0a 58 7b 0a 58 20 20 | 20 20 63 68 61 72 09 62 |).X{.X | char.b|
|00004a80| 75 66 66 5b 32 35 36 5d | 3b 0a 58 20 20 20 20 69 |uff[256]|;.X i|
|00004a90| 6e 74 09 09 69 3b 0a 58 | 0a 58 20 20 20 20 69 66 |nt..i;.X|.X if|
|00004aa0| 20 28 69 20 3d 20 69 73 | 61 74 74 79 28 30 29 29 | (i = is|atty(0))|
|00004ab0| 0a 58 09 28 76 6f 69 64 | 29 70 72 69 6e 74 66 28 |.X.(void|)printf(|
|00004ac0| 22 45 6e 74 65 72 20 61 | 64 64 72 65 73 73 65 73 |"Enter a|ddresses|
|00004ad0| 3a 5c 6e 22 29 3b 0a 58 | 20 20 20 20 66 6f 72 20 |:\n");.X| for |
|00004ae0| 28 20 3b 20 3b 20 29 20 | 7b 0a 58 09 69 66 20 28 |( ; ; ) |{.X.if (|
|00004af0| 69 29 0a 58 09 20 20 20 | 20 28 76 6f 69 64 29 70 |i).X. | (void)p|
|00004b00| 72 69 6e 74 66 28 22 3e | 20 20 22 29 3b 0a 58 09 |rintf(">| ");.X.|
|00004b10| 69 66 20 28 67 65 74 73 | 28 62 75 66 66 29 20 3d |if (gets|(buff) =|
|00004b20| 3d 20 4e 55 4c 4c 20 7c | 7c 20 62 75 66 66 5b 30 |= NULL ||| buff[0|
|00004b30| 5d 20 3d 3d 20 27 5c 30 | 27 29 0a 58 09 20 20 20 |] == '\0|').X. |
|00004b40| 20 62 72 65 61 6b 3b 0a | 58 09 69 66 20 28 62 75 | break;.|X.if (bu|
|00004b50| 66 66 5b 30 5d 20 21 3d | 20 27 23 27 29 0a 58 09 |ff[0] !=| '#').X.|
|00004b60| 20 20 20 20 28 76 6f 69 | 64 29 70 72 69 6e 74 66 | (voi|d)printf|
|00004b70| 28 22 5c 74 25 73 20 2d | 3e 20 25 73 5c 6e 5c 6e |("\t%s -|> %s\n\n|
|00004b80| 22 2c 20 62 75 66 66 2c | 20 46 69 78 41 64 64 72 |", buff,| FixAddr|
|00004b90| 65 73 73 28 62 75 66 66 | 29 29 3b 0a 58 20 20 20 |ess(buff|));.X |
|00004ba0| 20 7d 0a 58 0a 58 20 20 | 20 20 65 78 69 74 28 30 | }.X.X | exit(0|
|00004bb0| 29 3b 0a 58 7d 0a 58 23 | 65 6e 64 69 66 09 2f 2a |);.X}.X#|endif./*|
|00004bc0| 20 54 45 53 54 20 2a 2f | 0a 45 4e 44 5f 4f 46 5f | TEST */|.END_OF_|
|00004bd0| 46 49 4c 45 0a 20 20 69 | 66 20 74 65 73 74 20 31 |FILE. i|f test 1|
|00004be0| 30 36 35 32 20 2d 6e 65 | 20 60 77 63 20 2d 63 20 |0652 -ne| `wc -c |
|00004bf0| 3c 27 68 64 72 2e 63 27 | 60 3b 20 74 68 65 6e 0a |<'hdr.c'|`; then.|
|00004c00| 20 20 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 5c | echo| shar: \|
|00004c10| 22 27 68 64 72 2e 63 27 | 5c 22 20 75 6e 70 61 63 |"'hdr.c'|\" unpac|
|00004c20| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00004c30| 69 7a 65 21 0a 20 20 66 | 69 0a 20 20 23 20 65 6e |ize!. f|i. # en|
|00004c40| 64 20 6f 66 20 27 68 64 | 72 2e 63 27 0a 66 69 0a |d of 'hd|r.c'.fi.|
|00004c50| 69 66 20 74 65 73 74 20 | 2d 66 20 27 6c 65 78 2e |if test |-f 'lex.|
|00004c60| 6c 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |l' -a "$|{1}" != |
|00004c70| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|00004c80| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|00004c90| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|00004ca0| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 6c 65 78 2e |ing file| \"'lex.|
|00004cb0| 6c 27 5c 22 0a 65 6c 73 | 65 0a 20 20 65 63 68 6f |l'\".els|e. echo|
|00004cc0| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00004cd0| 67 20 5c 22 27 6c 65 78 | 2e 6c 27 5c 22 20 5c 28 |g \"'lex|.l'\" \(|
|00004ce0| 33 36 36 34 20 63 68 61 | 72 61 63 74 65 72 73 5c |3664 cha|racters\|
|00004cf0| 29 0a 20 20 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |). sed |"s/^X//"|
|00004d00| 20 3e 27 6c 65 78 2e 6c | 27 20 3c 3c 27 45 4e 44 | >'lex.l|' <<'END|
|00004d10| 5f 4f 46 5f 46 49 4c 45 | 27 0a 58 2f 2a 0a 58 2a |_OF_FILE|'.X/*.X*|
|00004d20| 2a 20 20 4c 65 78 69 63 | 61 6c 20 61 6e 61 6c 79 |* Lexic|al analy|
|00004d30| 7a 65 72 20 66 6f 72 20 | 74 68 65 20 67 61 67 20 |zer for |the gag |
|00004d40| 6c 61 6e 67 75 61 67 65 | 2e 20 20 57 65 20 68 61 |language|. We ha|
|00004d50| 76 65 20 6f 75 72 20 6f | 77 6e 20 46 53 41 0a 58 |ve our o|wn FSA.X|
|00004d60| 2a 2a 20 20 66 6f 72 20 | 63 6f 6d 6d 65 6e 74 73 |** for |comments|
|00004d70| 20 62 65 63 61 75 73 65 | 20 69 74 27 73 20 6d 75 | because| it's mu|
|00004d80| 63 68 20 73 6d 61 6c 6c | 65 72 20 61 6e 64 20 71 |ch small|er and q|
|00004d90| 75 69 63 6b 65 72 20 74 | 68 61 74 20 77 61 79 2e |uicker t|hat way.|
|00004da0| 0a 58 2a 2f 0a 58 25 7b | 0a 58 23 69 6e 63 6c 75 |.X*/.X%{|.X#inclu|
|00004db0| 64 65 20 22 67 61 74 65 | 2e 68 22 0a 58 23 69 6e |de "gate|.h".X#in|
|00004dc0| 63 6c 75 64 65 20 22 67 | 61 67 2e 68 22 0a 58 0a |clude "g|ag.h".X.|
|00004dd0| 58 2f 2a 20 53 74 61 74 | 65 20 6f 66 20 6f 75 72 |X/* Stat|e of our|
|00004de0| 20 61 75 74 6f 6d 61 74 | 6f 6e 2e 20 2a 2f 0a 58 | automat|on. */.X|
|00004df0| 74 79 70 65 64 65 66 20 | 65 6e 75 6d 20 5f 53 54 |typedef |enum _ST|
|00004e00| 41 54 45 20 7b 0a 58 20 | 20 20 20 53 5f 53 54 41 |ATE {.X | S_STA|
|00004e10| 52 2c 20 53 5f 4e 4f 52 | 4d 41 4c 2c 20 53 5f 45 |R, S_NOR|MAL, S_E|
|00004e20| 4e 44 0a 58 7d 20 53 54 | 41 54 45 3b 0a 58 0a 58 |ND.X} ST|ATE;.X.X|
|00004e30| 2f 2a 20 4b 65 79 2d 76 | 61 6c 75 65 20 70 61 69 |/* Key-v|alue pai|
|00004e40| 72 2e 20 2a 2f 0a 58 74 | 79 70 65 64 65 66 20 73 |r. */.Xt|ypedef s|
|00004e50| 74 72 75 63 74 20 5f 50 | 41 49 52 20 7b 0a 58 20 |truct _P|AIR {.X |
|00004e60| 20 20 20 63 68 61 72 09 | 2a 6e 61 6d 65 3b 0a 58 | char.|*name;.X|
|00004e70| 20 20 20 20 69 6e 74 09 | 09 76 61 6c 75 65 3b 0a | int.|.value;.|
|00004e80| 58 7d 20 50 41 49 52 3b | 0a 58 0a 58 63 68 61 72 |X} PAIR;|.X.Xchar|
|00004e90| 09 09 79 79 66 69 6c 65 | 6e 61 6d 65 5b 53 4d 5f |..yyfile|name[SM_|
|00004ea0| 53 49 5a 45 5d 3b 0a 58 | 65 78 74 65 72 6e 20 69 |SIZE];.X|extern i|
|00004eb0| 6e 74 09 45 72 72 6f 72 | 73 3b 0a 58 0a 58 2f 2a |nt.Error|s;.X.X/*|
|00004ec0| 20 4c 69 73 74 20 6f 66 | 20 47 41 47 27 73 20 6b | List of| GAG's k|
|00004ed0| 65 79 77 6f 72 64 73 2e | 20 2a 2f 0a 58 53 54 41 |eywords.| */.XSTA|
|00004ee0| 54 49 43 20 50 41 49 52 | 09 4b 65 79 77 6f 72 64 |TIC PAIR|.Keyword|
|00004ef0| 73 5b 5d 20 3d 20 7b 0a | 58 20 20 20 20 7b 09 22 |s[] = {.|X {."|
|00004f00| 64 65 66 61 75 6c 74 22 | 2c 09 09 74 44 45 46 41 |default"|,..tDEFA|
|00004f10| 55 4c 54 09 7d 2c 0a 58 | 20 20 20 20 7b 09 22 64 |ULT.},.X| {."d|
|00004f20| 69 72 65 63 74 6f 72 79 | 22 2c 09 09 74 44 49 52 |irectory|",..tDIR|
|00004f30| 45 43 54 4f 52 59 09 7d | 2c 0a 58 20 20 20 20 7b |ECTORY.}|,.X {|
|00004f40| 09 22 64 69 73 74 72 69 | 62 75 74 69 6f 6e 73 22 |."distri|butions"|
|00004f50| 2c 09 74 44 49 53 54 52 | 49 42 55 54 49 4f 4e 53 |,.tDISTR|IBUTIONS|
|00004f60| 09 7d 2c 0a 58 20 20 20 | 20 7b 09 22 64 6f 74 69 |.},.X | {."doti|
|00004f70| 66 79 22 2c 09 09 74 44 | 4f 54 49 46 59 09 09 7d |fy",..tD|OTIFY..}|
|00004f80| 2c 0a 58 20 20 20 20 7b | 09 22 66 61 6c 73 65 22 |,.X {|."false"|
|00004f90| 2c 09 09 74 46 41 4c 53 | 45 09 09 7d 2c 0a 58 20 |,..tFALS|E..},.X |
|00004fa0| 20 20 20 7b 09 22 66 6c | 61 67 73 22 2c 09 09 74 | {."fl|ags",..t|
|00004fb0| 46 4c 41 47 53 09 09 7d | 2c 0a 58 20 20 20 20 7b |FLAGS..}|,.X {|
|00004fc0| 09 22 67 61 74 65 77 61 | 79 22 2c 09 09 74 47 41 |."gatewa|y",..tGA|
|00004fd0| 54 45 57 41 59 09 7d 2c | 0a 58 20 20 20 20 7b 09 |TEWAY.},|.X {.|
|00004fe0| 22 69 6e 65 77 73 22 2c | 09 09 74 49 4e 45 57 53 |"inews",|..tINEWS|
|00004ff0| 09 09 7d 2c 0a 58 20 20 | 20 20 7b 09 22 6d 61 69 |..},.X | {."mai|
|00005000| 6c 32 6e 65 77 73 22 2c | 09 09 74 4d 41 49 4c 32 |l2news",|..tMAIL2|
|00005010| 4e 45 57 53 09 7d 2c 0a | 58 20 20 20 20 7b 09 22 |NEWS.},.|X {."|
|00005020| 6d 61 69 6c 63 6f 6e 74 | 61 63 74 22 2c 09 09 74 |mailcont|act",..t|
|00005030| 4d 41 49 4c 43 4f 4e 54 | 41 43 54 09 7d 2c 0a 58 |MAILCONT|ACT.},.X|
|00005040| 20 20 20 20 7b 09 22 6d | 61 69 6c 68 6f 73 74 22 | {."m|ailhost"|
|00005050| 2c 09 09 74 4d 41 49 4c | 48 4f 53 54 09 7d 2c 0a |,..tMAIL|HOST.},.|
|00005060| 58 20 20 20 20 7b 09 22 | 6d 61 69 6c 69 6e 67 6c |X {."|mailingl|
|00005070| 69 73 74 22 2c 09 09 74 | 4d 41 49 4c 49 4e 47 4c |ist",..t|MAILINGL|
|00005080| 49 53 54 09 7d 2c 0a 58 | 20 20 20 20 7b 09 22 6d |IST.},.X| {."m|
|00005090| 61 69 6c 70 6f 73 74 22 | 2c 09 09 74 4d 41 49 4c |ailpost"|,..tMAIL|
|000050a0| 50 4f 53 54 09 7d 2c 0a | 58 20 20 20 20 7b 09 22 |POST.},.|X {."|
|000050b0| 6d 6f 64 65 72 61 74 6f | 72 22 2c 09 09 74 4d 4f |moderato|r",..tMO|
|000050c0| 44 45 52 41 54 4f 52 09 | 7d 2c 0a 58 20 20 20 20 |DERATOR.|},.X |
|000050d0| 7b 09 22 6e 65 77 73 32 | 6d 61 69 6c 22 2c 09 09 |{."news2|mail",..|
|000050e0| 74 4e 45 57 53 32 4d 41 | 49 4c 09 7d 2c 0a 58 20 |tNEWS2MA|IL.},.X |
|000050f0| 20 20 20 7b 09 22 6f 72 | 67 61 6e 69 7a 61 74 69 | {."or|ganizati|
|00005100| 6f 6e 22 2c 09 09 74 4f | 52 47 41 4e 49 5a 41 54 |on",..tO|RGANIZAT|
|00005110| 49 4f 4e 09 7d 2c 0a 58 | 20 20 20 20 7b 09 22 6f |ION.},.X| {."o|
|00005120| 77 6e 65 72 22 2c 09 09 | 74 4f 57 4e 45 52 09 09 |wner",..|tOWNER..|
|00005130| 7d 2c 0a 58 20 20 20 20 | 7b 09 22 72 65 71 75 65 |},.X |{."reque|
|00005140| 73 74 5f 61 64 64 72 65 | 73 73 22 2c 09 74 52 45 |st_addre|ss",.tRE|
|00005150| 51 55 45 53 54 41 44 44 | 52 09 7d 2c 0a 58 20 20 |QUESTADD|R.},.X |
|00005160| 20 20 7b 09 22 73 69 74 | 65 22 2c 09 09 09 74 53 | {."sit|e",...tS|
|00005170| 49 54 45 09 09 7d 2c 0a | 58 20 20 20 20 7b 09 22 |ITE..},.|X {."|
|00005180| 74 72 75 65 22 2c 09 09 | 09 74 54 52 55 45 09 09 |true",..|.tTRUE..|
|00005190| 7d 2c 0a 58 20 20 20 20 | 7b 09 22 75 73 65 72 22 |},.X |{."user"|
|000051a0| 2c 09 09 09 74 55 53 45 | 52 09 09 7d 2c 0a 58 20 |,...tUSE|R..},.X |
|000051b0| 20 20 20 7b 09 4e 55 4c | 4c 2c 09 09 09 30 09 09 | {.NUL|L,...0..|
|000051c0| 7d 0a 58 7d 3b 0a 58 0a | 58 25 7d 0a 58 0a 58 25 |}.X};.X.|X%}.X.X%|
|000051d0| 25 0a 58 0a 58 5b 2d 2b | 30 2d 39 41 2d 5a 61 2d |%.X.X[-+|0-9A-Za-|
|000051e0| 7a 5f 2e 5d 2b 09 7b 0a | 58 09 09 20 20 20 20 2f |z_.]+.{.|X.. /|
|000051f0| 2a 20 41 20 73 69 6d 70 | 6c 65 20 74 49 44 20 6f |* A simp|le tID o|
|00005200| 72 20 6b 65 79 77 6f 72 | 64 2e 20 2a 2f 0a 58 09 |r keywor|d. */.X.|
|00005210| 09 20 20 20 20 72 65 67 | 69 73 74 65 72 20 50 41 |. reg|ister PA|
|00005220| 49 52 09 2a 70 3b 0a 58 | 0a 58 09 09 20 20 20 20 |IR.*p;.X|.X.. |
|00005230| 2f 2a 20 4b 65 79 77 6f | 72 64 3f 20 2a 2f 0a 58 |/* Keywo|rd? */.X|
|00005240| 09 09 20 20 20 20 66 6f | 72 20 28 70 20 3d 20 4b |.. fo|r (p = K|
|00005250| 65 79 77 6f 72 64 73 3b | 20 70 2d 3e 6e 61 6d 65 |eywords;| p->name|
|00005260| 3b 20 70 2b 2b 29 0a 58 | 09 09 09 69 66 20 28 45 |; p++).X|...if (E|
|00005270| 51 28 70 2d 3e 6e 61 6d | 65 2c 20 79 79 74 65 78 |Q(p->nam|e, yytex|
|00005280| 74 29 29 0a 58 09 09 09 | 20 20 20 20 72 65 74 75 |t)).X...| retu|
|00005290| 72 6e 20 70 2d 3e 76 61 | 6c 75 65 3b 0a 58 09 09 |rn p->va|lue;.X..|
|000052a0| 20 20 20 20 79 79 6c 76 | 61 6c 2e 53 74 72 69 6e | yylv|al.Strin|
|000052b0| 67 20 3d 20 43 4f 50 59 | 28 79 79 74 65 78 74 29 |g = COPY|(yytext)|
|000052c0| 3b 0a 58 09 09 20 20 20 | 20 72 65 74 75 72 6e 20 |;.X.. | return |
|000052d0| 74 49 44 3b 0a 58 09 09 | 7d 0a 58 0a 58 5e 23 5b |tID;.X..|}.X.X^#[|
|000052e0| 20 5c 74 5d 2b 5b 30 2d | 39 5d 2b 5b 20 5c 74 5d | \t]+[0-|9]+[ \t]|
|000052f0| 2b 22 5b 5e 5c 6e 5d 2b | 22 5b 5e 5c 6e 5d 2a 24 |+"[^\n]+|"[^\n]*$|
|00005300| 09 7b 0a 58 09 09 20 20 | 20 20 2f 2a 20 43 20 70 |.{.X.. | /* C p|
|00005310| 72 65 2d 70 72 6f 63 65 | 73 73 6f 72 20 63 6f 6e |re-proce|ssor con|
|00005320| 74 72 6f 6c 20 6c 69 6e | 65 2e 20 2a 2f 0a 58 09 |trol lin|e. */.X.|
|00005330| 09 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |. reg|ister ch|
|00005340| 61 72 09 2a 70 3b 0a 58 | 09 09 20 20 20 20 63 68 |ar.*p;.X|.. ch|
|00005350| 61 72 09 09 2a 6e 61 6d | 65 70 3b 0a 58 0a 58 09 |ar..*nam|ep;.X.X.|
|00005360| 09 20 20 20 20 2f 2a 20 | 46 69 6e 64 20 74 68 65 |. /* |Find the|
|00005370| 20 6c 69 6e 65 20 6e 75 | 6d 62 65 72 2e 20 2a 2f | line nu|mber. */|
|00005380| 0a 58 09 09 20 20 20 20 | 66 6f 72 20 28 70 20 3d |.X.. |for (p =|
|00005390| 20 79 79 74 65 78 74 3b | 20 2a 70 20 26 26 20 21 | yytext;| *p && !|
|000053a0| 69 73 64 69 67 69 74 28 | 2a 70 29 3b 20 70 2b 2b |isdigit(|*p); p++|
|000053b0| 29 0a 58 09 09 09 3b 0a | 58 09 09 20 20 20 20 2f |).X...;.|X.. /|
|000053c0| 2a 20 50 61 72 73 65 20 | 74 68 65 20 6e 75 6d 62 |* Parse |the numb|
|000053d0| 65 72 2c 20 66 69 6e 64 | 20 74 68 65 20 73 74 61 |er, find| the sta|
|000053e0| 72 74 20 6f 66 20 74 68 | 65 20 66 69 6c 65 6e 61 |rt of th|e filena|
|000053f0| 6d 65 2e 20 2a 2f 0a 58 | 09 09 20 20 20 20 66 6f |me. */.X|.. fo|
|00005400| 72 20 28 79 79 6c 69 6e | 65 6e 6f 20 3d 20 61 74 |r (yylin|eno = at|
|00005410| 6f 69 28 70 29 3b 20 2a | 70 20 26 26 20 2a 70 20 |oi(p); *|p && *p |
|00005420| 21 3d 20 27 22 27 3b 20 | 70 2b 2b 29 0a 58 09 09 |!= '"'; |p++).X..|
|00005430| 09 3b 0a 58 09 09 20 20 | 20 20 2f 2a 20 4d 61 72 |.;.X.. | /* Mar|
|00005440| 63 68 20 64 6f 77 6e 20 | 74 6f 20 74 68 65 20 65 |ch down |to the e|
|00005450| 6e 64 20 6f 66 20 74 68 | 65 20 66 69 6c 65 6e 61 |nd of th|e filena|
|00005460| 6d 65 2e 20 2a 2f 0a 58 | 09 09 20 20 20 20 66 6f |me. */.X|.. fo|
|00005470| 72 20 28 6e 61 6d 65 70 | 20 3d 20 70 3b 20 2a 2b |r (namep| = p; *+|
|00005480| 2b 70 20 26 26 20 2a 70 | 20 21 3d 20 27 22 27 3b |+p && *p| != '"';|
|00005490| 20 70 2b 2b 29 0a 58 09 | 09 09 3b 0a 58 09 09 20 | p++).X.|..;.X.. |
|000054a0| 20 20 20 2a 70 20 3d 20 | 27 5c 30 27 3b 0a 58 09 | *p = |'\0';.X.|
|000054b0| 09 20 20 20 20 28 76 6f | 69 64 29 73 74 72 6e 63 |. (vo|id)strnc|
|000054c0| 70 79 28 79 79 66 69 6c | 65 6e 61 6d 65 2c 20 6e |py(yyfil|ename, n|
|000054d0| 61 6d 65 70 2c 20 73 69 | 7a 65 6f 66 20 79 79 66 |amep, si|zeof yyf|
|000054e0| 69 6c 65 6e 61 6d 65 20 | 2d 20 31 29 3b 0a 58 09 |ilename |- 1);.X.|
|000054f0| 09 20 20 20 20 79 79 66 | 69 6c 65 6e 61 6d 65 5b |. yyf|ilename[|
|00005500| 73 69 7a 65 6f 66 20 79 | 79 66 69 6c 65 6e 61 6d |sizeof y|yfilenam|
|00005510| 65 20 2d 20 31 5d 20 3d | 20 27 5c 30 27 3b 0a 58 |e - 1] =| '\0';.X|
|00005520| 09 09 7d 0a 58 0a 58 5c | 22 5b 5e 22 5d 2a 09 09 |..}.X.X\|"[^"]*..|
|00005530| 7b 0a 58 09 09 20 20 20 | 20 2f 2a 20 51 75 6f 74 |{.X.. | /* Quot|
|00005540| 65 64 20 73 74 72 69 6e | 67 2e 20 2a 2f 0a 58 09 |ed strin|g. */.X.|
|00005550| 09 20 20 20 20 69 6e 74 | 09 09 63 3b 0a 58 0a 58 |. int|..c;.X.X|
|00005560| 09 09 20 20 20 20 2f 2a | 20 53 65 65 20 74 68 65 |.. /*| See the|
|00005570| 20 4c 65 78 20 70 61 70 | 65 72 20 69 6e 20 56 6f | Lex pap|er in Vo|
|00005580| 6c 75 6d 65 20 32 41 20 | 6f 72 20 50 53 31 3a 31 |lume 2A |or PS1:1|
|00005590| 36 0a 58 09 09 20 20 20 | 20 20 2a 20 66 6f 72 20 |6.X.. | * for |
|000055a0| 64 65 74 61 69 6c 73 20 | 6f 6e 20 74 68 69 73 20 |details |on this |
|000055b0| 63 6f 64 65 2e 20 2a 2f | 0a 58 09 09 20 20 20 20 |code. */|.X.. |
|000055c0| 69 66 20 28 79 79 74 65 | 78 74 5b 79 79 6c 65 6e |if (yyte|xt[yylen|
|000055d0| 67 20 2d 20 31 5d 20 3d | 3d 20 27 5c 5c 27 29 0a |g - 1] =|= '\\').|
|000055e0| 58 09 09 09 79 79 6d 6f | 72 65 28 29 3b 0a 58 09 |X...yymo|re();.X.|
|000055f0| 09 20 20 20 20 65 6c 73 | 65 20 7b 0a 58 09 09 09 |. els|e {.X...|
|00005600| 69 66 20 28 28 63 20 3d | 20 69 6e 70 75 74 28 29 |if ((c =| input()|
|00005610| 29 20 3d 3d 20 27 22 27 | 29 20 7b 0a 58 09 09 09 |) == '"'|) {.X...|
|00005620| 20 20 20 20 79 79 6c 76 | 61 6c 2e 53 74 72 69 6e | yylv|al.Strin|
|00005630| 67 20 3d 20 43 4f 50 59 | 28 26 79 79 74 65 78 74 |g = COPY|(&yytext|
|00005640| 5b 31 5d 29 3b 0a 58 09 | 09 09 20 20 20 20 72 65 |[1]);.X.|.. re|
|00005650| 74 75 72 6e 20 74 49 44 | 3b 0a 58 09 09 09 7d 0a |turn tID|;.X...}.|
|00005660| 58 09 09 09 75 6e 70 75 | 74 28 63 29 3b 0a 58 09 |X...unpu|t(c);.X.|
|00005670| 09 09 79 79 65 72 72 6f | 72 28 22 42 61 64 20 73 |..yyerro|r("Bad s|
|00005680| 74 72 69 6e 67 22 29 3b | 0a 58 09 09 20 20 20 20 |tring");|.X.. |
|00005690| 7d 0a 58 09 09 7d 0a 58 | 0a 58 22 2f 2a 22 09 20 |}.X..}.X|.X"/*". |
|000056a0| 20 20 20 20 20 20 20 7b | 0a 58 09 09 20 20 20 20 | {|.X.. |
|000056b0| 2f 2a 20 43 6f 6d 6d 65 | 6e 74 2e 20 2a 2f 0a 58 |/* Comme|nt. */.X|
|000056c0| 09 09 20 20 20 20 72 65 | 67 69 73 74 65 72 20 53 |.. re|gister S|
|000056d0| 54 41 54 45 09 53 3b 0a | 58 0a 58 09 09 20 20 20 |TATE.S;.|X.X.. |
|000056e0| 20 66 6f 72 20 28 53 20 | 3d 20 53 5f 4e 4f 52 4d | for (S |= S_NORM|
|000056f0| 41 4c 3b 20 53 20 21 3d | 20 53 5f 45 4e 44 3b 20 |AL; S !=| S_END; |
|00005700| 29 0a 58 09 09 09 73 77 | 69 74 63 68 20 28 69 6e |).X...sw|itch (in|
|00005710| 70 75 74 28 29 29 20 7b | 0a 58 09 09 09 63 61 73 |put()) {|.X...cas|
|00005720| 65 20 27 2f 27 3a 0a 58 | 09 09 09 20 20 20 20 69 |e '/':.X|... i|
|00005730| 66 20 28 53 20 3d 3d 20 | 53 5f 53 54 41 52 29 20 |f (S == |S_STAR) |
|00005740| 7b 0a 58 09 09 09 09 53 | 20 3d 20 53 5f 45 4e 44 |{.X....S| = S_END|
|00005750| 3b 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |;.X....b|reak;.X.|
|00005760| 09 09 20 20 20 20 7d 0a | 58 09 09 09 20 20 20 20 |.. }.|X... |
|00005770| 2f 2a 20 46 41 4c 4c 54 | 48 52 4f 55 47 48 20 2a |/* FALLT|HROUGH *|
|00005780| 2f 0a 58 09 09 09 64 65 | 66 61 75 6c 74 3a 0a 58 |/.X...de|fault:.X|
|00005790| 09 09 09 20 20 20 20 53 | 20 3d 20 53 5f 4e 4f 52 |... S| = S_NOR|
|000057a0| 4d 41 4c 3b 0a 58 09 09 | 09 20 20 20 20 62 72 65 |MAL;.X..|. bre|
|000057b0| 61 6b 3b 0a 58 09 09 09 | 63 61 73 65 20 27 5c 30 |ak;.X...|case '\0|
|000057c0| 27 3a 0a 58 09 09 09 20 | 20 20 20 53 20 3d 20 53 |':.X... | S = S|
|000057d0| 5f 45 4e 44 3b 0a 58 09 | 09 09 20 20 20 20 62 72 |_END;.X.|.. br|
|000057e0| 65 61 6b 3b 0a 58 09 09 | 09 63 61 73 65 20 27 2a |eak;.X..|.case '*|
|000057f0| 27 3a 0a 58 09 09 09 20 | 20 20 20 53 20 3d 20 53 |':.X... | S = S|
|00005800| 5f 53 54 41 52 3b 0a 58 | 09 09 09 20 20 20 20 62 |_STAR;.X|... b|
|00005810| 72 65 61 6b 3b 0a 58 09 | 09 09 7d 0a 58 09 09 7d |reak;.X.|..}.X..}|
|00005820| 0a 58 0a 58 5b 20 5c 74 | 5c 6e 5d 09 09 7b 0a 58 |.X.X[ \t|\n]..{.X|
|00005830| 09 09 20 20 20 20 2f 2a | 20 54 61 73 74 79 20 77 |.. /*| Tasty w|
|00005840| 68 69 74 65 73 70 61 63 | 65 2e 20 2a 2f 0a 58 23 |hitespac|e. */.X#|
|00005850| 69 66 64 65 66 09 6c 69 | 6e 74 0a 58 09 09 20 20 |ifdef.li|nt.X.. |
|00005860| 20 20 2f 2a 20 49 20 61 | 6d 20 63 6f 6d 70 75 6c | /* I a|m compul|
|00005870| 73 69 76 65 20 61 62 6f | 75 74 20 6c 69 6e 74 20 |sive abo|ut lint |
|00005880| 6e 61 74 74 65 72 69 6e | 67 73 2e 20 2a 2f 0a 58 |natterin|gs. */.X|
|00005890| 09 09 20 20 20 20 79 79 | 74 65 78 74 5b 30 5d 20 |.. yy|text[0] |
|000058a0| 3d 20 79 79 69 6e 70 75 | 74 28 29 3b 0a 58 09 09 |= yyinpu|t();.X..|
|000058b0| 20 20 20 20 79 79 6f 75 | 74 70 75 74 28 79 79 74 | yyou|tput(yyt|
|000058c0| 65 78 74 5b 30 5d 29 3b | 0a 58 09 09 20 20 20 20 |ext[0]);|.X.. |
|000058d0| 79 79 75 6e 70 75 74 28 | 79 79 74 65 78 74 5b 30 |yyunput(|yytext[0|
|000058e0| 5d 29 3b 0a 58 09 09 20 | 20 20 20 52 45 4a 45 43 |]);.X.. | REJEC|
|000058f0| 54 3b 0a 58 23 65 6e 64 | 69 66 09 2f 2a 20 6c 69 |T;.X#end|if./* li|
|00005900| 6e 74 20 2a 2f 0a 58 09 | 09 7d 0a 58 0a 58 2e 09 |nt */.X.|.}.X.X..|
|00005910| 09 7b 0a 58 09 09 20 20 | 20 20 2f 2a 20 52 61 6e |.{.X.. | /* Ran|
|00005920| 64 6f 6d 20 73 70 65 63 | 69 61 6c 20 63 68 61 72 |dom spec|ial char|
|00005930| 61 63 74 65 72 2e 20 2a | 2f 0a 58 09 09 20 20 20 |acter. *|/.X.. |
|00005940| 20 72 65 74 75 72 6e 20 | 2a 79 79 74 65 78 74 3b | return |*yytext;|
|00005950| 0a 58 09 09 7d 0a 58 0a | 58 25 25 0a 58 0a 58 0a |.X..}.X.|X%%.X.X.|
|00005960| 58 2f 2a 0a 58 2a 2a 20 | 20 43 61 6c 6c 65 64 20 |X/*.X** | Called |
|00005970| 62 79 20 6c 65 78 20 61 | 74 20 65 6e 64 2d 6f 66 |by lex a|t end-of|
|00005980| 2d 73 74 72 65 61 6d 2e | 20 20 52 65 74 75 72 6e |-stream.| Return|
|00005990| 20 6f 6e 65 20 69 66 20 | 6e 6f 20 6d 6f 72 65 20 | one if |no more |
|000059a0| 69 6e 70 75 74 2e 0a 58 | 2a 2f 0a 58 69 6e 74 0a |input..X|*/.Xint.|
|000059b0| 58 79 79 77 72 61 70 28 | 29 0a 58 7b 0a 58 20 20 |Xyywrap(|).X{.X |
|000059c0| 20 20 72 65 74 75 72 6e | 20 31 3b 0a 58 7d 0a 58 | return| 1;.X}.X|
|000059d0| 0a 58 0a 58 79 79 6f 70 | 65 6e 28 70 29 0a 58 20 |.X.Xyyop|en(p).X |
|000059e0| 20 20 20 63 68 61 72 09 | 2a 70 3b 0a 58 7b 0a 58 | char.|*p;.X{.X|
|000059f0| 20 20 20 20 69 66 20 28 | 70 20 3d 3d 20 4e 55 4c | if (|p == NUL|
|00005a00| 4c 29 0a 58 09 28 76 6f | 69 64 29 73 74 72 63 70 |L).X.(vo|id)strcp|
|00005a10| 79 28 79 79 66 69 6c 65 | 6e 61 6d 65 2c 20 22 73 |y(yyfile|name, "s|
|00005a20| 74 64 69 6e 22 29 3b 0a | 58 20 20 20 20 65 6c 73 |tdin");.|X els|
|00005a30| 65 20 7b 0a 58 09 69 66 | 20 28 28 79 79 69 6e 20 |e {.X.if| ((yyin |
|00005a40| 3d 20 66 6f 70 65 6e 28 | 70 2c 20 22 72 22 29 29 |= fopen(|p, "r"))|
|00005a50| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 20 20 | == NULL|) {.X. |
|00005a60| 20 20 46 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 | Fprint|f(stderr|
|00005a70| 2c 20 22 25 73 3a 20 43 | 61 6e 27 74 20 6f 70 65 |, "%s: C|an't ope|
|00005a80| 6e 20 5c 22 25 73 5c 22 | 20 66 6f 72 20 69 6e 70 |n \"%s\"| for inp|
|00005a90| 75 74 2c 20 25 73 2e 5c | 6e 22 2c 0a 58 09 09 20 |ut, %s.\|n",.X.. |
|00005aa0| 20 20 20 50 6e 61 6d 65 | 2c 20 70 2c 20 73 74 72 | Pname|, p, str|
|00005ab0| 65 72 72 6f 72 28 65 72 | 72 6e 6f 29 29 3b 0a 58 |error(er|rno));.X|
|00005ac0| 09 20 20 20 20 65 78 69 | 74 28 31 29 3b 0a 58 09 |. exi|t(1);.X.|
|00005ad0| 7d 0a 58 09 28 76 6f 69 | 64 29 73 74 72 63 70 79 |}.X.(voi|d)strcpy|
|00005ae0| 28 79 79 66 69 6c 65 6e | 61 6d 65 2c 20 70 29 3b |(yyfilen|ame, p);|
|00005af0| 0a 58 20 20 20 20 7d 0a | 58 7d 0a 58 0a 58 0a 58 |.X }.|X}.X.X.X|
|00005b00| 2f 2a 0a 58 2a 2a 20 20 | 57 72 69 74 65 20 61 6e |/*.X** |Write an|
|00005b10| 20 65 72 72 6f 72 20 6d | 65 73 73 61 67 65 2e 0a | error m|essage..|
|00005b20| 58 2a 2f 0a 58 79 79 65 | 72 72 6f 72 28 70 29 0a |X*/.Xyye|rror(p).|
|00005b30| 58 20 20 20 20 63 68 61 | 72 09 2a 70 3b 0a 58 7b |X cha|r.*p;.X{|
|00005b40| 0a 58 20 20 20 20 63 68 | 61 72 09 62 75 66 66 5b |.X ch|ar.buff[|
|00005b50| 53 4d 5f 53 49 5a 45 5d | 3b 0a 58 0a 58 20 20 20 |SM_SIZE]|;.X.X |
|00005b60| 20 28 76 6f 69 64 29 73 | 74 72 6e 63 70 79 28 62 | (void)s|trncpy(b|
|00005b70| 75 66 66 2c 20 79 79 74 | 65 78 74 2c 20 73 69 7a |uff, yyt|ext, siz|
|00005b80| 65 6f 66 20 62 75 66 66 | 29 3b 0a 58 20 20 20 20 |eof buff|);.X |
|00005b90| 62 75 66 66 5b 73 69 7a | 65 6f 66 20 62 75 66 66 |buff[siz|eof buff|
|00005ba0| 20 2d 20 31 5d 20 3d 20 | 27 5c 30 27 3b 0a 58 20 | - 1] = |'\0';.X |
|00005bb0| 20 20 20 46 70 72 69 6e | 74 66 28 73 74 64 65 72 | Fprin|tf(stder|
|00005bc0| 72 2c 20 22 5c 22 25 73 | 5c 22 2c 20 6c 69 6e 65 |r, "\"%s|\", line|
|00005bd0| 20 25 64 3a 20 25 73 20 | 28 6e 65 61 72 20 5c 22 | %d: %s |(near \"|
|00005be0| 25 73 5c 22 29 5c 6e 22 | 2c 0a 58 09 20 20 20 20 |%s\")\n"|,.X. |
|00005bf0| 79 79 66 69 6c 65 6e 61 | 6d 65 2c 20 79 79 6c 69 |yyfilena|me, yyli|
|00005c00| 6e 65 6e 6f 2c 20 70 2c | 20 62 75 66 66 29 3b 0a |neno, p,| buff);.|
|00005c10| 58 20 20 20 20 45 72 72 | 6f 72 73 2b 2b 3b 0a 58 |X Err|ors++;.X|
|00005c20| 7d 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 20 20 |}.END_OF|_FILE. |
|00005c30| 69 66 20 74 65 73 74 20 | 33 36 36 34 20 2d 6e 65 |if test |3664 -ne|
|00005c40| 20 60 77 63 20 2d 63 20 | 3c 27 6c 65 78 2e 6c 27 | `wc -c |<'lex.l'|
|00005c50| 60 3b 20 74 68 65 6e 0a | 20 20 20 20 65 63 68 6f |`; then.| echo|
|00005c60| 20 73 68 61 72 3a 20 5c | 22 27 6c 65 78 2e 6c 27 | shar: \|"'lex.l'|
|00005c70| 5c 22 20 75 6e 70 61 63 | 6b 65 64 20 77 69 74 68 |\" unpac|ked with|
|00005c80| 20 77 72 6f 6e 67 20 73 | 69 7a 65 21 0a 20 20 66 | wrong s|ize!. f|
|00005c90| 69 0a 20 20 23 20 65 6e | 64 20 6f 66 20 27 6c 65 |i. # en|d of 'le|
|00005ca0| 78 2e 6c 27 0a 66 69 0a | 69 66 20 74 65 73 74 20 |x.l'.fi.|if test |
|00005cb0| 2d 66 20 27 6d 61 69 6c | 2d 69 6e 74 65 72 66 61 |-f 'mail|-interfa|
|00005cc0| 63 65 27 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |ce' -a "|${1}" !=|
|00005cd0| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00005ce0| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00005cf0| 6e 6f 74 20 63 6c 6f 62 | 62 65 72 20 65 78 69 73 |not clob|ber exis|
|00005d00| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 27 6d 61 69 |ting fil|e \"'mai|
|00005d10| 6c 2d 69 6e 74 65 72 66 | 61 63 65 27 5c 22 0a 65 |l-interf|ace'\".e|
|00005d20| 6c 73 65 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |lse. ec|ho shar:|
|00005d30| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 6d | Extract|ing \"'m|
|00005d40| 61 69 6c 2d 69 6e 74 65 | 72 66 61 63 65 27 5c 22 |ail-inte|rface'\"|
|00005d50| 20 5c 28 32 38 32 33 20 | 63 68 61 72 61 63 74 65 | \(2823 |characte|
|00005d60| 72 73 5c 29 0a 20 20 73 | 65 64 20 22 73 2f 5e 58 |rs\). s|ed "s/^X|
|00005d70| 2f 2f 22 20 3e 27 6d 61 | 69 6c 2d 69 6e 74 65 72 |//" >'ma|il-inter|
|00005d80| 66 61 63 65 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |face' <<|'END_OF_|
|00005d90| 46 49 4c 45 27 0a 58 23 | 21 20 2f 62 69 6e 2f 73 |FILE'.X#|! /bin/s|
|00005da0| 68 0a 58 23 23 20 20 41 | 20 70 6f 72 74 61 62 6c |h.X## A| portabl|
|00005db0| 65 20 6d 61 69 6c 20 69 | 6e 74 65 72 66 61 63 65 |e mail i|nterface|
|00005dc0| 20 70 72 6f 67 72 61 6d | 2e 20 20 4f 72 69 67 69 | program|. Origi|
|00005dd0| 6e 61 6c 20 62 79 20 50 | 69 65 74 65 20 42 72 6f |nal by P|iete Bro|
|00005de0| 6f 6b 73 2c 0a 58 23 23 | 20 20 6d 6f 64 69 66 69 |oks,.X##| modifi|
|00005df0| 65 64 20 62 79 20 52 69 | 63 68 20 24 61 6c 7a 20 |ed by Ri|ch $alz |
|00005e00| 3c 72 73 61 6c 7a 40 62 | 62 6e 2e 63 6f 6d 3e 0a |<rsalz@b|bn.com>.|
|00005e10| 58 0a 58 6d 61 69 6c 65 | 72 3d 22 24 7b 6d 61 69 |X.Xmaile|r="${mai|
|00005e20| 6c 65 72 2d 2f 75 73 72 | 2f 6c 69 62 2f 73 65 6e |ler-/usr|/lib/sen|
|00005e30| 64 6d 61 69 6c 7d 22 0a | 58 68 65 61 64 65 72 73 |dmail}".|Xheaders|
|00005e40| 3d 66 61 6c 73 65 0a 58 | 0a 58 23 23 20 20 44 65 |=false.X|.X## De|
|00005e50| 63 6f 64 65 20 74 68 65 | 20 61 72 67 75 6d 65 6e |code the| argumen|
|00005e60| 74 73 2e 0a 58 77 68 69 | 6c 65 20 74 65 73 74 20 |ts..Xwhi|le test |
|00005e70| 24 23 20 2d 67 74 20 30 | 20 3b 20 64 6f 0a 58 20 |$# -gt 0| ; do.X |
|00005e80| 20 20 20 61 72 67 3d 22 | 24 31 22 0a 58 20 20 20 | arg="|$1".X |
|00005e90| 20 73 68 69 66 74 0a 58 | 20 20 20 20 63 61 73 65 | shift.X| case|
|00005ea0| 20 22 24 61 72 67 22 20 | 69 6e 0a 58 20 20 20 20 | "$arg" |in.X |
|00005eb0| 2d 41 7c 2d 41 53 49 53 | 29 0a 58 09 61 73 69 73 |-A|-ASIS|).X.asis|
|00005ec0| 3d 74 72 75 65 0a 58 09 | 3b 3b 0a 58 20 20 20 20 |=true.X.|;;.X |
|00005ed0| 2d 62 7c 2d 62 6f 64 79 | 29 0a 58 09 62 6f 64 79 |-b|-body|).X.body|
|00005ee0| 3d 22 24 62 6f 64 79 0a | 58 24 31 22 0a 58 09 73 |="$body.|X$1".X.s|
|00005ef0| 68 69 66 74 0a 58 09 3b | 3b 0a 58 20 20 20 20 2d |hift.X.;|;.X -|
|00005f00| 63 7c 2d 63 63 29 0a 58 | 09 63 63 3d 22 24 63 63 |c|-cc).X|.cc="$cc|
|00005f10| 2c 20 24 31 22 0a 58 09 | 73 68 69 66 74 0a 58 09 |, $1".X.|shift.X.|
|00005f20| 68 65 61 64 65 72 73 3d | 74 72 75 65 0a 58 09 3b |headers=|true.X.;|
|00005f30| 3b 0a 58 20 20 20 20 2d | 66 7c 2d 66 72 6f 6d 29 |;.X -|f|-from)|
|00005f40| 0a 58 09 66 72 6f 6d 3d | 22 24 31 22 0a 58 09 73 |.X.from=|"$1".X.s|
|00005f50| 68 69 66 74 0a 58 09 68 | 65 61 64 65 72 73 3d 74 |hift.X.h|eaders=t|
|00005f60| 72 75 65 0a 58 09 3b 3b | 0a 58 20 20 20 20 2d 68 |rue.X.;;|.X -h|
|00005f70| 7c 2d 68 65 6c 70 29 0a | 58 09 63 61 74 20 3c 3c ||-help).|X.cat <<|
|00005f80| 45 4f 46 0a 58 55 73 61 | 67 65 3a 20 24 30 20 5b |EOF.XUsa|ge: $0 [|
|00005f90| 66 6c 61 67 73 5d 20 5b | 72 65 63 69 70 69 65 6e |flags] [|recipien|
|00005fa0| 74 73 2e 2e 2e 5d 0a 58 | 09 2d 41 20 2d 41 53 49 |ts...].X|.-A -ASI|
|00005fb0| 53 09 53 65 6e 64 20 74 | 65 78 74 20 41 53 49 53 |S.Send t|ext ASIS|
|00005fc0| 2c 20 69 2e 65 2e 20 68 | 65 61 64 65 72 73 20 61 |, i.e. h|eaders a|
|00005fd0| 72 65 20 70 72 65 73 65 | 6e 74 20 69 6e 20 74 68 |re prese|nt in th|
|00005fe0| 65 20 69 6e 70 75 74 0a | 58 09 2d 62 20 2d 62 6f |e input.|X.-b -bo|
|00005ff0| 64 79 09 53 74 72 69 6e | 67 20 77 68 69 63 68 20 |dy.Strin|g which |
|00006000| 69 73 20 74 6f 20 62 65 | 20 74 68 65 20 62 6f 64 |is to be| the bod|
|00006010| 79 20 6f 66 20 74 68 65 | 20 6d 65 73 73 61 67 65 |y of the| message|
|00006020| 0a 58 09 2d 63 20 2d 63 | 63 09 09 43 61 72 62 6f |.X.-c -c|c..Carbo|
|00006030| 6e 20 43 6f 70 79 20 72 | 65 63 69 70 69 65 6e 74 |n Copy r|ecipient|
|00006040| 73 0a 58 09 2d 66 20 2d | 66 72 6f 6d 09 46 72 6f |s.X.-f -|from.Fro|
|00006050| 6d 20 66 69 65 6c 64 0a | 58 09 2d 68 20 2d 68 65 |m field.|X.-h -he|
|00006060| 6c 70 09 54 68 69 73 20 | 6d 65 73 73 61 67 65 0a |lp.This |message.|
|00006070| 58 09 2d 72 20 2d 72 65 | 63 69 70 09 52 65 63 69 |X.-r -re|cip.Reci|
|00006080| 70 69 65 6e 74 20 28 70 | 61 73 73 65 64 20 6f 6e |pient (p|assed on|
|00006090| 20 63 6f 6d 6d 61 6e 64 | 20 6c 69 6e 65 29 0a 58 | command| line).X|
|000060a0| 09 2d 73 20 2d 73 75 62 | 6a 65 63 74 09 53 65 74 |.-s -sub|ject.Set|
|000060b0| 20 74 68 65 20 73 75 62 | 6a 65 63 74 20 66 69 65 | the sub|ject fie|
|000060c0| 6c 64 0a 58 09 2d 74 20 | 2d 74 6f 09 09 4d 61 69 |ld.X.-t |-to..Mai|
|000060d0| 6e 20 72 65 63 69 70 69 | 65 6e 74 73 0a 58 09 2d |n recipi|ents.X.-|
|000060e0| 2a 09 09 45 52 52 4f 52 | 0a 58 09 2a 09 09 74 72 |*..ERROR|.X.*..tr|
|000060f0| 65 61 74 20 61 73 20 72 | 65 63 69 70 69 65 6e 74 |eat as r|ecipient|
|00006100| 73 0a 58 45 4f 46 0a 58 | 09 65 78 69 74 20 31 0a |s.XEOF.X|.exit 1.|
|00006110| 58 09 3b 3b 0a 58 20 20 | 20 20 2d 72 7c 2d 72 65 |X.;;.X | -r|-re|
|00006120| 63 69 70 29 0a 58 09 72 | 65 63 69 70 3d 22 24 72 |cip).X.r|ecip="$r|
|00006130| 65 63 69 70 20 24 31 22 | 0a 58 09 73 68 69 66 74 |ecip $1"|.X.shift|
|00006140| 0a 58 09 3b 3b 0a 58 20 | 20 20 20 2d 73 7c 2d 73 |.X.;;.X | -s|-s|
|00006150| 75 62 6a 65 63 74 29 0a | 58 09 73 75 62 6a 65 63 |ubject).|X.subjec|
|00006160| 74 3d 22 24 73 75 62 6a | 65 63 74 2c 20 24 31 22 |t="$subj|ect, $1"|
|00006170| 0a 58 09 73 68 69 66 74 | 0a 58 09 68 65 61 64 65 |.X.shift|.X.heade|
|00006180| 72 73 3d 74 72 75 65 0a | 58 09 3b 3b 0a 58 20 20 |rs=true.|X.;;.X |
|00006190| 20 20 2d 74 7c 2d 74 6f | 29 0a 58 09 74 6f 3d 22 | -t|-to|).X.to="|
|000061a0| 24 74 6f 2c 20 24 31 22 | 0a 58 09 73 68 69 66 74 |$to, $1"|.X.shift|
|000061b0| 0a 58 09 68 65 61 64 65 | 72 73 3d 74 72 75 65 0a |.X.heade|rs=true.|
|000061c0| 58 09 3b 3b 0a 58 20 20 | 20 20 2d 2a 29 0a 58 09 |X.;;.X | -*).X.|
|000061d0| 65 63 68 6f 20 24 30 3a | 20 69 6e 76 61 6c 69 64 |echo $0:| invalid|
|000061e0| 20 61 72 67 75 6d 65 6e | 74 20 5c 22 22 24 61 72 | argumen|t \""$ar|
|000061f0| 67 22 5c 22 0a 58 09 65 | 78 69 74 20 31 0a 58 09 |g"\".X.e|xit 1.X.|
|00006200| 3b 3b 0a 58 20 20 20 20 | 2a 29 0a 58 09 74 6f 3d |;;.X |*).X.to=|
|00006210| 22 24 74 6f 2c 20 24 61 | 72 67 22 0a 58 09 3b 3b |"$to, $a|rg".X.;;|
|00006220| 0a 58 20 20 20 20 65 73 | 61 63 0a 58 64 6f 6e 65 |.X es|ac.Xdone|
|00006230| 0a 58 0a 58 23 23 20 20 | 49 66 20 6e 6f 20 72 65 |.X.X## |If no re|
|00006240| 63 69 70 69 65 6e 74 73 | 2c 20 73 65 6e 64 20 74 |cipients|, send t|
|00006250| 6f 20 70 6f 73 74 6d 61 | 73 74 65 72 2e 0a 58 63 |o postma|ster..Xc|
|00006260| 61 73 65 20 22 24 74 6f | 24 63 63 24 72 65 63 69 |ase "$to|$cc$reci|
|00006270| 70 22 20 69 6e 0a 58 27 | 27 29 0a 58 20 20 20 20 |p" in.X'|').X |
|00006280| 72 65 63 69 70 3d 70 6f | 73 74 6d 61 73 74 65 72 |recip=po|stmaster|
|00006290| 0a 58 20 20 20 20 3b 3b | 0a 58 65 73 61 63 0a 58 |.X ;;|.Xesac.X|
|000062a0| 0a 58 23 23 20 20 49 66 | 20 77 65 20 67 6f 74 20 |.X## If| we got |
|000062b0| 6e 6f 20 68 65 61 64 65 | 72 73 20 6f 6e 20 74 68 |no heade|rs on th|
|000062c0| 65 20 63 6f 6d 6d 61 6e | 64 20 6c 69 6e 65 2c 20 |e comman|d line, |
|000062d0| 72 65 61 64 20 74 68 65 | 6d 20 66 72 6f 6d 20 74 |read the|m from t|
|000062e0| 68 65 20 6d 65 73 73 61 | 67 65 2e 0a 58 63 61 73 |he messa|ge..Xcas|
|000062f0| 65 20 24 68 65 61 64 65 | 72 73 20 69 6e 0a 58 66 |e $heade|rs in.Xf|
|00006300| 61 6c 73 65 29 0a 58 20 | 20 20 20 61 73 69 73 3d |alse).X | asis=|
|00006310| 74 72 75 65 0a 58 20 20 | 20 20 3b 3b 0a 58 65 73 |true.X | ;;.Xes|
|00006320| 61 63 0a 58 0a 58 23 23 | 20 20 53 74 72 69 70 20 |ac.X.X##| Strip |
|00006330| 6f 66 66 20 74 68 65 20 | 73 70 75 72 69 6f 75 73 |off the |spurious|
|00006340| 20 6c 65 61 64 69 6e 67 | 20 22 2c 20 22 20 69 6e | leading| ", " in|
|00006350| 20 72 65 70 65 61 74 61 | 62 6c 65 20 69 74 65 6d | repeata|ble item|
|00006360| 73 0a 58 63 61 73 65 20 | 22 24 74 6f 22 20 69 6e |s.Xcase |"$to" in|
|00006370| 0a 58 27 2c 20 27 2a 29 | 0a 58 20 20 20 20 74 6f |.X', '*)|.X to|
|00006380| 3d 60 65 78 70 72 20 22 | 24 74 6f 22 20 3a 20 22 |=`expr "|$to" : "|
|00006390| 2c 20 5c 28 2e 2a 5c 29 | 60 0a 58 20 20 20 20 3b |, \(.*\)|`.X ;|
|000063a0| 3b 0a 58 65 73 61 63 0a | 58 63 61 73 65 20 22 24 |;.Xesac.|Xcase "$|
|000063b0| 63 63 22 20 20 69 6e 0a | 58 27 2c 20 27 2a 29 0a |cc" in.|X', '*).|
|000063c0| 58 20 20 20 20 63 63 3d | 60 65 78 70 72 20 22 24 |X cc=|`expr "$|
|000063d0| 63 63 22 20 3a 20 22 2c | 20 5c 28 2e 2a 5c 29 60 |cc" : ",| \(.*\)`|
|000063e0| 0a 58 20 20 20 20 3b 3b | 0a 58 65 73 61 63 0a 58 |.X ;;|.Xesac.X|
|000063f0| 63 61 73 65 20 22 24 73 | 75 62 6a 65 63 74 22 09 |case "$s|ubject".|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.