home *** CD-ROM | disk | FTP | other *** search
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).
Confidence | Program | Detection | Match Type | Support
|
---|
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, 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| 32 3a 20 20 4e 65 77 73 | 2f 6d 61 69 6c 20 67 61 |2: 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 32 2f 30 34 | 0a 4e 65 77 73 67 72 6f |art02/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 66 | 30 62 35 33 66 36 63 20 |nefru: f|0b53f6c |
|00000090| 36 34 30 61 64 39 61 32 | 20 62 62 36 63 61 61 37 |640ad9a2| bb6caa7|
|000000a0| 61 20 31 30 66 39 62 33 | 65 66 0a 0a 53 75 62 6d |a 10f9b3|ef..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 32 0a | 41 72 63 68 69 76 65 2d |ssue 52.|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 32 0a 0a 23 | 21 20 2f 62 69 6e 2f 73 |art02..#|! /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 6d | 61 69 6c 32 6e 65 77 73 |ents: m|ail2news|
|00000270| 2e 63 20 6d 6b 6d 61 69 | 6c 70 6f 73 74 2e 73 68 |.c mkmai|lpost.sh|
|00000280| 20 6e 65 77 73 32 6d 61 | 69 6c 2e 63 20 72 65 67 | news2ma|il.c reg|
|00000290| 65 78 2e 33 20 72 66 63 | 38 32 32 2e 63 0a 23 20 |ex.3 rfc|822.c.# |
|000002a0| 57 72 61 70 70 65 64 20 | 62 79 20 72 73 61 6c 7a |Wrapped |by rsalz|
|000002b0| 40 6c 69 74 63 68 69 2e | 62 62 6e 2e 63 6f 6d 20 |@litchi.|bbn.com |
|000002c0| 6f 6e 20 46 72 69 20 4d | 61 72 20 31 35 20 31 36 |on Fri M|ar 15 16|
|000002d0| 3a 34 32 3a 32 36 20 31 | 39 39 31 0a 50 41 54 48 |:42:26 1|991.PATH|
|000002e0| 3d 2f 62 69 6e 3a 2f 75 | 73 72 2f 62 69 6e 3a 2f |=/bin:/u|sr/bin:/|
|000002f0| 75 73 72 2f 75 63 62 20 | 3b 20 65 78 70 6f 72 74 |usr/ucb |; export|
|00000300| 20 50 41 54 48 0a 65 63 | 68 6f 20 49 66 20 74 68 | PATH.ec|ho If th|
|00000310| 69 73 20 61 72 63 68 69 | 76 65 20 69 73 20 63 6f |is archi|ve is co|
|00000320| 6d 70 6c 65 74 65 2c 20 | 79 6f 75 20 77 69 6c 6c |mplete, |you will|
|00000330| 20 73 65 65 20 74 68 65 | 20 66 6f 6c 6c 6f 77 69 | see the| followi|
|00000340| 6e 67 20 6d 65 73 73 61 | 67 65 3a 0a 65 63 68 6f |ng messa|ge:.echo|
|00000350| 20 27 20 20 20 20 20 20 | 20 20 20 20 22 73 68 61 | ' | "sha|
|00000360| 72 3a 20 45 6e 64 20 6f | 66 20 61 72 63 68 69 76 |r: End o|f archiv|
|00000370| 65 20 32 20 28 6f 66 20 | 34 29 2e 22 27 0a 69 66 |e 2 (of |4)."'.if|
|00000380| 20 74 65 73 74 20 2d 66 | 20 27 6d 61 69 6c 32 6e | test -f| 'mail2n|
|00000390| 65 77 73 2e 63 27 20 2d | 61 20 22 24 7b 31 7d 22 |ews.c' -|a "${1}"|
|000003a0| 20 21 3d 20 22 2d 63 22 | 20 3b 20 74 68 65 6e 20 | != "-c"| ; then |
|000003b0| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 57 69 |. echo |shar: Wi|
|000003c0| 6c 6c 20 6e 6f 74 20 63 | 6c 6f 62 62 65 72 20 65 |ll not c|lobber e|
|000003d0| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 5c 22 27 |xisting |file \"'|
|000003e0| 6d 61 69 6c 32 6e 65 77 | 73 2e 63 27 5c 22 0a 65 |mail2new|s.c'\".e|
|000003f0| 6c 73 65 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |lse. ec|ho shar:|
|00000400| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 6d | Extract|ing \"'m|
|00000410| 61 69 6c 32 6e 65 77 73 | 2e 63 27 5c 22 20 5c 28 |ail2news|.c'\" \(|
|00000420| 31 34 31 31 33 20 63 68 | 61 72 61 63 74 65 72 73 |14113 ch|aracters|
|00000430| 5c 29 0a 20 20 73 65 64 | 20 22 73 2f 5e 58 2f 2f |\). sed| "s/^X//|
|00000440| 22 20 3e 27 6d 61 69 6c | 32 6e 65 77 73 2e 63 27 |" >'mail|2news.c'|
|00000450| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00000460| 0a 58 2f 2a 0a 58 2a 2a | 20 20 4d 41 49 4c 32 4e |.X/*.X**| MAIL2N|
|00000470| 45 57 53 0a 58 2a 2a 20 | 20 47 61 74 65 77 61 79 |EWS.X** | Gateway|
|00000480| 20 6d 61 69 6c 20 6d 65 | 73 73 61 67 65 73 20 69 | mail me|ssages i|
|00000490| 6e 74 6f 20 6e 65 74 6e | 65 77 73 2e 20 20 55 73 |nto netn|ews. Us|
|000004a0| 61 67 65 3a 0a 58 2a 2a | 09 6d 61 69 6c 32 6e 65 |age:.X**|.mail2ne|
|000004b0| 77 73 20 5b 69 6e 65 77 | 73 20 66 6c 61 67 73 5d |ws [inew|s flags]|
|000004c0| 20 2d 6f 20 4f 72 67 61 | 6e 69 7a 61 74 69 6f 6e | -o Orga|nization|
|000004d0| 0a 58 2a 2a 20 20 49 6e | 20 6f 72 64 65 72 20 74 |.X** In| order t|
|000004e0| 6f 20 64 6f 20 74 68 69 | 73 2c 20 74 68 65 72 65 |o do thi|s, there|
|000004f0| 20 61 72 65 20 61 20 6e | 75 6d 62 65 72 20 6f 66 | are a n|umber of|
|00000500| 20 69 6e 74 65 72 65 73 | 74 69 6e 67 20 74 72 61 | interes|ting tra|
|00000510| 6e 73 66 6f 72 6d 61 74 | 69 6f 6e 73 0a 58 2a 2a |nsformat|ions.X**|
|00000520| 20 20 74 68 61 74 20 6e | 65 65 64 20 74 6f 20 62 | that n|eed to b|
|00000530| 65 20 6d 61 64 65 20 6f | 6e 20 74 68 65 20 68 65 |e made o|n the he|
|00000540| 61 64 65 72 73 2e 2e 2e | 0a 58 2a 2a 0a 58 2a 2a |aders...|.X**.X**|
|00000550| 20 20 54 68 69 73 20 70 | 72 6f 67 72 61 6d 20 69 | This p|rogram i|
|00000560| 73 20 64 65 73 63 65 6e | 64 65 64 20 66 72 6f 6d |s descen|ded from|
|00000570| 3a 20 20 40 28 23 29 72 | 65 63 6e 65 77 73 2e 63 |: @(#)r|ecnews.c|
|00000580| 20 32 2e 31 30 20 34 2f | 31 36 2f 38 35 2e 0a 58 | 2.10 4/|16/85..X|
|00000590| 2a 2f 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 67 61 |*/.X#inc|lude "ga|
|000005a0| 74 65 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |te.h".X#|include |
|000005b0| 3c 73 69 67 6e 61 6c 2e | 68 3e 0a 58 23 69 6e 63 |<signal.|h>.X#inc|
|000005c0| 6c 75 64 65 20 3c 73 79 | 73 2f 66 69 6c 65 2e 68 |lude <sy|s/file.h|
|000005d0| 3e 0a 58 23 69 66 64 65 | 66 09 52 43 53 49 44 0a |>.X#ifde|f.RCSID.|
|000005e0| 58 73 74 61 74 69 63 20 | 63 68 61 72 20 52 43 53 |Xstatic |char RCS|
|000005f0| 5b 5d 20 3d 0a 58 09 22 | 24 48 65 61 64 65 72 3a |[] =.X."|$Header:|
|00000600| 20 2f 6e 66 73 2f 70 61 | 70 61 79 61 2f 75 32 2f | /nfs/pa|paya/u2/|
|00000610| 72 73 61 6c 7a 2f 73 72 | 63 2f 6e 65 77 73 67 61 |rsalz/sr|c/newsga|
|00000620| 74 65 2f 73 72 63 2f 52 | 43 53 2f 6d 61 69 6c 32 |te/src/R|CS/mail2|
|00000630| 6e 65 77 73 2e 63 2c 76 | 20 31 2e 31 33 20 39 31 |news.c,v| 1.13 91|
|00000640| 2f 30 33 2f 31 33 20 31 | 35 3a 35 37 3a 33 32 20 |/03/13 1|5:57:32 |
|00000650| 72 73 61 6c 7a 20 45 78 | 70 20 24 22 3b 0a 58 23 |rsalz Ex|p $";.X#|
|00000660| 65 6e 64 69 66 09 2f 2a | 20 52 43 53 49 44 20 2a |endif./*| RCSID *|
|00000670| 2f 0a 58 0a 58 0a 58 23 | 64 65 66 69 6e 65 09 57 |/.X.X.X#|define.W|
|00000680| 41 49 54 5f 43 4f 52 45 | 44 28 73 29 09 09 28 73 |AIT_CORE|D(s)..(s|
|00000690| 20 26 20 30 32 30 30 29 | 0a 58 23 64 65 66 69 6e | & 0200)|.X#defin|
|000006a0| 65 09 57 41 49 54 5f 45 | 58 49 54 53 49 47 28 73 |e.WAIT_E|XITSIG(s|
|000006b0| 29 09 09 28 73 20 26 20 | 30 31 37 37 29 0a 58 23 |)..(s & |0177).X#|
|000006c0| 64 65 66 69 6e 65 09 57 | 41 49 54 5f 45 58 49 54 |define.W|AIT_EXIT|
|000006d0| 43 4f 44 45 28 73 29 09 | 28 28 73 20 3e 3e 20 38 |CODE(s).|((s >> 8|
|000006e0| 29 20 26 20 30 33 37 37 | 29 0a 58 0a 58 2f 2a 20 |) & 0377|).X.X/* |
|000006f0| 46 6f 72 20 74 68 6f 73 | 65 20 77 68 6f 20 64 6f |For thos|e who do|
|00000700| 6e 27 74 20 68 61 76 65 | 20 74 68 69 73 20 69 6e |n't have| this in|
|00000710| 20 3c 73 79 73 2f 66 69 | 6c 65 2e 68 3e 2e 20 2a | <sys/fi|le.h>. *|
|00000720| 2f 0a 58 23 69 66 6e 64 | 65 66 09 52 5f 4f 4b 0a |/.X#ifnd|ef.R_OK.|
|00000730| 58 23 64 65 66 69 6e 65 | 09 52 5f 4f 4b 09 09 09 |X#define|.R_OK...|
|00000740| 34 0a 58 23 65 6e 64 69 | 66 09 2f 2a 20 52 5f 4f |4.X#endi|f./* R_O|
|00000750| 4b 20 2a 2f 0a 58 0a 58 | 2f 2a 20 53 74 75 66 66 |K */.X.X|/* Stuff|
|00000760| 20 66 6f 72 20 70 69 70 | 65 28 32 29 2e 20 2a 2f | for pip|e(2). */|
|00000770| 0a 58 23 64 65 66 69 6e | 65 20 53 54 44 49 4e 09 |.X#defin|e STDIN.|
|00000780| 09 09 30 0a 58 23 64 65 | 66 69 6e 65 09 50 49 50 |..0.X#de|fine.PIP|
|00000790| 45 5f 52 45 41 44 45 52 | 09 09 30 0a 58 23 64 65 |E_READER|..0.X#de|
|000007a0| 66 69 6e 65 09 50 49 50 | 45 5f 57 52 49 54 45 52 |fine.PIP|E_WRITER|
|000007b0| 09 09 31 0a 58 0a 58 0a | 58 2f 2a 20 47 6c 6f 62 |..1.X.X.|X/* Glob|
|000007c0| 61 6c 20 76 61 72 69 61 | 62 6c 65 73 2e 20 2a 2f |al varia|bles. */|
|000007d0| 0a 58 53 54 41 54 49 43 | 20 69 6e 74 09 44 65 62 |.XSTATIC| int.Deb|
|000007e0| 75 67 67 69 6e 67 3b 0a | 58 53 54 41 54 49 43 20 |ugging;.|XSTATIC |
|000007f0| 69 6e 74 09 43 68 69 6c | 64 50 69 64 20 3d 20 2d |int.Chil|dPid = -|
|00000800| 31 3b 0a 58 63 68 61 72 | 09 09 2a 50 6e 61 6d 65 |1;.Xchar|..*Pname|
|00000810| 3b 0a 58 0a 58 0c 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |;.X.X..X|.X/*.X**|
|00000820| 20 20 47 6f 20 64 6f 77 | 6e 20 74 6f 20 74 68 65 | Go dow|n to the|
|00000830| 20 61 62 73 6f 6c 75 74 | 65 20 6d 69 6e 69 6d 75 | absolut|e minimu|
|00000840| 6d 2e 0a 58 2a 2f 0a 58 | 53 54 41 54 49 43 20 76 |m..X*/.X|STATIC v|
|00000850| 6f 69 64 0a 58 54 72 69 | 6d 45 6e 76 69 72 6f 6e |oid.XTri|mEnviron|
|00000860| 6d 65 6e 74 28 29 0a 58 | 7b 0a 58 20 20 20 20 65 |ment().X|{.X e|
|00000870| 6e 76 69 72 6f 6e 20 3d | 20 4e 55 4c 4c 3b 0a 58 |nviron =| NULL;.X|
|00000880| 7d 0a 58 0a 58 0a 58 2f | 2a 0a 58 2a 2a 20 20 51 |}.X.X.X/|*.X** Q|
|00000890| 75 69 63 6b 69 65 20 68 | 61 63 6b 20 74 6f 20 73 |uickie h|ack to s|
|000008a0| 65 65 20 6f 66 20 61 20 | 6d 61 69 6c 20 6d 65 73 |ee of a |mail mes|
|000008b0| 73 61 67 65 20 69 73 20 | 61 20 22 70 6c 65 61 73 |sage is |a "pleas|
|000008c0| 65 20 64 72 6f 70 20 6d | 65 22 20 72 65 71 75 65 |e drop m|e" reque|
|000008d0| 73 74 2e 0a 58 2a 2a 20 | 20 52 65 61 64 73 20 74 |st..X** | Reads t|
|000008e0| 68 65 20 6d 65 73 73 61 | 67 65 20 6f 6e 20 74 68 |he messa|ge on th|
|000008f0| 65 20 69 6e 70 75 74 20 | 66 69 6c 65 2c 20 61 6e |e input |file, an|
|00000900| 64 20 72 65 74 75 72 6e | 73 20 4e 55 4c 4c 20 69 |d return|s NULL i|
|00000910| 66 20 69 74 20 73 68 6f | 75 6c 64 0a 58 2a 2a 20 |f it sho|uld.X** |
|00000920| 20 62 65 20 69 67 6e 6f | 72 65 64 2c 20 6f 72 20 | be igno|red, or |
|00000930| 61 20 46 49 4c 45 20 68 | 61 6e 64 6c 65 20 69 66 |a FILE h|andle if|
|00000940| 20 77 65 20 73 68 6f 75 | 6c 64 20 70 72 6f 63 65 | we shou|ld proce|
|00000950| 73 73 20 69 74 2e 0a 58 | 2a 2a 0a 58 2a 2a 20 20 |ss it..X|**.X** |
|00000960| 54 68 65 20 6f 72 69 67 | 69 6e 61 6c 20 73 74 61 |The orig|inal sta|
|00000970| 6e 64 2d 61 6c 6f 6e 65 | 20 70 72 6f 67 72 61 6d |nd-alone| program|
|00000980| 20 77 72 69 74 74 65 6e | 20 77 61 73 20 52 75 73 | written| was Rus|
|00000990| 73 20 4e 65 6c 73 6f 6e | 2c 0a 58 2a 2a 20 20 3c |s Nelson|,.X** <|
|000009a0| 6e 65 6c 73 6f 6e 40 63 | 6c 75 74 78 2e 63 6c 61 |nelson@c|lutx.cla|
|000009b0| 72 6b 73 6f 6e 2e 65 64 | 75 3e 2e 20 20 49 20 68 |rkson.ed|u>. I h|
|000009c0| 61 63 6b 65 64 20 6f 6e | 20 69 74 2c 20 61 6e 64 |acked on| it, and|
|000009d0| 20 6d 61 64 65 20 69 74 | 20 69 6e 74 6f 20 61 0a | made it| into a.|
|000009e0| 58 2a 2a 20 20 73 75 62 | 72 6f 75 74 69 6e 65 2e |X** sub|routine.|
|000009f0| 20 20 50 65 72 68 61 70 | 73 20 61 20 62 65 74 74 | Perhap|s a bett|
|00000a00| 65 72 20 77 61 79 20 74 | 6f 20 74 65 73 74 20 69 |er way t|o test i|
|00000a10| 73 20 74 6f 20 6d 61 6b | 65 20 74 68 65 20 74 65 |s to mak|e the te|
|00000a20| 73 74 20 6c 65 73 73 0a | 58 2a 2a 20 20 63 6f 6e |st less.|X** con|
|00000a30| 73 65 72 76 61 74 69 76 | 65 2c 20 61 6e 64 20 73 |servativ|e, and s|
|00000a40| 65 65 20 77 68 61 74 20 | 22 72 65 61 6c 22 20 61 |ee what |"real" a|
|00000a50| 72 74 69 63 6c 65 73 20 | 67 65 74 20 63 61 75 67 |rticles |get caug|
|00000a60| 68 74 2c 20 61 6e 64 20 | 6d 61 6b 65 0a 58 2a 2a |ht, and |make.X**|
|00000a70| 20 20 61 64 6a 75 73 74 | 6d 65 6e 74 73 20 74 68 | adjust|ments th|
|00000a80| 65 6e 3f 20 20 43 6f 6d | 6d 65 6e 74 73 20 73 6f |en? Com|ments so|
|00000a90| 6c 69 63 69 74 65 64 2e | 0a 58 2a 2f 0a 58 53 54 |licited.|.X*/.XST|
|00000aa0| 41 54 49 43 20 46 49 4c | 45 20 2a 0a 58 49 73 53 |ATIC FIL|E *.XIsS|
|00000ab0| 75 62 52 65 71 75 65 73 | 74 28 46 29 0a 58 20 20 |ubReques|t(F).X |
|00000ac0| 20 20 72 65 67 69 73 74 | 65 72 20 46 49 4c 45 09 | regist|er FILE.|
|00000ad0| 2a 46 3b 0a 58 7b 0a 58 | 20 20 20 20 72 65 67 69 |*F;.X{.X| regi|
|00000ae0| 73 74 65 72 20 46 49 4c | 45 09 2a 4f 75 74 3b 0a |ster FIL|E.*Out;.|
|00000af0| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00000b00| 61 72 09 2a 70 3b 0a 58 | 20 20 20 20 72 65 67 69 |ar.*p;.X| regi|
|00000b10| 73 74 65 72 20 69 6e 74 | 09 63 3b 0a 58 20 20 20 |ster int|.c;.X |
|00000b20| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 09 64 72 | registe|r int.dr|
|00000b30| 6f 70 5f 6f 72 5f 61 64 | 64 3b 0a 58 20 20 20 20 |op_or_ad|d;.X |
|00000b40| 72 65 67 69 73 74 65 72 | 20 69 6e 74 09 66 72 6f |register| int.fro|
|00000b50| 6d 5f 6f 72 5f 74 6f 3b | 0a 58 20 20 20 20 72 65 |m_or_to;|.X re|
|00000b60| 67 69 73 74 65 72 20 69 | 6e 74 09 6d 61 69 6c 5f |gister i|nt.mail_|
|00000b70| 77 6f 72 64 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |word;.X | regis|
|00000b80| 74 65 72 20 69 6e 74 09 | 63 6f 75 6e 74 3b 0a 58 |ter int.|count;.X|
|00000b90| 20 20 20 20 63 68 61 72 | 09 09 77 6f 72 64 5b 53 | char|..word[S|
|00000ba0| 4d 5f 53 49 5a 45 5d 3b | 0a 58 20 20 20 20 63 68 |M_SIZE];|.X ch|
|00000bb0| 61 72 09 09 62 75 66 66 | 5b 53 4d 5f 53 49 5a 45 |ar..buff|[SM_SIZE|
|00000bc0| 5d 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 43 72 65 |];.X.X | /* Cre|
|00000bd0| 61 74 65 20 74 65 6d 70 | 20 66 69 6c 65 3b 20 69 |ate temp| file; i|
|00000be0| 66 20 77 65 20 63 61 6e | 27 74 20 6c 65 74 20 74 |f we can|'t let t|
|00000bf0| 68 65 20 6d 65 73 73 61 | 67 65 20 74 68 72 6f 75 |he messa|ge throu|
|00000c00| 67 68 2e 20 2a 2f 0a 58 | 20 20 20 20 69 66 20 28 |gh. */.X| if (|
|00000c10| 28 4f 75 74 20 3d 20 66 | 6f 70 65 6e 28 6d 6b 74 |(Out = f|open(mkt|
|00000c20| 65 6d 70 28 73 74 72 63 | 70 79 28 62 75 66 66 2c |emp(strc|py(buff,|
|00000c30| 20 54 45 4d 50 46 49 4c | 45 29 29 2c 20 22 77 22 | TEMPFIL|E)), "w"|
|00000c40| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 72 65 |)) == NU|LL).X.re|
|00000c50| 74 75 72 6e 20 46 3b 0a | 58 0a 58 20 20 20 20 2f |turn F;.|X.X /|
|00000c60| 2a 20 43 6c 65 61 72 20 | 63 6f 75 6e 74 73 2e 20 |* Clear |counts. |
|00000c70| 2a 2f 0a 58 20 20 20 20 | 64 72 6f 70 5f 6f 72 5f |*/.X |drop_or_|
|00000c80| 61 64 64 20 3d 20 30 3b | 0a 58 20 20 20 20 66 72 |add = 0;|.X fr|
|00000c90| 6f 6d 5f 6f 72 5f 74 6f | 20 3d 20 30 3b 0a 58 20 |om_or_to| = 0;.X |
|00000ca0| 20 20 20 6d 61 69 6c 5f | 77 6f 72 64 20 3d 20 30 | mail_|word = 0|
|00000cb0| 3b 0a 58 20 20 20 20 63 | 6f 75 6e 74 20 3d 20 30 |;.X c|ount = 0|
|00000cc0| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 52 65 61 64 |;.X.X | /* Read|
|00000cd0| 20 69 6e 70 75 74 20 61 | 20 77 6f 72 64 20 61 74 | input a| word at|
|00000ce0| 20 61 20 74 69 6d 65 2e | 20 2a 2f 0a 58 20 20 20 | a time.| */.X |
|00000cf0| 20 66 6f 72 20 28 70 20 | 3d 20 77 6f 72 64 3b 20 | for (p |= word; |
|00000d00| 28 63 20 3d 20 67 65 74 | 63 28 46 29 29 20 21 3d |(c = get|c(F)) !=|
|00000d10| 20 45 4f 46 3b 20 29 20 | 7b 0a 58 09 28 76 6f 69 | EOF; ) |{.X.(voi|
|00000d20| 64 29 70 75 74 63 28 63 | 2c 20 4f 75 74 29 3b 0a |d)putc(c|, Out);.|
|00000d30| 58 09 69 66 20 28 21 69 | 73 61 6c 70 68 61 28 63 |X.if (!i|salpha(c|
|00000d40| 29 29 20 7b 0a 58 09 20 | 20 20 20 2a 70 20 3d 20 |)) {.X. | *p = |
|00000d50| 27 5c 30 27 3b 0a 58 09 | 20 20 20 20 69 66 20 28 |'\0';.X.| if (|
|00000d60| 70 20 3e 20 77 6f 72 64 | 29 0a 58 09 09 63 6f 75 |p > word|).X..cou|
|00000d70| 6e 74 2b 2b 3b 0a 58 09 | 20 20 20 20 70 20 3d 20 |nt++;.X.| p = |
|00000d80| 77 6f 72 64 3b 0a 58 0a | 58 09 20 20 20 20 69 66 |word;.X.|X. if|
|00000d90| 20 28 45 51 28 77 6f 72 | 64 2c 20 22 72 65 6d 6f | (EQ(wor|d, "remo|
|00000da0| 76 65 22 29 20 7c 7c 20 | 45 51 28 77 6f 72 64 2c |ve") || |EQ(word,|
|00000db0| 20 22 64 72 6f 70 22 29 | 20 7c 7c 20 45 51 28 77 | "drop")| || EQ(w|
|00000dc0| 6f 72 64 2c 20 22 6f 66 | 66 22 29 0a 58 09 20 20 |ord, "of|f").X. |
|00000dd0| 20 20 20 7c 7c 20 45 51 | 28 77 6f 72 64 2c 20 22 | || EQ|(word, "|
|00000de0| 73 75 62 73 63 72 69 62 | 65 22 29 20 7c 7c 20 45 |subscrib|e") || E|
|00000df0| 51 28 77 6f 72 64 2c 20 | 22 67 65 74 22 29 20 7c |Q(word, |"get") ||
|00000e00| 7c 20 45 51 28 77 6f 72 | 64 2c 20 22 61 64 64 22 || EQ(wor|d, "add"|
|00000e10| 29 29 0a 58 09 09 64 72 | 6f 70 5f 6f 72 5f 61 64 |)).X..dr|op_or_ad|
|00000e20| 64 2b 2b 3b 0a 58 09 20 | 20 20 20 65 6c 73 65 20 |d++;.X. | else |
|00000e30| 69 66 20 28 45 51 28 77 | 6f 72 64 2c 20 22 66 72 |if (EQ(w|ord, "fr|
|00000e40| 6f 6d 22 29 20 7c 7c 20 | 45 51 28 77 6f 72 64 2c |om") || |EQ(word,|
|00000e50| 20 22 74 6f 22 29 29 0a | 58 09 09 66 72 6f 6d 5f | "to")).|X..from_|
|00000e60| 6f 72 5f 74 6f 2b 2b 3b | 0a 58 09 20 20 20 20 65 |or_to++;|.X. e|
|00000e70| 6c 73 65 20 69 66 20 28 | 45 51 28 77 6f 72 64 2c |lse if (|EQ(word,|
|00000e80| 20 22 6d 61 69 6c 22 29 | 20 7c 7c 20 45 51 28 77 | "mail")| || EQ(w|
|00000e90| 6f 72 64 2c 20 22 6d 61 | 69 6c 69 6e 67 22 29 0a |ord, "ma|iling").|
|00000ea0| 58 09 09 20 20 7c 7c 20 | 45 51 28 77 6f 72 64 2c |X.. || |EQ(word,|
|00000eb0| 20 22 6c 69 73 74 22 29 | 20 7c 7c 20 45 51 28 77 | "list")| || EQ(w|
|00000ec0| 6f 72 64 2c 20 22 64 6c | 22 29 29 0a 58 09 09 6d |ord, "dl|")).X..m|
|00000ed0| 61 69 6c 5f 77 6f 72 64 | 2b 2b 3b 0a 58 09 7d 0a |ail_word|++;.X.}.|
|00000ee0| 58 09 65 6c 73 65 20 69 | 66 20 28 70 20 3c 20 26 |X.else i|f (p < &|
|00000ef0| 77 6f 72 64 5b 73 69 7a | 65 6f 66 20 77 6f 72 64 |word[siz|eof word|
|00000f00| 20 2d 20 31 5d 29 0a 58 | 09 20 20 20 20 2a 70 2b | - 1]).X|. *p+|
|00000f10| 2b 20 3d 20 69 73 75 70 | 70 65 72 28 63 29 20 3f |+ = isup|per(c) ?|
|00000f20| 20 74 6f 6c 6f 77 65 72 | 28 63 29 20 3a 20 63 3b | tolower|(c) : c;|
|00000f30| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 28 |.X }.|X.X (|
|00000f40| 76 6f 69 64 29 66 63 6c | 6f 73 65 28 46 29 3b 0a |void)fcl|ose(F);.|
|00000f50| 58 20 20 20 20 28 76 6f | 69 64 29 66 63 6c 6f 73 |X (vo|id)fclos|
|00000f60| 65 28 4f 75 74 29 3b 0a | 58 0a 58 20 20 20 20 2f |e(Out);.|X.X /|
|00000f70| 2a 20 55 73 65 20 66 61 | 6e 63 79 2d 73 68 6d 61 |* Use fa|ncy-shma|
|00000f80| 6e 63 79 20 41 49 20 74 | 65 63 68 6e 69 71 75 65 |ncy AI t|echnique|
|00000f90| 73 20 74 6f 20 64 65 74 | 65 72 6d 69 6e 65 20 77 |s to det|ermine w|
|00000fa0| 68 61 74 20 74 68 65 20 | 6d 65 73 73 61 67 65 20 |hat the |message |
|00000fb0| 69 73 2e 20 2a 2f 0a 58 | 20 20 20 20 63 20 3d 20 |is. */.X| c = |
|00000fc0| 63 6f 75 6e 74 20 3c 20 | 32 35 20 26 26 20 64 72 |count < |25 && dr|
|00000fd0| 6f 70 5f 6f 72 5f 61 64 | 64 20 26 26 20 66 72 6f |op_or_ad|d && fro|
|00000fe0| 6d 5f 6f 72 5f 74 6f 20 | 26 26 20 6d 61 69 6c 5f |m_or_to |&& mail_|
|00000ff0| 77 6f 72 64 3b 0a 58 20 | 20 20 20 46 20 3d 20 63 |word;.X | F = c|
|00001000| 20 3f 20 4e 55 4c 4c 20 | 3a 20 66 6f 70 65 6e 28 | ? NULL |: fopen(|
|00001010| 62 75 66 66 2c 20 22 72 | 22 29 3b 0a 58 0a 58 20 |buff, "r|");.X.X |
|00001020| 20 20 20 28 76 6f 69 64 | 29 75 6e 6c 69 6e 6b 28 | (void|)unlink(|
|00001030| 62 75 66 66 29 3b 0a 58 | 20 20 20 20 72 65 74 75 |buff);.X| retu|
|00001040| 72 6e 20 46 3b 0a 58 7d | 0a 58 0c 0a 58 0a 58 2f |rn F;.X}|.X..X.X/|
|00001050| 2a 0a 58 2a 2a 20 20 4d | 6f 64 69 66 79 20 74 68 |*.X** M|odify th|
|00001060| 65 20 4e 65 77 73 67 72 | 6f 75 70 73 3a 20 61 73 |e Newsgr|oups: as|
|00001070| 20 64 69 72 65 63 74 65 | 64 20 62 79 20 74 68 65 | directe|d by the|
|00001080| 20 63 6f 6d 6d 61 6e 64 | 20 73 74 72 69 6e 67 2e | command| string.|
|00001090| 0a 58 2a 2f 0a 58 53 54 | 41 54 49 43 20 76 6f 69 |.X*/.XST|ATIC voi|
|000010a0| 64 0a 58 44 6f 43 6f 6d | 6d 61 6e 64 28 68 70 2c |d.XDoCom|mand(hp,|
|000010b0| 20 63 6f 6d 6d 61 6e 64 | 2c 20 67 72 6f 75 70 29 | command|, group)|
|000010c0| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 48 |.X re|gister H|
|000010d0| 42 55 46 09 09 2a 68 70 | 3b 0a 58 20 20 20 20 63 |BUF..*hp|;.X c|
|000010e0| 68 61 72 09 09 09 2a 63 | 6f 6d 6d 61 6e 64 3b 0a |har...*c|ommand;.|
|000010f0| 58 20 20 20 20 63 68 61 | 72 09 09 09 2a 67 72 6f |X cha|r...*gro|
|00001100| 75 70 3b 0a 58 7b 0a 58 | 20 20 20 20 72 65 67 69 |up;.X{.X| regi|
|00001110| 73 74 65 72 20 63 68 61 | 72 09 09 2a 70 3b 0a 58 |ster cha|r..*p;.X|
|00001120| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 | regi|ster int|
|00001130| 09 09 69 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 |..i;.X | regist|
|00001140| 65 72 20 69 6e 74 09 09 | 6e 3b 0a 58 20 20 20 20 |er int..|n;.X |
|00001150| 72 65 67 69 73 74 65 72 | 20 69 6e 74 09 09 6e 6e |register| int..nn|
|00001160| 67 3b 0a 58 20 20 20 20 | 63 68 61 72 09 09 09 2a |g;.X |char...*|
|00001170| 2a 74 6f 6b 65 6e 73 3b | 0a 58 20 20 20 20 63 68 |*tokens;|.X ch|
|00001180| 61 72 09 09 09 2a 2a 6e | 67 3b 0a 58 20 20 20 20 |ar...**n|g;.X |
|00001190| 63 68 61 72 09 09 09 62 | 75 66 66 5b 42 55 46 53 |char...b|uff[BUFS|
|000011a0| 49 5a 5d 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |IZ];.X.X| if (|
|000011b0| 28 6e 20 3d 20 53 70 6c | 69 74 28 63 6f 6d 6d 61 |(n = Spl|it(comma|
|000011c0| 6e 64 2c 20 26 74 6f 6b | 65 6e 73 2c 20 27 5c 30 |nd, &tok|ens, '\0|
|000011d0| 27 29 29 20 3d 3d 20 30 | 29 20 7b 0a 58 09 53 70 |')) == 0|) {.X.Sp|
|000011e0| 6c 69 74 46 72 65 65 28 | 26 74 6f 6b 65 6e 73 29 |litFree(|&tokens)|
|000011f0| 3b 0a 58 09 72 65 74 75 | 72 6e 3b 0a 58 20 20 20 |;.X.retu|rn;.X |
|00001200| 20 7d 0a 58 0a 58 20 20 | 20 20 6e 6e 67 20 3d 20 | }.X.X | nng = |
|00001210| 53 70 6c 69 74 28 68 70 | 2d 3e 6e 62 75 66 2c 20 |Split(hp|->nbuf, |
|00001220| 26 6e 67 2c 20 4e 47 44 | 45 4c 49 4d 29 3b 0a 58 |&ng, NGD|ELIM);.X|
|00001230| 20 20 20 20 70 20 3d 20 | 68 70 2d 3e 6e 62 75 66 | p = |hp->nbuf|
|00001240| 3b 0a 58 20 20 20 20 73 | 77 69 74 63 68 20 28 74 |;.X s|witch (t|
|00001250| 6f 6b 65 6e 73 5b 30 5d | 5b 30 5d 29 20 7b 0a 58 |okens[0]|[0]) {.X|
|00001260| 20 20 20 20 63 61 73 65 | 20 27 61 27 3a 09 09 09 | case| 'a':...|
|00001270| 09 2f 2a 20 41 64 64 09 | 09 2a 2f 0a 58 09 69 66 |./* Add.|.*/.X.if|
|00001280| 20 28 6e 20 3e 20 31 29 | 0a 58 09 20 20 20 20 66 | (n > 1)|.X. f|
|00001290| 6f 72 20 28 70 20 2b 3d | 20 73 74 72 6c 65 6e 28 |or (p +=| strlen(|
|000012a0| 70 29 2c 20 69 20 3d 20 | 31 3b 20 69 20 3c 20 6e |p), i = |1; i < n|
|000012b0| 3b 20 69 2b 2b 29 20 7b | 0a 58 09 09 2a 70 2b 2b |; i++) {|.X..*p++|
|000012c0| 20 3d 20 4e 47 44 45 4c | 49 4d 3b 0a 58 09 09 70 | = NGDEL|IM;.X..p|
|000012d0| 20 2b 3d 20 41 50 50 45 | 4e 44 28 70 2c 20 74 6f | += APPE|ND(p, to|
|000012e0| 6b 65 6e 73 5b 69 5d 29 | 3b 0a 58 09 20 20 20 20 |kens[i])|;.X. |
|000012f0| 7d 0a 58 09 62 72 65 61 | 6b 3b 0a 58 20 20 20 20 |}.X.brea|k;.X |
|00001300| 63 61 73 65 20 27 64 27 | 3a 09 09 09 09 2f 2a 20 |case 'd'|:..../* |
|00001310| 44 65 6c 65 74 65 09 2a | 2f 0a 58 09 66 6f 72 20 |Delete.*|/.X.for |
|00001320| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6e 6e 67 3b |(i = 0; |i < nng;|
|00001330| 20 69 2b 2b 29 0a 58 09 | 20 20 20 20 69 66 20 28 | i++).X.| if (|
|00001340| 21 45 51 28 6e 67 5b 69 | 5d 2c 20 67 72 6f 75 70 |!EQ(ng[i|], group|
|00001350| 29 29 20 7b 0a 58 09 09 | 69 66 20 28 70 20 3e 20 |)) {.X..|if (p > |
|00001360| 68 70 2d 3e 6e 62 75 66 | 29 0a 58 09 09 20 20 20 |hp->nbuf|).X.. |
|00001370| 20 2a 70 2b 2b 20 3d 20 | 4e 47 44 45 4c 49 4d 3b | *p++ = |NGDELIM;|
|00001380| 0a 58 09 09 70 20 2b 3d | 20 41 50 50 45 4e 44 28 |.X..p +=| APPEND(|
|00001390| 70 2c 20 6e 67 5b 69 5d | 29 3b 0a 58 09 20 20 20 |p, ng[i]|);.X. |
|000013a0| 20 7d 0a 58 09 69 66 20 | 28 70 20 3d 3d 20 68 70 | }.X.if |(p == hp|
|000013b0| 2d 3e 6e 62 75 66 29 0a | 58 09 20 20 20 20 53 74 |->nbuf).|X. St|
|000013c0| 72 63 70 79 28 68 70 2d | 3e 6e 62 75 66 2c 20 22 |rcpy(hp-|>nbuf, "|
|000013d0| 6a 75 6e 6b 22 29 3b 0a | 58 09 62 72 65 61 6b 3b |junk");.|X.break;|
|000013e0| 0a 58 20 20 20 20 63 61 | 73 65 20 27 6b 27 3a 09 |.X ca|se 'k':.|
|000013f0| 09 09 09 2f 2a 20 4b 69 | 6c 6c 09 09 2a 2f 0a 58 |.../* Ki|ll..*/.X|
|00001400| 09 46 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.Fprintf|(stderr,|
|00001410| 20 22 25 73 3a 20 20 59 | 6f 75 72 20 70 6f 73 74 | "%s: Y|our post|
|00001420| 69 6e 67 20 74 6f 20 25 | 73 20 77 61 73 20 6b 69 |ing to %|s was ki|
|00001430| 6c 6c 65 64 20 62 79 20 | 25 73 2e 5c 6e 22 2c 0a |lled by |%s.\n",.|
|00001440| 58 09 20 20 20 20 50 6e | 61 6d 65 2c 20 68 70 2d |X. Pn|ame, hp-|
|00001450| 3e 6e 62 75 66 2c 20 6e | 20 3e 20 31 20 3f 20 74 |>nbuf, n| > 1 ? t|
|00001460| 6f 6b 65 6e 73 5b 31 5d | 20 3a 20 67 72 6f 75 70 |okens[1]| : group|
|00001470| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 5f 4e 4f 50 |);.X.exi|t(EX_NOP|
|00001480| 45 52 4d 29 3b 0a 58 09 | 2f 2a 20 4e 4f 54 52 45 |ERM);.X.|/* NOTRE|
|00001490| 41 43 48 45 44 20 2a 2f | 0a 58 20 20 20 20 63 61 |ACHED */|.X ca|
|000014a0| 73 65 20 27 6d 27 3a 09 | 09 09 09 2f 2a 20 4d 6f |se 'm':.|.../* Mo|
|000014b0| 76 65 09 09 2a 2f 0a 58 | 09 69 66 20 28 6e 20 3e |ve..*/.X|.if (n >|
|000014c0| 20 31 29 0a 58 09 20 20 | 20 20 69 66 20 28 6e 6e | 1).X. | if (nn|
|000014d0| 67 20 3d 3d 20 31 29 0a | 58 09 09 53 74 72 63 70 |g == 1).|X..Strcp|
|000014e0| 79 28 68 70 2d 3e 6e 62 | 75 66 2c 20 74 6f 6b 65 |y(hp->nb|uf, toke|
|000014f0| 6e 73 5b 31 5d 29 3b 0a | 58 09 20 20 20 20 65 6c |ns[1]);.|X. el|
|00001500| 73 65 0a 58 09 09 66 6f | 72 20 28 69 20 3d 20 30 |se.X..fo|r (i = 0|
|00001510| 3b 20 69 20 3c 20 6e 6e | 67 3b 20 69 2b 2b 29 20 |; i < nn|g; i++) |
|00001520| 7b 0a 58 09 09 20 20 20 | 20 69 66 20 28 70 20 3e |{.X.. | if (p >|
|00001530| 20 68 70 2d 3e 6e 62 75 | 66 29 0a 58 09 09 09 2a | hp->nbu|f).X...*|
|00001540| 70 2b 2b 20 3d 20 4e 47 | 44 45 4c 49 4d 3b 0a 58 |p++ = NG|DELIM;.X|
|00001550| 09 09 20 20 20 20 70 20 | 2b 3d 20 41 50 50 45 4e |.. p |+= APPEN|
|00001560| 44 28 70 2c 20 45 51 28 | 6e 67 5b 69 5d 2c 20 67 |D(p, EQ(|ng[i], g|
|00001570| 72 6f 75 70 29 20 3f 20 | 74 6f 6b 65 6e 73 5b 31 |roup) ? |tokens[1|
|00001580| 5d 20 3a 20 6e 67 5b 69 | 5d 29 3b 0a 58 09 09 7d |] : ng[i|]);.X..}|
|00001590| 0a 58 09 62 72 65 61 6b | 3b 0a 58 20 20 20 20 63 |.X.break|;.X c|
|000015a0| 61 73 65 20 27 71 27 3a | 09 09 09 09 2f 2a 20 51 |ase 'q':|..../* Q|
|000015b0| 75 69 65 74 20 6b 69 6c | 6c 09 2a 2f 0a 58 09 69 |uiet kil|l.*/.X.i|
|000015c0| 66 20 28 44 65 62 75 67 | 67 69 6e 67 29 20 7b 0a |f (Debug|ging) {.|
|000015d0| 58 09 20 20 20 20 28 76 | 6f 69 64 29 70 72 69 6e |X. (v|oid)prin|
|000015e0| 74 66 28 22 51 75 69 65 | 74 20 6b 69 6c 6c 20 28 |tf("Quie|t kill (|
|000015f0| 69 67 6e 6f 72 65 64 20 | 66 6f 72 20 64 65 62 75 |ignored |for debu|
|00001600| 67 67 69 6e 67 29 2e 5c | 6e 22 29 3b 0a 58 09 20 |gging).\|n");.X. |
|00001610| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 7d 0a 58 09 | break|;.X.}.X.|
|00001620| 2f 2a 20 45 61 74 20 74 | 68 65 20 6d 65 73 73 61 |/* Eat t|he messa|
|00001630| 67 65 20 75 70 2c 20 61 | 6e 64 20 70 72 65 74 65 |ge up, a|nd prete|
|00001640| 6e 64 20 77 65 20 64 65 | 6c 69 76 65 72 65 64 20 |nd we de|livered |
|00001650| 69 74 2e 20 2a 2f 0a 58 | 09 77 68 69 6c 65 20 28 |it. */.X|.while (|
|00001660| 66 67 65 74 73 28 62 75 | 66 66 2c 20 73 69 7a 65 |fgets(bu|ff, size|
|00001670| 6f 66 20 62 75 66 66 2c | 20 73 74 64 69 6e 29 29 |of buff,| stdin))|
|00001680| 0a 58 09 20 20 20 20 3b | 0a 58 09 65 78 69 74 28 |.X. ;|.X.exit(|
|00001690| 45 58 5f 4f 4b 29 3b 0a | 58 09 2f 2a 20 4e 4f 54 |EX_OK);.|X./* NOT|
|000016a0| 52 45 41 43 48 45 44 20 | 2a 2f 0a 58 20 20 20 20 |REACHED |*/.X |
|000016b0| 7d 0a 58 0a 58 20 20 20 | 20 53 70 6c 69 74 46 72 |}.X.X | SplitFr|
|000016c0| 65 65 28 26 74 6f 6b 65 | 6e 73 29 3b 0a 58 20 20 |ee(&toke|ns);.X |
|000016d0| 20 20 53 70 6c 69 74 46 | 72 65 65 28 26 6e 67 29 | SplitF|ree(&ng)|
|000016e0| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |;.X}.X.X|.X/*.X**|
|000016f0| 20 20 53 70 6c 69 74 20 | 61 20 6c 69 6e 65 20 74 | Split |a line t|
|00001700| 68 61 74 20 6c 6f 6f 6b | 73 20 6c 69 6b 65 20 58 |hat look|s like X|
|00001710| 70 61 74 74 65 72 6e 58 | 63 6f 6d 6d 61 6e 64 58 |patternX|commandX|
|00001720| 20 69 6e 74 6f 20 74 68 | 65 20 70 61 74 74 65 72 | into th|e patter|
|00001730| 6e 20 61 6e 64 0a 58 2a | 2a 20 20 74 68 65 20 63 |n and.X*|* the c|
|00001740| 6f 6d 6d 61 6e 64 2e 20 | 20 49 6e 69 74 69 61 6c |ommand. | Initial|
|00001750| 69 7a 65 20 74 68 65 20 | 52 45 20 6d 61 74 63 68 |ize the |RE match|
|00001760| 65 72 20 77 69 74 68 20 | 74 68 65 20 70 61 74 74 |er with |the patt|
|00001770| 65 72 6e 2c 20 61 6e 64 | 20 72 65 74 75 72 6e 0a |ern, and| return.|
|00001780| 58 2a 2a 20 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |X** the| command|
|00001790| 2e 0a 58 2a 2f 0a 58 53 | 54 41 54 49 43 20 63 68 |..X*/.XS|TATIC ch|
|000017a0| 61 72 20 2a 0a 58 50 61 | 72 73 65 50 61 74 74 65 |ar *.XPa|rsePatte|
|000017b0| 72 6e 28 70 2c 20 6c 69 | 6e 65 6e 6f 29 0a 58 20 |rn(p, li|neno).X |
|000017c0| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|000017d0| 09 2a 70 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 09 |.*p;.X | int...|
|000017e0| 6c 69 6e 65 6e 6f 3b 0a | 58 7b 0a 58 20 20 20 20 |lineno;.|X{.X |
|000017f0| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 2a 63 |register| char.*c|
|00001800| 70 3b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |p;.X |register|
|00001810| 20 63 68 61 72 09 2a 63 | 6f 6d 6d 61 6e 64 3b 0a | char.*c|ommand;.|
|00001820| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |X reg|ister ch|
|00001830| 61 72 09 64 65 6c 69 6d | 3b 0a 58 20 20 20 20 63 |ar.delim|;.X c|
|00001840| 68 61 72 09 09 2a 52 45 | 3b 0a 58 0a 58 20 20 20 |har..*RE|;.X.X |
|00001850| 20 2f 2a 20 49 67 6e 6f | 72 65 20 63 6f 6d 6d 65 | /* Igno|re comme|
|00001860| 6e 74 73 20 61 6e 64 20 | 62 6c 61 6e 6b 20 6c 69 |nts and |blank li|
|00001870| 6e 65 73 2e 20 2a 2f 0a | 58 20 20 20 20 69 66 20 |nes. */.|X if |
|00001880| 28 2a 70 20 3d 3d 20 27 | 23 27 20 7c 7c 20 2a 70 |(*p == '|#' || *p|
|00001890| 20 3d 3d 20 27 5c 30 27 | 29 0a 58 09 72 65 74 75 | == '\0'|).X.retu|
|000018a0| 72 6e 20 4e 55 4c 4c 3b | 0a 58 0a 58 20 20 20 20 |rn NULL;|.X.X |
|000018b0| 66 6f 72 20 28 64 65 6c | 69 6d 20 3d 20 2a 70 2b |for (del|im = *p+|
|000018c0| 2b 2c 20 52 45 20 3d 20 | 63 70 20 3d 20 70 2c 20 |+, RE = |cp = p, |
|000018d0| 63 6f 6d 6d 61 6e 64 20 | 3d 20 4e 55 4c 4c 3b 20 |command |= NULL; |
|000018e0| 2a 63 70 3b 20 2a 70 2b | 2b 20 3d 20 2a 63 70 2b |*cp; *p+|+ = *cp+|
|000018f0| 2b 29 0a 58 09 69 66 20 | 28 2a 63 70 20 3d 3d 20 |+).X.if |(*cp == |
|00001900| 27 5c 5c 27 20 26 26 20 | 63 70 5b 31 5d 20 3d 3d |'\\' && |cp[1] ==|
|00001910| 20 64 65 6c 69 6d 29 0a | 58 09 20 20 20 20 63 70 | delim).|X. cp|
|00001920| 2b 2b 3b 0a 58 09 65 6c | 73 65 20 69 66 20 28 2a |++;.X.el|se if (*|
|00001930| 63 70 20 3d 3d 20 64 65 | 6c 69 6d 29 20 7b 0a 58 |cp == de|lim) {.X|
|00001940| 09 20 20 20 20 2f 2a 20 | 46 6f 75 6e 64 20 64 65 |. /* |Found de|
|00001950| 6c 69 6d 69 74 65 72 3b | 20 6d 61 72 6b 20 63 6f |limiter;| mark co|
|00001960| 6d 6d 61 6e 64 2c 20 74 | 65 72 6d 69 6e 61 74 65 |mmand, t|erminate|
|00001970| 20 52 45 2e 20 2a 2f 0a | 58 09 20 20 20 20 63 6f | RE. */.|X. co|
|00001980| 6d 6d 61 6e 64 20 3d 20 | 2b 2b 63 70 3b 0a 58 09 |mmand = |++cp;.X.|
|00001990| 20 20 20 20 2a 70 20 3d | 20 27 5c 30 27 3b 0a 58 | *p =| '\0';.X|
|000019a0| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 09 7d 0a |. bre|ak;.X.}.|
|000019b0| 58 0a 58 20 20 20 20 69 | 66 20 28 63 6f 6d 6d 61 |X.X i|f (comma|
|000019c0| 6e 64 20 3d 3d 20 4e 55 | 4c 4c 20 7c 7c 20 2a 63 |nd == NU|LL || *c|
|000019d0| 6f 6d 6d 61 6e 64 20 3d | 3d 20 27 5c 30 27 29 0a |ommand =|= '\0').|
|000019e0| 58 09 46 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |X.Fprint|f(stderr|
|000019f0| 2c 20 22 25 73 3a 20 20 | 49 6e 63 6f 6d 70 6c 65 |, "%s: |Incomple|
|00001a00| 74 65 20 72 65 67 75 6c | 61 72 20 65 78 70 72 65 |te regul|ar expre|
|00001a10| 73 73 69 6f 6e 2c 20 6c | 69 6e 65 20 25 64 2e 5c |ssion, l|ine %d.\|
|00001a20| 6e 22 2c 0a 58 09 20 20 | 20 20 50 6e 61 6d 65 2c |n",.X. | Pname,|
|00001a30| 20 6c 69 6e 65 6e 6f 29 | 3b 0a 58 20 20 20 20 65 | lineno)|;.X e|
|00001a40| 6c 73 65 20 69 66 20 28 | 63 70 20 3d 20 72 65 5f |lse if (|cp = re_|
|00001a50| 63 6f 6d 70 28 52 45 29 | 29 0a 58 09 46 70 72 69 |comp(RE)|).X.Fpri|
|00001a60| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 25 73 3a |ntf(stde|rr, "%s:|
|00001a70| 20 20 42 61 64 20 72 65 | 67 75 6c 61 72 20 65 78 | Bad re|gular ex|
|00001a80| 70 72 65 73 73 69 6f 6e | 2c 20 6c 69 6e 65 20 25 |pression|, line %|
|00001a90| 64 3a 20 25 73 2e 5c 6e | 22 2c 0a 58 09 20 20 20 |d: %s.\n|",.X. |
|00001aa0| 20 50 6e 61 6d 65 2c 20 | 6c 69 6e 65 6e 6f 2c 20 | Pname, |lineno, |
|00001ab0| 63 70 29 3b 0a 58 20 20 | 20 20 65 6c 73 65 0a 58 |cp);.X | else.X|
|00001ac0| 09 72 65 74 75 72 6e 20 | 63 6f 6d 6d 61 6e 64 3b |.return |command;|
|00001ad0| 0a 58 0a 58 23 69 66 64 | 65 66 09 6c 69 6e 74 0a |.X.X#ifd|ef.lint.|
|00001ae0| 58 20 20 20 20 2f 2a 20 | 4d 79 2c 20 6d 79 2c 20 |X /* |My, my, |
|00001af0| 61 72 65 6e 27 74 20 77 | 65 20 61 6e 61 6c 2e 20 |aren't w|e anal. |
|00001b00| 2a 2f 0a 58 20 20 20 20 | 28 76 6f 69 64 29 72 65 |*/.X |(void)re|
|00001b10| 5f 73 75 62 73 28 22 22 | 2c 20 22 22 29 3b 0a 58 |_subs(""|, "");.X|
|00001b20| 20 20 20 20 72 65 5f 6d | 6f 64 77 28 22 22 29 3b | re_m|odw("");|
|00001b30| 0a 58 23 65 6e 64 69 66 | 09 2f 2a 20 6c 69 6e 74 |.X#endif|./* lint|
|00001b40| 20 2a 2f 0a 58 0a 58 20 | 20 20 20 72 65 74 75 72 | */.X.X | retur|
|00001b50| 6e 20 4e 55 4c 4c 3b 0a | 58 7d 0a 58 0a 58 0a 58 |n NULL;.|X}.X.X.X|
|00001b60| 2f 2a 0a 58 2a 2a 20 20 | 43 6f 6e 76 65 72 74 20 |/*.X** |Convert |
|00001b70| 73 74 72 69 6e 67 20 74 | 6f 20 6c 6f 77 65 72 20 |string t|o lower |
|00001b80| 63 61 73 65 2c 20 72 65 | 74 75 72 6e 20 61 20 6e |case, re|turn a n|
|00001b90| 65 77 20 63 6f 70 79 2e | 0a 58 2a 2f 0a 58 53 54 |ew copy.|.X*/.XST|
|00001ba0| 41 54 49 43 20 63 68 61 | 72 20 2a 0a 58 4d 61 6b |ATIC cha|r *.XMak|
|00001bb0| 65 4c 6f 77 65 72 43 6f | 70 79 28 73 29 0a 58 20 |eLowerCo|py(s).X |
|00001bc0| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|00001bd0| 09 2a 73 3b 0a 58 7b 0a | 58 20 20 20 20 72 65 67 |.*s;.X{.|X reg|
|00001be0| 69 73 74 65 72 20 63 68 | 61 72 09 2a 70 3b 0a 58 |ister ch|ar.*p;.X|
|00001bf0| 0a 58 20 20 20 20 66 6f | 72 20 28 70 20 3d 20 73 |.X fo|r (p = s|
|00001c00| 20 3d 20 43 4f 50 59 28 | 73 29 3b 20 2a 70 3b 20 | = COPY(|s); *p; |
|00001c10| 70 2b 2b 29 0a 58 09 69 | 66 20 28 69 73 75 70 70 |p++).X.i|f (isupp|
|00001c20| 65 72 28 2a 70 29 29 0a | 58 09 20 20 20 20 2a 70 |er(*p)).|X. *p|
|00001c30| 20 3d 20 74 6f 6c 6f 77 | 65 72 28 2a 70 29 3b 0a | = tolow|er(*p);.|
|00001c40| 58 20 20 20 20 72 65 74 | 75 72 6e 20 73 3b 0a 58 |X ret|urn s;.X|
|00001c50| 7d 0a 58 0a 58 0a 58 2f | 2a 0a 58 2a 2a 20 20 43 |}.X.X.X/|*.X** C|
|00001c60| 68 61 6e 67 65 20 6e 65 | 77 73 67 72 6f 75 70 73 |hange ne|wsgroups|
|00001c70| 20 69 66 20 74 68 65 20 | 53 75 62 6a 65 63 74 3a | if the |Subject:|
|00001c80| 2c 20 4b 65 79 77 6f 72 | 64 73 3a 2c 20 6f 72 20 |, Keywor|ds:, or |
|00001c90| 53 75 6d 6d 61 72 79 3a | 20 6d 61 74 63 68 20 61 |Summary:| match a|
|00001ca0| 0a 58 2a 2a 20 20 70 61 | 74 74 65 72 6e 20 66 6f |.X** pa|ttern fo|
|00001cb0| 75 6e 64 20 69 6e 20 74 | 68 65 20 6e 65 77 73 67 |und in t|he newsg|
|00001cc0| 72 6f 75 70 20 72 65 6d | 61 70 20 66 69 6c 65 2e |roup rem|ap file.|
|00001cd0| 0a 58 2a 2f 0a 58 53 54 | 41 54 49 43 20 76 6f 69 |.X*/.XST|ATIC voi|
|00001ce0| 64 0a 58 45 64 69 74 6e | 65 77 73 67 72 6f 75 70 |d.XEditn|ewsgroup|
|00001cf0| 73 28 68 70 29 0a 58 20 | 20 20 20 72 65 67 69 73 |s(hp).X | regis|
|00001d00| 74 65 72 20 48 42 55 46 | 09 09 2a 68 70 3b 0a 58 |ter HBUF|..*hp;.X|
|00001d10| 7b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |{.X r|egister |
|00001d20| 63 68 61 72 09 09 2a 70 | 3b 0a 58 20 20 20 20 72 |char..*p|;.X r|
|00001d30| 65 67 69 73 74 65 72 20 | 69 6e 74 09 09 6e 3b 0a |egister |int..n;.|
|00001d40| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 69 6e |X reg|ister in|
|00001d50| 74 09 09 69 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |t..i;.X | regis|
|00001d60| 74 65 72 20 69 6e 74 09 | 09 6a 3b 0a 58 20 20 20 |ter int.|.j;.X |
|00001d70| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 09 09 74 | registe|r int..t|
|00001d80| 3b 0a 58 20 20 20 20 63 | 68 61 72 09 09 09 2a 2a |;.X c|har...**|
|00001d90| 67 72 6f 75 70 73 3b 0a | 58 20 20 20 20 63 68 61 |groups;.|X cha|
|00001da0| 72 09 09 09 2a 2a 6d 61 | 70 6c 69 6e 65 3b 0a 58 |r...**ma|pline;.X|
|00001db0| 20 20 20 20 63 68 61 72 | 09 09 09 2a 68 64 72 6c | char|...*hdrl|
|00001dc0| 69 6e 65 5b 34 5d 3b 0a | 58 20 20 20 20 63 68 61 |ine[4];.|X cha|
|00001dd0| 72 09 09 09 62 75 66 66 | 5b 4c 47 5f 53 49 5a 45 |r...buff|[LG_SIZE|
|00001de0| 5d 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 43 6f 70 |];.X.X | /* Cop|
|00001df0| 79 20 73 6f 6d 65 20 68 | 65 61 64 65 72 73 2c 20 |y some h|eaders, |
|00001e00| 62 75 74 20 69 66 20 6e | 6f 74 68 69 6e 67 27 73 |but if n|othing's|
|00001e10| 20 74 68 65 72 65 2c 20 | 67 69 76 65 20 75 70 2e | there, |give up.|
|00001e20| 20 2a 2f 0a 58 20 20 20 | 20 69 20 3d 20 30 3b 0a | */.X | i = 0;.|
|00001e30| 58 20 20 20 20 69 66 20 | 28 68 70 2d 3e 74 69 74 |X if |(hp->tit|
|00001e40| 6c 65 29 0a 58 09 68 64 | 72 6c 69 6e 65 5b 69 2b |le).X.hd|rline[i+|
|00001e50| 2b 5d 20 3d 20 4d 61 6b | 65 4c 6f 77 65 72 43 6f |+] = Mak|eLowerCo|
|00001e60| 70 79 28 68 70 2d 3e 74 | 69 74 6c 65 29 3b 0a 58 |py(hp->t|itle);.X|
|00001e70| 20 20 20 20 69 66 20 28 | 68 70 2d 3e 6b 65 79 77 | if (|hp->keyw|
|00001e80| 6f 72 64 73 29 0a 58 09 | 68 64 72 6c 69 6e 65 5b |ords).X.|hdrline[|
|00001e90| 69 2b 2b 5d 20 3d 20 4d | 61 6b 65 4c 6f 77 65 72 |i++] = M|akeLower|
|00001ea0| 43 6f 70 79 28 68 70 2d | 3e 6b 65 79 77 6f 72 64 |Copy(hp-|>keyword|
|00001eb0| 73 29 3b 0a 58 20 20 20 | 20 69 66 20 28 68 70 2d |s);.X | if (hp-|
|00001ec0| 3e 73 75 6d 6d 61 72 79 | 29 0a 58 09 68 64 72 6c |>summary|).X.hdrl|
|00001ed0| 69 6e 65 5b 69 2b 2b 5d | 20 3d 20 4d 61 6b 65 4c |ine[i++]| = MakeL|
|00001ee0| 6f 77 65 72 43 6f 70 79 | 28 68 70 2d 3e 73 75 6d |owerCopy|(hp->sum|
|00001ef0| 6d 61 72 79 29 3b 0a 58 | 20 20 20 20 69 66 20 28 |mary);.X| if (|
|00001f00| 69 20 3d 3d 20 30 29 0a | 58 09 72 65 74 75 72 6e |i == 0).|X.return|
|00001f10| 3b 0a 58 20 20 20 20 68 | 64 72 6c 69 6e 65 5b 69 |;.X h|drline[i|
|00001f20| 5d 20 3d 20 4e 55 4c 4c | 3b 0a 58 0a 58 20 20 20 |] = NULL|;.X.X |
|00001f30| 20 2f 2a 20 46 6f 72 20 | 61 6c 6c 20 74 68 65 20 | /* For |all the |
|00001f40| 6e 65 77 73 67 72 6f 75 | 70 73 2c 20 73 65 65 20 |newsgrou|ps, see |
|00001f50| 69 66 20 74 68 65 72 65 | 27 73 20 61 20 6d 61 70 |if there|'s a map|
|00001f60| 70 69 6e 67 20 66 69 6c | 65 2e 20 2a 2f 0a 58 20 |ping fil|e. */.X |
|00001f70| 20 20 20 66 6f 72 20 28 | 6e 20 3d 20 53 70 6c 69 | for (|n = Spli|
|00001f80| 74 28 68 70 2d 3e 6e 62 | 75 66 2c 20 26 67 72 6f |t(hp->nb|uf, &gro|
|00001f90| 75 70 73 2c 20 4e 47 44 | 45 4c 49 4d 29 2c 20 69 |ups, NGD|ELIM), i|
|00001fa0| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 3b 20 69 2b 2b | = 0; i |< n; i++|
|00001fb0| 29 20 7b 0a 58 09 69 66 | 20 28 67 72 6f 75 70 73 |) {.X.if| (groups|
|00001fc0| 5b 69 5d 20 3d 3d 20 4e | 55 4c 4c 20 7c 7c 20 67 |[i] == N|ULL || g|
|00001fd0| 72 6f 75 70 73 5b 69 5d | 5b 30 5d 20 3d 3d 20 27 |roups[i]|[0] == '|
|00001fe0| 5c 30 27 29 0a 58 09 20 | 20 20 20 63 6f 6e 74 69 |\0').X. | conti|
|00001ff0| 6e 75 65 3b 0a 58 0a 58 | 09 2f 2a 20 47 61 74 65 |nue;.X.X|./* Gate|
|00002000| 20 74 68 65 20 6e 61 6d | 65 20 6f 66 20 74 68 65 | the nam|e of the|
|00002010| 20 6d 61 70 70 69 6e 67 | 20 66 69 6c 65 2e 20 2a | mapping| file. *|
|00002020| 2f 0a 58 23 69 66 64 65 | 66 09 49 4e 5f 4f 4e 45 |/.X#ifde|f.IN_ONE|
|00002030| 50 4c 41 43 45 0a 58 09 | 53 74 72 63 70 79 28 62 |PLACE.X.|Strcpy(b|
|00002040| 75 66 66 2c 20 49 4e 5f | 4f 4e 45 50 4c 41 43 45 |uff, IN_|ONEPLACE|
|00002050| 29 3b 0a 58 23 65 6e 64 | 69 66 09 2f 2a 20 49 4e |);.X#end|if./* IN|
|00002060| 5f 4f 4e 45 50 4c 41 43 | 45 20 2a 2f 0a 58 23 69 |_ONEPLAC|E */.X#i|
|00002070| 66 64 65 66 09 49 4e 5f | 53 50 4f 4f 4c 44 49 52 |fdef.IN_|SPOOLDIR|
|00002080| 0a 58 09 7b 0a 58 09 20 | 20 20 20 72 65 67 69 73 |.X.{.X. | regis|
|00002090| 74 65 72 20 63 68 61 72 | 09 2a 71 3b 0a 58 0a 58 |ter char|.*q;.X.X|
|000020a0| 09 20 20 20 20 66 6f 72 | 20 28 70 20 3d 20 62 75 |. for| (p = bu|
|000020b0| 66 66 20 2b 20 41 50 50 | 45 4e 44 28 62 75 66 66 |ff + APP|END(buff|
|000020c0| 2c 20 49 4e 5f 53 50 4f | 4f 4c 44 49 52 29 2c 20 |, IN_SPO|OLDIR), |
|000020d0| 71 20 3d 20 67 72 6f 75 | 70 73 5b 69 5d 3b 20 2a |q = grou|ps[i]; *|
|000020e0| 71 3b 20 71 2b 2b 29 0a | 58 09 09 2a 70 2b 2b 20 |q; q++).|X..*p++ |
|000020f0| 3d 20 2a 71 20 3d 3d 20 | 27 2e 27 20 3f 20 27 2f |= *q == |'.' ? '/|
|00002100| 27 20 3a 20 2a 71 3b 0a | 58 09 20 20 20 20 53 74 |' : *q;.|X. St|
|00002110| 72 63 70 79 28 70 2c 20 | 22 2f 72 65 63 6e 65 77 |rcpy(p, |"/recnew|
|00002120| 73 2e 63 6d 64 22 29 3b | 0a 58 09 7d 0a 58 23 65 |s.cmd");|.X.}.X#e|
|00002130| 6e 64 69 66 09 2f 2a 20 | 49 4e 5f 53 50 4f 4f 4c |ndif./* |IN_SPOOL|
|00002140| 44 49 52 20 2a 2f 0a 58 | 23 69 66 64 65 66 09 49 |DIR */.X|#ifdef.I|
|00002150| 4e 5f 43 4d 44 44 49 52 | 0a 58 09 53 70 72 69 6e |N_CMDDIR|.X.Sprin|
|00002160| 74 66 28 62 75 66 66 2c | 20 22 25 73 2f 25 73 22 |tf(buff,| "%s/%s"|
|00002170| 2c 20 49 4e 5f 43 4d 44 | 44 49 52 2c 20 67 72 6f |, IN_CMD|DIR, gro|
|00002180| 75 70 73 5b 69 5d 29 3b | 0a 58 23 65 6e 64 69 66 |ups[i]);|.X#endif|
|00002190| 09 2f 2a 20 49 4e 5f 43 | 4d 44 44 49 52 20 2a 2f |./* IN_C|MDDIR */|
|000021a0| 0a 58 0a 58 09 69 66 20 | 28 61 63 63 65 73 73 28 |.X.X.if |(access(|
|000021b0| 62 75 66 66 2c 20 52 5f | 4f 4b 29 20 3e 3d 20 30 |buff, R_|OK) >= 0|
|000021c0| 20 26 26 20 28 6d 61 70 | 6c 69 6e 65 20 3d 20 52 | && (map|line = R|
|000021d0| 65 61 64 46 69 6c 65 28 | 62 75 66 66 29 29 29 20 |eadFile(|buff))) |
|000021e0| 7b 0a 58 09 20 20 20 20 | 2f 2a 20 46 6f 72 20 61 |{.X. |/* For a|
|000021f0| 6c 6c 20 6c 69 6e 65 73 | 20 69 6e 20 74 68 65 20 |ll lines| in the |
|00002200| 66 69 6c 65 2c 20 69 66 | 20 74 68 65 72 65 27 73 |file, if| there's|
|00002210| 20 61 20 63 6f 6d 6d 61 | 6e 64 20 61 6e 64 20 74 | a comma|nd and t|
|00002220| 68 65 0a 58 09 20 20 20 | 20 20 2a 20 70 61 74 74 |he.X. | * patt|
|00002230| 65 72 6e 20 6d 61 74 63 | 68 65 73 2c 20 65 78 65 |ern matc|hes, exe|
|00002240| 63 75 74 65 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |cute the| command|
|00002250| 2e 20 2a 2f 0a 58 09 20 | 20 20 20 66 6f 72 20 28 |. */.X. | for (|
|00002260| 6a 20 3d 20 30 3b 20 6d | 61 70 6c 69 6e 65 5b 6a |j = 0; m|apline[j|
|00002270| 5d 3b 20 6a 2b 2b 29 0a | 58 09 09 69 66 20 28 70 |]; j++).|X..if (p|
|00002280| 20 3d 20 50 61 72 73 65 | 50 61 74 74 65 72 6e 28 | = Parse|Pattern(|
|00002290| 6d 61 70 6c 69 6e 65 5b | 6a 5d 2c 20 6a 29 29 0a |mapline[|j], j)).|
|000022a0| 58 09 09 20 20 20 20 66 | 6f 72 20 28 74 20 3d 20 |X.. f|or (t = |
|000022b0| 30 3b 20 68 64 72 6c 69 | 6e 65 5b 74 5d 3b 20 74 |0; hdrli|ne[t]; t|
|000022c0| 2b 2b 29 0a 58 09 09 09 | 69 66 20 28 72 65 5f 65 |++).X...|if (re_e|
|000022d0| 78 65 63 28 68 64 72 6c | 69 6e 65 5b 74 5d 29 20 |xec(hdrl|ine[t]) |
|000022e0| 3d 3d 20 31 29 20 7b 0a | 58 09 09 09 20 20 20 20 |== 1) {.|X... |
|000022f0| 44 6f 43 6f 6d 6d 61 6e | 64 28 68 70 2c 20 70 2c |DoComman|d(hp, p,|
|00002300| 20 67 72 6f 75 70 73 5b | 69 5d 29 3b 0a 58 09 09 | groups[|i]);.X..|
|00002310| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 09 09 09 |. bre|ak;.X...|
|00002320| 7d 0a 58 09 20 20 20 20 | 46 72 65 65 46 69 6c 65 |}.X. |FreeFile|
|00002330| 28 6d 61 70 6c 69 6e 65 | 29 3b 0a 58 09 7d 0a 58 |(mapline|);.X.}.X|
|00002340| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 2f 2a 20 | }.X.|X /* |
|00002350| 46 72 65 65 20 64 79 6e | 61 6d 69 63 20 73 70 61 |Free dyn|amic spa|
|00002360| 63 65 2e 20 2a 2f 0a 58 | 20 20 20 20 66 6f 72 20 |ce. */.X| for |
|00002370| 28 69 20 3d 20 30 3b 20 | 68 64 72 6c 69 6e 65 5b |(i = 0; |hdrline[|
|00002380| 69 5d 3b 20 69 2b 2b 29 | 0a 58 09 66 72 65 65 28 |i]; i++)|.X.free(|
|00002390| 68 64 72 6c 69 6e 65 5b | 69 5d 29 3b 0a 58 20 20 |hdrline[|i]);.X |
|000023a0| 20 20 53 70 6c 69 74 46 | 72 65 65 28 26 67 72 6f | SplitF|ree(&gro|
|000023b0| 75 70 73 29 3b 0a 58 7d | 0a 58 0c 0a 58 0a 58 2f |ups);.X}|.X..X.X/|
|000023c0| 2a 0a 58 2a 2a 20 20 53 | 69 67 6e 61 6c 2d 63 61 |*.X** S|ignal-ca|
|000023d0| 74 63 68 65 72 20 61 6e | 64 20 63 68 69 6c 64 2d |tcher an|d child-|
|000023e0| 72 65 61 70 65 72 73 2e | 0a 58 2a 2f 0a 58 0a 58 |reapers.|.X*/.X.X|
|000023f0| 0a 58 2f 2a 0a 58 2a 2a | 20 20 45 78 69 74 20 73 |.X/*.X**| Exit s|
|00002400| 75 63 68 20 74 68 61 74 | 20 73 65 6e 64 6d 61 69 |uch that| sendmai|
|00002410| 6c 20 77 69 6c 6c 20 61 | 67 61 69 6e 20 6c 61 74 |l will a|gain lat|
|00002420| 65 72 2e 0a 58 2a 2f 0a | 58 53 54 41 54 49 43 20 |er..X*/.|XSTATIC |
|00002430| 43 41 54 43 48 45 52 0a | 58 53 69 67 5f 74 65 6d |CATCHER.|XSig_tem|
|00002440| 70 66 61 69 6c 28 29 0a | 58 7b 0a 58 20 20 20 20 |pfail().|X{.X |
|00002450| 65 78 69 74 28 45 58 5f | 54 45 4d 50 46 41 49 4c |exit(EX_|TEMPFAIL|
|00002460| 29 3b 0a 58 7d 0a 58 0a | 58 0a 58 2f 2a 0a 58 2a |);.X}.X.|X.X/*.X*|
|00002470| 2a 20 20 52 65 61 70 20 | 74 68 65 20 69 6e 65 77 |* Reap |the inew|
|00002480| 73 20 63 68 69 6c 64 20 | 70 72 6f 70 65 72 6c 79 |s child |properly|
|00002490| 2c 20 61 6e 64 20 65 78 | 69 74 20 77 69 74 68 20 |, and ex|it with |
|000024a0| 68 69 73 20 65 78 69 74 | 20 63 6f 64 65 2c 20 73 |his exit| code, s|
|000024b0| 6f 20 74 68 61 74 0a 58 | 2a 2a 20 20 75 6c 74 69 |o that.X|** ulti|
|000024c0| 6d 61 74 65 20 73 75 63 | 63 65 73 73 20 6f 72 20 |mate suc|cess or |
|000024d0| 66 61 69 6c 75 72 65 20 | 72 65 73 74 73 20 77 69 |failure |rests wi|
|000024e0| 74 68 20 69 6e 65 77 73 | 2e 0a 58 2a 2f 0a 58 53 |th inews|..X*/.XS|
|000024f0| 54 41 54 49 43 20 43 41 | 54 43 48 45 52 0a 58 63 |TATIC CA|TCHER.Xc|
|00002500| 68 69 6c 64 67 6f 6e 65 | 28 29 0a 58 7b 0a 58 20 |hildgone|().X{.X |
|00002510| 20 20 20 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 | regis|ter int.|
|00002520| 70 69 64 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 09 |pid;.X | int...|
|00002530| 57 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 28 70 |W;.X.X | if ((p|
|00002540| 69 64 20 3d 20 77 61 69 | 74 28 26 57 29 29 20 21 |id = wai|t(&W)) !|
|00002550| 3d 20 43 68 69 6c 64 50 | 69 64 20 7c 7c 20 70 69 |= ChildP|id || pi|
|00002560| 64 20 3d 3d 20 2d 31 29 | 0a 58 09 65 78 69 74 28 |d == -1)|.X.exit(|
|00002570| 45 58 5f 4f 53 45 52 52 | 29 3b 0a 58 20 20 20 20 |EX_OSERR|);.X |
|00002580| 0a 58 20 20 20 20 2f 2a | 20 57 61 73 20 69 74 20 |.X /*| Was it |
|00002590| 61 20 67 6f 6f 64 20 64 | 65 61 74 68 3f 20 2a 2f |a good d|eath? */|
|000025a0| 0a 58 20 20 20 20 69 66 | 20 28 57 41 49 54 5f 45 |.X if| (WAIT_E|
|000025b0| 58 49 54 53 49 47 28 57 | 29 29 20 7b 0a 58 09 46 |XITSIG(W|)) {.X.F|
|000025c0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|000025d0| 25 73 3a 20 20 43 68 69 | 6c 64 20 25 64 20 6b 69 |%s: Chi|ld %d ki|
|000025e0| 6c 6c 65 64 20 62 79 20 | 73 69 67 6e 61 6c 20 25 |lled by |signal %|
|000025f0| 64 2e 5c 6e 22 2c 0a 58 | 09 20 20 20 20 50 6e 61 |d.\n",.X|. Pna|
|00002600| 6d 65 2c 20 70 69 64 2c | 20 57 41 49 54 5f 45 58 |me, pid,| WAIT_EX|
|00002610| 49 54 53 49 47 28 57 29 | 29 3b 0a 58 09 69 66 20 |ITSIG(W)|);.X.if |
|00002620| 28 57 41 49 54 5f 43 4f | 52 45 44 28 57 29 29 0a |(WAIT_CO|RED(W)).|
|00002630| 58 09 20 20 20 20 46 70 | 72 69 6e 74 66 28 73 74 |X. Fp|rintf(st|
|00002640| 64 65 72 72 2c 20 22 25 | 73 3a 20 20 43 68 69 6c |derr, "%|s: Chil|
|00002650| 64 20 25 64 20 64 75 6d | 70 65 64 20 63 6f 72 65 |d %d dum|ped core|
|00002660| 2e 5c 6e 22 2c 20 50 6e | 61 6d 65 2c 20 70 69 64 |.\n", Pn|ame, pid|
|00002670| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 5f 53 4f 46 |);.X.exi|t(EX_SOF|
|00002680| 54 57 41 52 45 29 3b 0a | 58 20 20 20 20 7d 0a 58 |TWARE);.|X }.X|
|00002690| 0a 58 23 69 66 64 65 66 | 09 4d 4d 44 46 0a 58 20 |.X#ifdef|.MMDF.X |
|000026a0| 20 20 20 2f 2a 20 57 65 | 20 6e 65 65 64 20 61 20 | /* We| need a |
|000026b0| 77 61 79 20 74 6f 20 74 | 65 6c 6c 20 74 65 6d 70 |way to t|ell temp|
|000026c0| 6f 72 61 72 79 20 65 72 | 72 6f 72 73 20 66 72 6f |orary er|rors fro|
|000026d0| 6d 20 70 65 72 6d 61 6e | 65 6e 74 20 6f 6e 65 73 |m perman|ent ones|
|000026e0| 2e 20 20 49 6e 65 77 73 | 0a 58 20 20 20 20 20 2a |. Inews|.X *|
|000026f0| 20 77 69 6c 6c 20 72 65 | 6a 65 63 74 20 6d 65 73 | will re|ject mes|
|00002700| 73 61 67 65 73 20 62 65 | 63 61 75 73 65 20 6f 66 |sages be|cause of|
|00002710| 20 74 6f 6f 20 6d 75 63 | 68 20 71 75 6f 74 69 6e | too muc|h quotin|
|00002720| 67 2c 20 66 6f 72 20 65 | 78 61 6d 70 6c 65 2c 0a |g, for e|xample,.|
|00002730| 58 20 20 20 20 20 2a 20 | 73 6f 20 74 68 65 20 6d |X * |so the m|
|00002740| 65 73 73 61 67 65 20 77 | 69 6c 6c 20 73 69 74 20 |essage w|ill sit |
|00002750| 69 6e 20 74 68 65 20 71 | 75 65 75 65 20 66 6f 72 |in the q|ueue for|
|00002760| 65 76 65 72 2e 20 20 55 | 6e 74 69 6c 20 74 68 65 |ever. U|ntil the|
|00002770| 6e 20 77 65 27 6c 6c 0a | 58 20 20 20 20 20 2a 20 |n we'll.|X * |
|00002780| 68 61 76 65 20 74 6f 20 | 6c 6f 73 65 20 6d 65 73 |have to |lose mes|
|00002790| 73 61 67 65 73 20 6f 6e | 20 61 6e 79 20 65 72 72 |sages on| any err|
|000027a0| 6f 72 2e 20 2a 2f 0a 58 | 20 20 20 20 65 78 69 74 |or. */.X| exit|
|000027b0| 28 30 29 3b 0a 58 23 65 | 6c 73 65 0a 58 20 20 20 |(0);.X#e|lse.X |
|000027c0| 20 65 78 69 74 28 57 41 | 49 54 5f 45 58 49 54 43 | exit(WA|IT_EXITC|
|000027d0| 4f 44 45 28 57 29 29 3b | 0a 58 23 65 6e 64 69 66 |ODE(W));|.X#endif|
|000027e0| 09 2f 2a 20 4d 4d 44 46 | 20 2a 2f 0a 58 7d 0a 58 |./* MMDF| */.X}.X|
|000027f0| 0a 58 0c 0a 58 0a 58 2f | 2a 0a 58 2a 2a 20 20 43 |.X..X.X/|*.X** C|
|00002800| 6f 6e 76 65 72 74 20 74 | 68 65 20 63 68 61 72 61 |onvert t|he chara|
|00002810| 63 74 65 72 73 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |cters fo|llowing |
|00002820| 64 6f 74 73 20 74 6f 20 | 75 70 70 65 72 20 63 61 |dots to |upper ca|
|00002830| 73 65 2c 20 69 66 20 74 | 68 65 79 27 72 65 0a 58 |se, if t|hey're.X|
|00002840| 2a 2a 20 20 6c 6f 77 65 | 72 20 63 61 73 65 2e 20 |** lowe|r case. |
|00002850| 20 54 77 6f 20 64 6f 74 | 73 20 69 6e 20 61 20 72 | Two dot|s in a r|
|00002860| 6f 77 20 77 69 6c 6c 20 | 6c 65 61 76 65 20 6f 6e |ow will |leave on|
|00002870| 65 20 64 6f 74 20 69 6e | 20 74 68 65 69 72 20 70 |e dot in| their p|
|00002880| 6c 61 63 65 2e 0a 58 2a | 2a 20 20 4d 6f 64 69 66 |lace..X*|* Modif|
|00002890| 69 65 73 20 74 68 65 20 | 61 72 67 75 6d 65 6e 74 |ies the |argument|
|000028a0| 2e 0a 58 2a 2f 0a 58 53 | 54 41 54 49 43 20 63 68 |..X*/.XS|TATIC ch|
|000028b0| 61 72 20 2a 0a 58 48 61 | 63 6b 50 65 72 69 6f 64 |ar *.XHa|ckPeriod|
|000028c0| 73 28 73 74 72 69 6e 67 | 29 0a 58 20 20 20 20 63 |s(string|).X c|
|000028d0| 68 61 72 09 09 2a 73 74 | 72 69 6e 67 3b 0a 58 7b |har..*st|ring;.X{|
|000028e0| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |.X re|gister c|
|000028f0| 68 61 72 09 2a 73 3b 0a | 58 20 20 20 20 72 65 67 |har.*s;.|X reg|
|00002900| 69 73 74 65 72 20 63 68 | 61 72 09 2a 70 3b 0a 58 |ister ch|ar.*p;.X|
|00002910| 0a 58 20 20 20 20 69 66 | 20 28 73 74 72 69 6e 67 |.X if| (string|
|00002920| 29 20 7b 0a 58 09 66 6f | 72 20 28 70 20 3d 20 73 |) {.X.fo|r (p = s|
|00002930| 20 3d 20 73 74 72 69 6e | 67 3b 20 2a 70 3b 20 2a | = strin|g; *p; *|
|00002940| 73 2b 2b 20 3d 20 2a 70 | 2b 2b 29 0a 58 09 20 20 |s++ = *p|++).X. |
|00002950| 20 20 69 66 20 28 2a 70 | 20 3d 3d 20 27 2e 27 29 | if (*p| == '.')|
|00002960| 20 7b 0a 58 09 09 69 66 | 20 28 2a 2b 2b 70 20 3d | {.X..if| (*++p =|
|00002970| 3d 20 27 5c 30 27 29 20 | 7b 0a 58 09 09 20 20 20 |= '\0') |{.X.. |
|00002980| 20 2a 73 2b 2b 20 3d 20 | 27 2e 27 3b 0a 58 09 09 | *s++ = |'.';.X..|
|00002990| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 09 09 7d 0a | brea|k;.X..}.|
|000029a0| 58 09 09 69 66 20 28 69 | 73 6c 6f 77 65 72 28 2a |X..if (i|slower(*|
|000029b0| 70 29 29 0a 58 09 09 20 | 20 20 20 2a 70 20 3d 20 |p)).X.. | *p = |
|000029c0| 74 6f 75 70 70 65 72 28 | 2a 70 29 3b 0a 58 09 20 |toupper(|*p);.X. |
|000029d0| 20 20 20 7d 0a 58 09 2a | 73 20 3d 20 27 5c 30 27 | }.X.*|s = '\0'|
|000029e0| 3b 0a 58 20 20 20 20 7d | 0a 58 20 20 20 20 72 65 |;.X }|.X re|
|000029f0| 74 75 72 6e 20 73 74 72 | 69 6e 67 3b 0a 58 7d 0a |turn str|ing;.X}.|
|00002a00| 58 0a 58 0c 0a 58 0a 58 | 6d 61 69 6e 28 61 63 2c |X.X..X.X|main(ac,|
|00002a10| 20 61 76 29 0a 58 20 20 | 20 20 72 65 67 69 73 74 | av).X | regist|
|00002a20| 65 72 20 69 6e 74 09 61 | 63 3b 0a 58 20 20 20 20 |er int.a|c;.X |
|00002a30| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 2a 61 |register| char.*a|
|00002a40| 76 5b 5d 3b 0a 58 7b 0a | 58 20 20 20 20 72 65 67 |v[];.X{.|X reg|
|00002a50| 69 73 74 65 72 20 63 68 | 61 72 09 2a 2a 76 65 63 |ister ch|ar.**vec|
|00002a60| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00002a70| 63 68 61 72 09 2a 70 3b | 0a 58 20 20 20 20 72 65 |char.*p;|.X re|
|00002a80| 67 69 73 74 65 72 20 46 | 49 4c 45 09 2a 46 3b 0a |gister F|ILE.*F;.|
|00002a90| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 46 49 |X reg|ister FI|
|00002aa0| 4c 45 09 2a 49 6e 66 69 | 6c 65 3b 0a 58 20 20 20 |LE.*Infi|le;.X |
|00002ab0| 20 48 42 55 46 09 09 48 | 3b 0a 58 20 20 20 20 63 | HBUF..H|;.X c|
|00002ac0| 68 61 72 09 09 2a 2a 69 | 76 3b 0a 58 20 20 20 20 |har..**i|v;.X |
|00002ad0| 63 68 61 72 09 09 62 75 | 66 66 5b 42 55 46 53 49 |char..bu|ff[BUFSI|
|00002ae0| 5a 5d 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 09 66 |Z];.X | int...f|
|00002af0| 64 5b 32 5d 3b 0a 58 20 | 20 20 20 69 6e 74 09 09 |d[2];.X | int..|
|00002b00| 09 46 6c 75 73 68 53 75 | 62 52 65 71 75 65 73 74 |.FlushSu|bRequest|
|00002b10| 73 3b 0a 58 20 20 20 20 | 69 6e 74 09 09 09 53 75 |s;.X |int...Su|
|00002b20| 62 6a 65 63 74 52 65 71 | 75 69 72 65 64 3b 0a 58 |bjectReq|uired;.X|
|00002b30| 20 20 20 20 69 6e 74 09 | 09 09 47 6f 74 45 71 75 | int.|..GotEqu|
|00002b40| 61 6c 73 3b 0a 58 0a 58 | 20 20 20 20 50 6e 61 6d |als;.X.X| Pnam|
|00002b50| 65 20 3d 20 28 28 50 6e | 61 6d 65 20 3d 20 52 44 |e = ((Pn|ame = RD|
|00002b60| 58 28 61 76 5b 30 5d 2c | 20 27 2f 27 29 29 20 3f |X(av[0],| '/')) ?|
|00002b70| 20 50 6e 61 6d 65 20 2b | 20 31 20 3a 20 61 76 5b | Pname +| 1 : av[|
|00002b80| 30 5d 29 3b 0a 58 20 20 | 20 20 49 6e 66 69 6c 65 |0]);.X | Infile|
|00002b90| 20 3d 20 73 74 64 69 6e | 3b 0a 58 0a 58 20 20 20 | = stdin|;.X.X |
|00002ba0| 20 2f 2a 20 52 65 6d 6f | 76 65 20 61 6e 79 20 74 | /* Remo|ve any t|
|00002bb0| 72 61 63 65 20 6f 66 20 | 77 68 6f 20 77 65 20 61 |race of |who we a|
|00002bc0| 72 65 2e 20 2a 2f 0a 58 | 20 20 20 20 54 72 69 6d |re. */.X| Trim|
|00002bd0| 45 6e 76 69 72 6f 6e 6d | 65 6e 74 28 29 3b 0a 58 |Environm|ent();.X|
|00002be0| 0a 58 20 20 20 20 2f 2a | 20 53 6f 20 74 68 61 74 |.X /*| So that|
|00002bf0| 20 63 6f 72 65 73 20 77 | 69 6c 6c 20 61 63 74 75 | cores w|ill actu|
|00002c00| 61 6c 6c 79 20 64 72 6f | 70 2e 2e 2e 20 2a 2f 0a |ally dro|p... */.|
|00002c10| 58 20 20 20 20 69 66 20 | 28 63 68 64 69 72 28 22 |X if |(chdir("|
|00002c20| 2f 74 6d 70 22 29 20 3c | 20 30 29 20 7b 0a 58 09 |/tmp") <| 0) {.X.|
|00002c30| 46 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |Fprintf(|stderr, |
|00002c40| 22 25 73 3a 20 20 43 61 | 6e 27 74 20 63 68 64 69 |"%s: Ca|n't chdi|
|00002c50| 72 28 2f 74 6d 70 29 2c | 20 25 73 2e 5c 6e 22 2c |r(/tmp),| %s.\n",|
|00002c60| 20 50 6e 61 6d 65 2c 0a | 58 09 20 20 20 20 73 74 | Pname,.|X. st|
|00002c70| 72 65 72 72 6f 72 28 65 | 72 72 6e 6f 29 29 3b 0a |rerror(e|rrno));.|
|00002c80| 58 09 65 78 69 74 28 45 | 58 5f 54 45 4d 50 46 41 |X.exit(E|X_TEMPFA|
|00002c90| 49 4c 29 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |IL);.X | }.X.X |
|00002ca0| 20 20 20 2f 2a 20 49 66 | 20 73 6f 6d 65 6f 6e 65 | /* If| someone|
|00002cb0| 20 77 61 6e 74 73 20 74 | 6f 20 73 68 75 74 20 64 | wants t|o shut d|
|00002cc0| 6f 77 6e 20 74 68 65 20 | 73 79 73 74 65 6d 2c 20 |own the |system, |
|00002cd0| 74 65 6c 6c 20 73 65 6e | 64 6d 61 69 6c 20 74 6f |tell sen|dmail to|
|00002ce0| 0a 58 20 20 20 20 20 2a | 20 74 72 79 20 61 67 61 |.X *| try aga|
|00002cf0| 69 6e 20 6c 61 74 65 72 | 2e 20 2a 2f 0a 58 20 20 |in later|. */.X |
|00002d00| 20 20 53 69 67 6e 61 6c | 28 53 49 47 54 45 52 4d | Signal|(SIGTERM|
|00002d10| 2c 20 53 69 67 5f 74 65 | 6d 70 66 61 69 6c 29 3b |, Sig_te|mpfail);|
|00002d20| 0a 58 0a 58 23 69 66 64 | 65 66 09 53 45 4e 44 4d |.X.X#ifd|ef.SENDM|
|00002d30| 41 49 4c 0a 58 20 20 20 | 20 2f 2a 20 46 69 72 73 |AIL.X | /* Firs|
|00002d40| 74 20 72 65 61 64 20 73 | 68 6f 75 6c 64 20 66 65 |t read s|hould fe|
|00002d50| 74 63 68 20 75 73 20 74 | 68 65 20 55 4e 49 58 20 |tch us t|he UNIX |
|00002d60| 46 72 6f 6d 5f 20 6c 69 | 6e 65 2e 20 20 4e 6f 74 |From_ li|ne. Not|
|00002d70| 20 64 6f 6e 65 20 69 6e | 20 4d 4d 44 46 2e 20 2a | done in| MMDF. *|
|00002d80| 2f 0a 58 20 20 20 20 69 | 66 20 28 66 67 65 74 73 |/.X i|f (fgets|
|00002d90| 28 62 75 66 66 2c 20 73 | 69 7a 65 6f 66 20 62 75 |(buff, s|izeof bu|
|00002da0| 66 66 2c 20 49 6e 66 69 | 6c 65 29 20 3d 3d 20 4e |ff, Infi|le) == N|
|00002db0| 55 4c 4c 29 0a 58 09 65 | 78 69 74 28 45 58 5f 4e |ULL).X.e|xit(EX_N|
|00002dc0| 4f 49 4e 50 55 54 29 3b | 0a 58 0a 58 20 20 20 20 |OINPUT);|.X.X |
|00002dd0| 69 66 20 28 21 45 51 6e | 28 62 75 66 66 2c 20 22 |if (!EQn|(buff, "|
|00002de0| 46 72 6f 6d 20 22 2c 20 | 35 29 29 20 7b 0a 58 09 |From ", |5)) {.X.|
|00002df0| 46 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |Fprintf(|stderr, |
|00002e00| 22 25 73 3a 20 20 49 6e | 70 75 74 20 64 69 64 6e |"%s: In|put didn|
|00002e10| 27 74 20 73 74 61 72 74 | 20 77 69 74 68 20 55 4e |'t start| with UN|
|00002e20| 49 58 20 46 72 6f 6d 20 | 6c 69 6e 65 3a 5c 6e 22 |IX From |line:\n"|
|00002e30| 2c 0a 58 09 20 20 20 20 | 50 6e 61 6d 65 29 3b 0a |,.X. |Pname);.|
|00002e40| 58 09 46 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |X.Fprint|f(stderr|
|00002e50| 2c 22 5c 74 25 73 2e 5c | 6e 22 2c 20 62 75 66 66 |,"\t%s.\|n", buff|
|00002e60| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 5f 44 41 54 |);.X.exi|t(EX_DAT|
|00002e70| 41 45 52 52 29 3b 0a 58 | 20 20 20 20 7d 0a 58 23 |AERR);.X| }.X#|
|00002e80| 65 6e 64 69 66 09 2f 2a | 20 53 45 4e 44 4d 41 49 |endif./*| SENDMAI|
|00002e90| 4c 20 2a 2f 0a 58 0a 58 | 20 20 20 20 2f 2a 20 52 |L */.X.X| /* R|
|00002ea0| 65 61 64 20 74 68 65 20 | 6d 61 69 6c 20 68 65 61 |ead the |mail hea|
|00002eb0| 64 65 72 2e 20 2a 2f 0a | 58 20 20 20 20 72 66 63 |der. */.|X rfc|
|00002ec0| 38 32 32 72 65 61 64 28 | 26 48 2c 20 49 6e 66 69 |822read(|&H, Infi|
|00002ed0| 6c 65 2c 20 62 75 66 66 | 2c 20 73 69 7a 65 6f 66 |le, buff|, sizeof|
|00002ee0| 20 62 75 66 66 29 3b 0a | 58 0a 58 20 20 20 20 2f | buff);.|X.X /|
|00002ef0| 2a 20 50 72 6f 63 65 73 | 73 20 74 68 65 20 61 72 |* Proces|s the ar|
|00002f00| 67 75 6d 65 6e 74 20 6c | 69 73 74 2c 20 63 6f 70 |gument l|ist, cop|
|00002f10| 79 69 6e 67 20 61 6e 79 | 74 68 69 6e 67 20 74 68 |ying any|thing th|
|00002f20| 61 74 20 77 65 20 64 6f | 6e 27 74 20 72 65 63 6f |at we do|n't reco|
|00002f30| 67 6e 69 7a 65 0a 58 20 | 20 20 20 20 2a 20 6f 76 |gnize.X | * ov|
|00002f40| 65 72 20 74 6f 20 74 68 | 65 20 69 6e 65 77 73 20 |er to th|e inews |
|00002f50| 61 72 67 75 6d 65 6e 74 | 20 6c 69 73 74 20 61 6e |argument| list an|
|00002f60| 64 20 63 68 61 6e 67 69 | 6e 67 20 74 68 69 6e 67 |d changi|ng thing|
|00002f70| 73 20 61 73 20 77 65 20 | 73 65 65 20 66 69 74 2e |s as we |see fit.|
|00002f80| 20 2a 2f 0a 58 20 20 20 | 20 46 6c 75 73 68 53 75 | */.X | FlushSu|
|00002f90| 62 52 65 71 75 65 73 74 | 73 20 3d 20 46 41 4c 53 |bRequest|s = FALS|
|00002fa0| 45 3b 0a 58 20 20 20 20 | 47 6f 74 45 71 75 61 6c |E;.X |GotEqual|
|00002fb0| 73 20 3d 20 46 41 4c 53 | 45 3b 0a 58 20 20 20 20 |s = FALS|E;.X |
|00002fc0| 53 75 62 6a 65 63 74 52 | 65 71 75 69 72 65 64 20 |SubjectR|equired |
|00002fd0| 3d 20 54 52 55 45 3b 0a | 58 20 20 20 20 69 76 20 |= TRUE;.|X iv |
|00002fe0| 3d 20 4e 45 57 28 63 68 | 61 72 2a 2c 20 61 63 2b |= NEW(ch|ar*, ac+|
|00002ff0| 20 32 29 3b 0a 58 20 20 | 20 20 69 76 5b 30 5d 20 | 2);.X | iv[0] |
|00003000| 3d 20 49 4e 45 57 53 3b | 0a 58 20 20 20 20 69 76 |= INEWS;|.X iv|
|00003010| 5b 31 5d 20 3d 20 22 2d | 68 22 3b 0a 58 20 20 20 |[1] = "-|h";.X |
|00003020| 20 66 6f 72 20 28 76 65 | 63 20 3d 20 69 76 20 2b | for (ve|c = iv +|
|00003030| 20 32 3b 20 70 20 3d 20 | 2a 2b 2b 61 76 3b 20 29 | 2; p = |*++av; )|
|00003040| 0a 58 09 69 66 20 28 70 | 5b 30 5d 20 21 3d 20 27 |.X.if (p|[0] != '|
|00003050| 2d 27 29 0a 58 09 20 20 | 20 20 2a 76 65 63 2b 2b |-').X. | *vec++|
|00003060| 20 3d 20 70 3b 0a 58 09 | 20 65 6c 73 65 0a 58 09 | = p;.X.| else.X.|
|00003070| 20 20 20 20 73 77 69 74 | 63 68 28 70 5b 31 5d 29 | swit|ch(p[1])|
|00003080| 20 7b 0a 58 09 20 20 20 | 20 63 61 73 65 20 27 78 | {.X. | case 'x|
|00003090| 27 3a 0a 58 09 09 53 75 | 62 6a 65 63 74 52 65 71 |':.X..Su|bjectReq|
|000030a0| 75 69 72 65 64 20 3d 20 | 46 41 4c 53 45 3b 0a 58 |uired = |FALSE;.X|
|000030b0| 09 09 2f 2a 20 46 41 4c | 4c 54 48 52 4f 55 47 48 |../* FAL|LTHROUGH|
|000030c0| 20 2a 2f 0a 58 09 20 20 | 20 20 64 65 66 61 75 6c | */.X. | defaul|
|000030d0| 74 3a 0a 58 09 09 2a 76 | 65 63 2b 2b 20 3d 20 70 |t:.X..*v|ec++ = p|
|000030e0| 3b 0a 58 09 09 62 72 65 | 61 6b 3b 0a 58 09 20 20 |;.X..bre|ak;.X. |
|000030f0| 20 20 63 61 73 65 20 27 | 3d 27 3a 0a 58 09 09 69 | case '|=':.X..i|
|00003100| 66 20 28 21 47 6f 74 45 | 71 75 61 6c 73 29 0a 58 |f (!GotE|quals).X|
|00003110| 09 09 20 20 20 20 69 76 | 2b 2b 3b 0a 58 09 09 69 |.. iv|++;.X..i|
|00003120| 76 5b 30 5d 20 3d 20 70 | 5b 32 5d 20 3f 20 26 70 |v[0] = p|[2] ? &p|
|00003130| 5b 32 5d 20 3a 20 2a 2b | 2b 61 76 3b 0a 58 09 09 |[2] : *+|+av;.X..|
|00003140| 47 6f 74 45 71 75 61 6c | 73 2b 2b 3b 0a 58 09 09 |GotEqual|s++;.X..|
|00003150| 62 72 65 61 6b 3b 0a 58 | 09 20 20 20 20 63 61 73 |break;.X|. cas|
|00003160| 65 20 27 2e 27 3a 0a 58 | 09 09 44 65 62 75 67 67 |e '.':.X|..Debugg|
|00003170| 69 6e 67 2b 2b 3b 0a 58 | 09 09 62 72 65 61 6b 3b |ing++;.X|..break;|
|00003180| 0a 58 09 20 20 20 20 63 | 61 73 65 20 27 6e 27 3a |.X. c|ase 'n':|
|00003190| 0a 58 09 09 2f 2a 20 4e | 65 77 73 67 72 6f 75 70 |.X../* N|ewsgroup|
|000031a0| 20 74 68 69 73 20 6d 65 | 73 73 61 67 65 73 20 67 | this me|ssages g|
|000031b0| 6f 65 73 20 74 6f 2e 20 | 2a 2f 0a 58 09 09 53 74 |oes to. |*/.X..St|
|000031c0| 72 63 70 79 28 48 2e 6e | 62 75 66 2c 20 70 5b 32 |rcpy(H.n|buf, p[2|
|000031d0| 5d 20 3f 20 26 70 5b 32 | 5d 20 3a 20 2a 2b 2b 61 |] ? &p[2|] : *++a|
|000031e0| 76 29 3b 0a 58 09 09 62 | 72 65 61 6b 3b 0a 58 09 |v);.X..b|reak;.X.|
|000031f0| 20 20 20 20 63 61 73 65 | 20 27 6f 27 3a 0a 58 09 | case| 'o':.X.|
|00003200| 09 2f 2a 20 44 65 66 61 | 75 6c 74 20 6f 72 67 61 |./* Defa|ult orga|
|00003210| 6e 69 7a 61 74 69 6f 6e | 2e 20 2a 2f 0a 58 09 09 |nization|. */.X..|
|00003220| 69 66 20 28 48 2e 6f 72 | 67 61 6e 69 7a 61 74 69 |if (H.or|ganizati|
|00003230| 6f 6e 5b 30 5d 20 3d 3d | 20 27 5c 30 27 29 0a 58 |on[0] ==| '\0').X|
|00003240| 09 09 20 20 20 20 53 74 | 72 63 70 79 28 48 2e 6f |.. St|rcpy(H.o|
|00003250| 72 67 61 6e 69 7a 61 74 | 69 6f 6e 2c 20 48 61 63 |rganizat|ion, Hac|
|00003260| 6b 50 65 72 69 6f 64 73 | 28 70 5b 32 5d 20 3f 20 |kPeriods|(p[2] ? |
|00003270| 26 70 5b 32 5d 20 3a 20 | 2a 2b 2b 61 76 29 29 3b |&p[2] : |*++av));|
|00003280| 0a 58 09 09 65 6c 73 65 | 20 69 66 20 28 70 5b 32 |.X..else| if (p[2|
|00003290| 5d 20 3d 3d 20 27 5c 30 | 27 29 0a 58 09 09 20 20 |] == '\0|').X.. |
|000032a0| 20 20 61 76 2b 2b 3b 0a | 58 09 09 53 75 62 6a 65 | av++;.|X..Subje|
|000032b0| 63 74 52 65 71 75 69 72 | 65 64 20 3d 20 46 41 4c |ctRequir|ed = FAL|
|000032c0| 53 45 3b 0a 58 09 09 62 | 72 65 61 6b 3b 0a 58 09 |SE;.X..b|reak;.X.|
|000032d0| 20 20 20 20 63 61 73 65 | 20 27 46 27 3a 0a 58 09 | case| 'F':.X.|
|000032e0| 09 46 6c 75 73 68 53 75 | 62 52 65 71 75 65 73 74 |.FlushSu|bRequest|
|000032f0| 73 20 3d 20 54 52 55 45 | 3b 0a 58 09 09 62 72 65 |s = TRUE|;.X..bre|
|00003300| 61 6b 3b 0a 58 09 20 20 | 20 20 7d 0a 58 20 20 20 |ak;.X. | }.X |
|00003310| 20 2a 76 65 63 2b 2b 20 | 3d 20 4e 55 4c 4c 3b 0a | *vec++ |= NULL;.|
|00003320| 58 0a 58 20 20 20 20 2f | 2a 20 42 61 73 68 20 6f |X.X /|* Bash o|
|00003330| 6e 20 74 68 65 20 6d 61 | 69 6c 20 68 65 61 64 65 |n the ma|il heade|
|00003340| 72 2e 20 2a 2f 0a 58 20 | 20 20 20 69 66 20 28 70 |r. */.X | if (p|
|00003350| 20 3d 20 48 61 63 6b 48 | 65 61 64 65 72 28 26 48 | = HackH|eader(&H|
|00003360| 2c 20 53 75 62 6a 65 63 | 74 52 65 71 75 69 72 65 |, Subjec|tRequire|
|00003370| 64 29 29 20 7b 0a 58 09 | 46 70 72 69 6e 74 66 28 |d)) {.X.|Fprintf(|
|00003380| 73 74 64 65 72 72 2c 20 | 22 25 73 3a 20 20 52 65 |stderr, |"%s: Re|
|00003390| 6a 65 63 74 65 64 20 62 | 79 20 6e 65 74 6e 65 77 |jected b|y netnew|
|000033a0| 73 20 62 65 63 61 75 73 | 65 3a 5c 6e 22 2c 20 50 |s becaus|e:\n", P|
|000033b0| 6e 61 6d 65 29 3b 0a 58 | 09 46 70 72 69 6e 74 66 |name);.X|.Fprintf|
|000033c0| 28 73 74 64 65 72 72 2c | 20 22 5c 74 25 73 2e 5c |(stderr,| "\t%s.\|
|000033d0| 6e 22 2c 20 70 29 3b 0a | 58 09 69 66 20 28 48 2e |n", p);.|X.if (H.|
|000033e0| 6e 62 75 66 5b 30 5d 29 | 0a 58 09 20 20 20 20 46 |nbuf[0])|.X. F|
|000033f0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00003400| 5c 74 49 74 20 77 61 73 | 20 67 6f 69 6e 67 20 69 |\tIt was| going i|
|00003410| 6e 74 6f 20 74 68 65 20 | 6e 65 77 73 67 72 6f 75 |nto the |newsgrou|
|00003420| 70 25 73 20 25 73 2e 5c | 6e 22 2c 0a 58 09 09 49 |p%s %s.\|n",.X..I|
|00003430| 44 58 28 48 2e 6e 62 75 | 66 2c 20 4e 47 44 45 4c |DX(H.nbu|f, NGDEL|
|00003440| 49 4d 29 20 3f 20 22 73 | 22 20 3a 20 22 22 2c 20 |IM) ? "s|" : "", |
|00003450| 48 2e 6e 62 75 66 29 3b | 0a 58 09 65 78 69 74 28 |H.nbuf);|.X.exit(|
|00003460| 45 58 5f 44 41 54 41 45 | 52 52 29 3b 0a 58 20 20 |EX_DATAE|RR);.X |
|00003470| 20 20 7d 0a 58 20 20 20 | 20 45 64 69 74 6e 65 77 | }.X | Editnew|
|00003480| 73 67 72 6f 75 70 73 28 | 26 48 29 3b 0a 58 0a 58 |sgroups(|&H);.X.X|
|00003490| 20 20 20 20 69 66 20 28 | 44 65 62 75 67 67 69 6e | if (|Debuggin|
|000034a0| 67 29 20 7b 0a 58 09 66 | 6f 72 20 28 76 65 63 20 |g) {.X.f|or (vec |
|000034b0| 3d 20 69 76 3b 20 2a 76 | 65 63 3b 20 76 65 63 2b |= iv; *v|ec; vec+|
|000034c0| 2b 29 0a 58 09 20 20 20 | 20 28 76 6f 69 64 29 70 |+).X. | (void)p|
|000034d0| 72 69 6e 74 66 28 22 20 | 7c 25 73 7c 20 22 2c 20 |rintf(" ||%s| ", |
|000034e0| 2a 76 65 63 29 3b 0a 58 | 09 28 76 6f 69 64 29 70 |*vec);.X|.(void)p|
|000034f0| 72 69 6e 74 66 28 22 5c | 6e 22 29 3b 0a 58 09 69 |rintf("\|n");.X.i|
|00003500| 66 20 28 21 72 66 63 38 | 32 32 77 72 69 74 65 28 |f (!rfc8|22write(|
|00003510| 26 48 2c 20 73 74 64 6f | 75 74 29 29 0a 58 09 20 |&H, stdo|ut)).X. |
|00003520| 20 20 20 46 70 72 69 6e | 74 66 28 73 74 64 65 72 | Fprin|tf(stder|
|00003530| 72 2c 20 22 25 73 3a 20 | 20 43 61 6e 27 74 20 77 |r, "%s: | Can't w|
|00003540| 72 69 74 65 20 68 65 61 | 64 65 72 2c 20 25 73 2e |rite hea|der, %s.|
|00003550| 5c 6e 22 2c 0a 58 09 09 | 50 6e 61 6d 65 2c 20 73 |\n",.X..|Pname, s|
|00003560| 74 72 65 72 72 6f 72 28 | 65 72 72 6e 6f 29 29 3b |trerror(|errno));|
|00003570| 0a 58 09 77 68 69 6c 65 | 20 28 66 67 65 74 73 28 |.X.while| (fgets(|
|00003580| 62 75 66 66 2c 20 73 69 | 7a 65 6f 66 20 62 75 66 |buff, si|zeof buf|
|00003590| 66 2c 20 49 6e 66 69 6c | 65 29 29 0a 58 09 20 20 |f, Infil|e)).X. |
|000035a0| 20 20 46 70 75 74 73 28 | 62 75 66 66 2c 20 73 74 | Fputs(|buff, st|
|000035b0| 64 6f 75 74 29 3b 0a 58 | 09 65 78 69 74 28 45 58 |dout);.X|.exit(EX|
|000035c0| 5f 4f 4b 29 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |_OK);.X | }.X.X|
|000035d0| 20 20 20 20 69 66 20 28 | 46 6c 75 73 68 53 75 62 | if (|FlushSub|
|000035e0| 52 65 71 75 65 73 74 73 | 20 26 26 20 28 49 6e 66 |Requests| && (Inf|
|000035f0| 69 6c 65 20 3d 20 49 73 | 53 75 62 52 65 71 75 65 |ile = Is|SubReque|
|00003600| 73 74 28 49 6e 66 69 6c | 65 29 29 20 3d 3d 20 4e |st(Infil|e)) == N|
|00003610| 55 4c 4c 29 20 7b 0a 58 | 09 46 70 72 69 6e 74 66 |ULL) {.X|.Fprintf|
|00003620| 28 73 74 64 65 72 72 2c | 20 22 25 73 3a 20 20 52 |(stderr,| "%s: R|
|00003630| 65 6a 65 63 74 65 64 20 | 62 79 20 6e 65 74 6e 65 |ejected |by netne|
|00003640| 77 73 20 62 65 63 61 73 | 65 3a 5c 6e 22 2c 20 50 |ws becas|e:\n", P|
|00003650| 6e 61 6d 65 29 3b 0a 58 | 09 46 70 72 69 6e 74 66 |name);.X|.Fprintf|
|00003660| 28 73 74 64 65 72 72 2c | 20 22 5c 74 49 74 20 73 |(stderr,| "\tIt s|
|00003670| 65 65 6d 73 20 6c 69 6b | 65 20 61 20 73 75 62 73 |eems lik|e a subs|
|00003680| 63 72 69 70 74 69 6f 6e | 20 72 65 71 75 65 73 74 |cription| request|
|00003690| 2e 5c 6e 22 29 3b 0a 58 | 09 65 78 69 74 28 45 58 |.\n");.X|.exit(EX|
|000036a0| 5f 44 41 54 41 45 52 52 | 29 3b 0a 58 20 20 20 20 |_DATAERR|);.X |
|000036b0| 7d 0a 58 0a 58 20 20 20 | 20 2f 2a 20 47 65 74 20 |}.X.X | /* Get |
|000036c0| 72 65 61 64 79 20 74 6f | 20 73 70 61 77 6e 20 61 |ready to| spawn a|
|000036d0| 6e 20 69 6e 65 77 73 2e | 20 2a 2f 0a 58 20 20 20 |n inews.| */.X |
|000036e0| 20 69 66 20 28 70 69 70 | 65 28 66 64 29 20 3c 20 | if (pip|e(fd) < |
|000036f0| 30 29 20 7b 0a 58 09 46 | 70 72 69 6e 74 66 28 73 |0) {.X.F|printf(s|
|00003700| 74 64 65 72 72 2c 20 22 | 25 73 3a 20 20 43 61 6e |tderr, "|%s: Can|
|00003710| 27 74 20 70 69 70 65 2c | 20 25 73 2e 5c 6e 22 2c |'t pipe,| %s.\n",|
|00003720| 20 50 6e 61 6d 65 2c 20 | 73 74 72 65 72 72 6f 72 | Pname, |strerror|
|00003730| 28 65 72 72 6e 6f 29 29 | 3b 0a 58 09 65 78 69 74 |(errno))|;.X.exit|
|00003740| 28 45 58 5f 54 45 4d 50 | 46 41 49 4c 29 3b 0a 58 |(EX_TEMP|FAIL);.X|
|00003750| 20 20 20 20 7d 0a 58 20 | 20 20 20 46 66 6c 75 73 | }.X | Fflus|
|00003760| 68 28 73 74 64 65 72 72 | 29 3b 0a 58 20 20 20 20 |h(stderr|);.X |
|00003770| 46 66 6c 75 73 68 28 73 | 74 64 6f 75 74 29 3b 0a |Fflush(s|tdout);.|
|00003780| 58 23 69 66 64 65 66 09 | 53 49 47 43 48 4c 44 0a |X#ifdef.|SIGCHLD.|
|00003790| 58 20 20 20 20 53 69 67 | 6e 61 6c 28 53 49 47 43 |X Sig|nal(SIGC|
|000037a0| 48 4c 44 2c 20 63 68 69 | 6c 64 67 6f 6e 65 29 3b |HLD, chi|ldgone);|
|000037b0| 0a 58 23 65 6e 64 69 66 | 09 2f 2a 20 53 49 47 43 |.X#endif|./* SIGC|
|000037c0| 48 4c 44 20 2a 2f 0a 58 | 23 69 66 64 65 66 09 53 |HLD */.X|#ifdef.S|
|000037d0| 49 47 43 4c 44 0a 58 20 | 20 20 20 53 69 67 6e 61 |IGCLD.X | Signa|
|000037e0| 6c 28 53 49 47 43 4c 44 | 2c 20 63 68 69 6c 64 67 |l(SIGCLD|, childg|
|000037f0| 6f 6e 65 29 3b 0a 58 23 | 65 6e 64 69 66 09 2f 2a |one);.X#|endif./*|
|00003800| 20 53 49 47 43 4c 44 20 | 2a 2f 0a 58 0a 58 20 20 | SIGCLD |*/.X.X |
|00003810| 20 20 69 66 20 28 28 43 | 68 69 6c 64 50 69 64 20 | if ((C|hildPid |
|00003820| 3d 20 66 6f 72 6b 28 29 | 29 20 3c 20 30 29 20 7b |= fork()|) < 0) {|
|00003830| 0a 58 09 46 70 72 69 6e | 74 66 28 73 74 64 65 72 |.X.Fprin|tf(stder|
|00003840| 72 2c 22 25 73 3a 20 20 | 43 61 6e 27 74 20 66 6f |r,"%s: |Can't fo|
|00003850| 72 6b 2c 20 25 73 2e 5c | 6e 22 2c 20 50 6e 61 6d |rk, %s.\|n", Pnam|
|00003860| 65 2c 20 73 74 72 65 72 | 72 6f 72 28 65 72 72 6e |e, strer|ror(errn|
|00003870| 6f 29 29 3b 0a 58 09 65 | 78 69 74 28 45 58 5f 54 |o));.X.e|xit(EX_T|
|00003880| 45 4d 50 46 41 49 4c 29 | 3b 0a 58 20 20 20 20 7d |EMPFAIL)|;.X }|
|00003890| 0a 58 20 20 20 20 69 66 | 20 28 43 68 69 6c 64 50 |.X if| (ChildP|
|000038a0| 69 64 20 3d 3d 20 30 29 | 20 7b 0a 58 09 2f 2a 20 |id == 0)| {.X./* |
|000038b0| 52 65 64 69 72 65 63 74 | 20 49 2f 4f 3b 20 69 74 |Redirect| I/O; it|
|000038c0| 27 73 20 75 6e 6c 69 6b | 65 6c 79 20 74 68 65 20 |'s unlik|ely the |
|000038d0| 74 65 73 74 20 62 65 6c | 6f 77 20 77 69 6c 6c 20 |test bel|ow will |
|000038e0| 66 61 69 6c 2e 20 2a 2f | 0a 58 09 69 66 20 28 66 |fail. */|.X.if (f|
|000038f0| 64 5b 50 49 50 45 5f 52 | 45 41 44 45 52 5d 20 21 |d[PIPE_R|EADER] !|
|00003900| 3d 20 53 54 44 49 4e 29 | 20 7b 0a 58 09 20 20 20 |= STDIN)| {.X. |
|00003910| 20 43 6c 6f 73 65 28 53 | 54 44 49 4e 29 3b 0a 58 | Close(S|TDIN);.X|
|00003920| 09 20 20 20 20 69 66 20 | 28 64 75 70 28 66 64 5b |. if |(dup(fd[|
|00003930| 50 49 50 45 5f 52 45 41 | 44 45 52 5d 29 20 21 3d |PIPE_REA|DER]) !=|
|00003940| 20 53 54 44 49 4e 29 0a | 58 09 09 46 70 72 69 6e | STDIN).|X..Fprin|
|00003950| 74 66 28 73 74 64 65 72 | 72 2c 20 22 25 73 3a 20 |tf(stder|r, "%s: |
|00003960| 20 43 61 6e 27 74 20 72 | 65 64 69 72 65 63 74 20 | Can't r|edirect |
|00003970| 69 6e 70 75 74 2c 20 25 | 73 2e 5c 6e 22 2c 0a 58 |input, %|s.\n",.X|
|00003980| 09 09 20 20 20 20 50 6e | 61 6d 65 2c 20 73 74 72 |.. Pn|ame, str|
|00003990| 65 72 72 6f 72 28 65 72 | 72 6e 6f 29 29 3b 0a 58 |error(er|rno));.X|
|000039a0| 09 7d 0a 58 09 43 6c 6f | 73 65 28 66 64 5b 50 49 |.}.X.Clo|se(fd[PI|
|000039b0| 50 45 5f 52 45 41 44 45 | 52 5d 29 3b 0a 58 09 43 |PE_READE|R]);.X.C|
|000039c0| 6c 6f 73 65 28 66 64 5b | 50 49 50 45 5f 57 52 49 |lose(fd[|PIPE_WRI|
|000039d0| 54 45 52 5d 29 3b 0a 58 | 09 28 76 6f 69 64 29 65 |TER]);.X|.(void)e|
|000039e0| 78 65 63 76 28 69 76 5b | 30 5d 2c 20 69 76 29 3b |xecv(iv[|0], iv);|
|000039f0| 0a 58 09 46 70 72 69 6e | 74 66 28 73 74 64 65 72 |.X.Fprin|tf(stder|
|00003a00| 72 2c 20 22 25 73 3a 20 | 20 43 61 6e 27 74 20 65 |r, "%s: | Can't e|
|00003a10| 78 65 63 20 25 73 2c 20 | 25 73 2e 5c 6e 22 2c 0a |xec %s, |%s.\n",.|
|00003a20| 58 09 20 20 20 20 50 6e | 61 6d 65 2c 20 69 76 5b |X. Pn|ame, iv[|
|00003a30| 30 5d 2c 20 73 74 72 65 | 72 72 6f 72 28 65 72 72 |0], stre|rror(err|
|00003a40| 6e 6f 29 29 3b 0a 58 09 | 65 78 69 74 28 45 58 5f |no));.X.|exit(EX_|
|00003a50| 4f 53 45 52 52 29 3b 0a | 58 20 20 20 20 7d 0a 58 |OSERR);.|X }.X|
|00003a60| 0a 58 20 20 20 20 2f 2a | 20 53 65 74 20 74 68 69 |.X /*| Set thi|
|00003a70| 6e 67 73 20 75 70 20 61 | 66 74 65 72 20 74 68 65 |ngs up a|fter the|
|00003a80| 20 66 6f 72 6b 2e 20 2a | 2f 0a 58 20 20 20 20 43 | fork. *|/.X C|
|00003a90| 6c 6f 73 65 28 66 64 5b | 50 49 50 45 5f 52 45 41 |lose(fd[|PIPE_REA|
|00003aa0| 44 45 52 5d 29 3b 0a 58 | 20 20 20 20 53 69 67 6e |DER]);.X| Sign|
|00003ab0| 61 6c 28 53 49 47 50 49 | 50 45 2c 20 63 68 69 6c |al(SIGPI|PE, chil|
|00003ac0| 64 67 6f 6e 65 29 3b 0a | 58 20 20 20 20 69 66 20 |dgone);.|X if |
|00003ad0| 28 28 46 20 3d 20 66 64 | 6f 70 65 6e 28 66 64 5b |((F = fd|open(fd[|
|00003ae0| 50 49 50 45 5f 57 52 49 | 54 45 52 5d 2c 20 22 77 |PIPE_WRI|TER], "w|
|00003af0| 22 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 65 |")) == N|ULL).X.e|
|00003b00| 78 69 74 28 45 58 5f 4f | 53 45 52 52 29 3b 0a 58 |xit(EX_O|SERR);.X|
|00003b10| 0a 58 20 20 20 20 2f 2a | 20 53 74 75 66 66 20 74 |.X /*| Stuff t|
|00003b20| 68 65 20 68 65 61 64 65 | 72 2e 20 2a 2f 0a 58 20 |he heade|r. */.X |
|00003b30| 20 20 20 69 66 20 28 21 | 72 66 63 38 32 32 77 72 | if (!|rfc822wr|
|00003b40| 69 74 65 28 26 48 2c 20 | 46 29 29 20 7b 0a 58 09 |ite(&H, |F)) {.X.|
|00003b50| 46 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |Fprintf(|stderr, |
|00003b60| 22 25 73 3a 20 20 43 61 | 6e 27 74 20 77 72 69 74 |"%s: Ca|n't writ|
|00003b70| 65 20 68 65 61 64 65 72 | 2c 20 25 73 2e 5c 6e 22 |e header|, %s.\n"|
|00003b80| 2c 0a 58 09 20 20 20 20 | 50 6e 61 6d 65 2c 20 73 |,.X. |Pname, s|
|00003b90| 74 72 65 72 72 6f 72 28 | 65 72 72 6e 6f 29 29 3b |trerror(|errno));|
|00003ba0| 0a 58 09 65 78 69 74 28 | 45 58 5f 49 4f 45 52 52 |.X.exit(|EX_IOERR|
|00003bb0| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 0a 58 20 20 20 |);.X |}.X.X |
|00003bc0| 20 2f 2a 20 57 72 69 74 | 65 20 74 68 65 20 72 65 | /* Writ|e the re|
|00003bd0| 73 74 20 6f 66 20 74 68 | 65 20 6d 65 73 73 61 67 |st of th|e messag|
|00003be0| 65 2e 20 2a 2f 0a 58 20 | 20 20 20 77 68 69 6c 65 |e. */.X | while|
|00003bf0| 20 28 66 67 65 74 73 28 | 62 75 66 66 2c 20 73 69 | (fgets(|buff, si|
|00003c00| 7a 65 6f 66 20 62 75 66 | 66 2c 20 49 6e 66 69 6c |zeof buf|f, Infil|
|00003c10| 65 29 29 20 7b 0a 58 09 | 46 70 75 74 73 28 62 75 |e)) {.X.|Fputs(bu|
|00003c20| 66 66 2c 20 46 29 3b 0a | 58 09 69 66 20 28 66 65 |ff, F);.|X.if (fe|
|00003c30| 72 72 6f 72 28 46 29 29 | 0a 58 09 20 20 20 20 62 |rror(F))|.X. b|
|00003c40| 72 65 61 6b 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |reak;.X | }.X.X|
|00003c50| 20 20 20 20 2f 2a 20 43 | 6c 6f 73 65 20 64 6f 77 | /* C|lose dow|
|00003c60| 6e 20 74 68 65 20 70 69 | 70 65 2e 20 2a 2f 0a 58 |n the pi|pe. */.X|
|00003c70| 20 20 20 20 46 66 6c 75 | 73 68 28 46 29 3b 0a 58 | Fflu|sh(F);.X|
|00003c80| 20 20 20 20 69 66 20 28 | 66 65 72 72 6f 72 28 46 | if (|ferror(F|
|00003c90| 29 29 20 7b 0a 58 09 46 | 70 72 69 6e 74 66 28 73 |)) {.X.F|printf(s|
|00003ca0| 74 64 65 72 72 2c 20 22 | 25 73 3a 20 20 45 72 72 |tderr, "|%s: Err|
|00003cb0| 6f 72 20 66 6c 75 73 68 | 69 6e 67 20 70 69 70 65 |or flush|ing pipe|
|00003cc0| 20 74 6f 20 6e 65 77 73 | 2c 20 25 73 2e 5c 6e 22 | to news|, %s.\n"|
|00003cd0| 2c 0a 58 09 20 20 20 20 | 50 6e 61 6d 65 2c 20 73 |,.X. |Pname, s|
|00003ce0| 74 72 65 72 72 6f 72 28 | 65 72 72 6e 6f 29 29 3b |trerror(|errno));|
|00003cf0| 0a 58 09 65 78 69 74 28 | 45 58 5f 49 4f 45 52 52 |.X.exit(|EX_IOERR|
|00003d00| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 69 |);.X |}.X i|
|00003d10| 66 20 28 66 63 6c 6f 73 | 65 28 46 29 20 3d 3d 20 |f (fclos|e(F) == |
|00003d20| 45 4f 46 29 0a 58 09 46 | 70 72 69 6e 74 66 28 73 |EOF).X.F|printf(s|
|00003d30| 74 64 65 72 72 2c 20 22 | 25 73 3a 20 20 45 72 72 |tderr, "|%s: Err|
|00003d40| 6f 72 20 63 6c 6f 73 69 | 6e 67 20 70 69 70 65 20 |or closi|ng pipe |
|00003d50| 74 6f 20 6e 65 77 73 2c | 20 25 73 2e 5c 6e 22 2c |to news,| %s.\n",|
|00003d60| 0a 58 09 20 20 20 20 50 | 6e 61 6d 65 2c 20 73 74 |.X. P|name, st|
|00003d70| 72 65 72 72 6f 72 28 65 | 72 72 6e 6f 29 29 3b 0a |rerror(e|rrno));.|
|00003d80| 58 0a 58 20 20 20 20 2f | 2a 20 57 61 69 74 20 66 |X.X /|* Wait f|
|00003d90| 6f 72 20 69 6e 65 77 73 | 2c 20 61 6e 64 20 65 78 |or inews|, and ex|
|00003da0| 69 74 20 61 73 20 69 74 | 20 64 6f 65 73 2e 20 2a |it as it| does. *|
|00003db0| 2f 0a 58 20 20 20 20 63 | 68 69 6c 64 67 6f 6e 65 |/.X c|hildgone|
|00003dc0| 28 29 3b 0a 58 20 20 20 | 20 2f 2a 20 4e 4f 54 52 |();.X | /* NOTR|
|00003dd0| 45 41 43 48 45 44 20 2a | 2f 0a 58 7d 0a 45 4e 44 |EACHED *|/.X}.END|
|00003de0| 5f 4f 46 5f 46 49 4c 45 | 0a 20 20 69 66 20 74 65 |_OF_FILE|. if te|
|00003df0| 73 74 20 31 34 31 31 33 | 20 2d 6e 65 20 60 77 63 |st 14113| -ne `wc|
|00003e00| 20 2d 63 20 3c 27 6d 61 | 69 6c 32 6e 65 77 73 2e | -c <'ma|il2news.|
|00003e10| 63 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |c'`; the|n. ec|
|00003e20| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 6d 61 69 6c |ho shar:| \"'mail|
|00003e30| 32 6e 65 77 73 2e 63 27 | 5c 22 20 75 6e 70 61 63 |2news.c'|\" unpac|
|00003e40| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00003e50| 69 7a 65 21 0a 20 20 66 | 69 0a 20 20 23 20 65 6e |ize!. f|i. # en|
|00003e60| 64 20 6f 66 20 27 6d 61 | 69 6c 32 6e 65 77 73 2e |d of 'ma|il2news.|
|00003e70| 63 27 0a 66 69 0a 69 66 | 20 74 65 73 74 20 2d 66 |c'.fi.if| test -f|
|00003e80| 20 27 6d 6b 6d 61 69 6c | 70 6f 73 74 2e 73 68 27 | 'mkmail|post.sh'|
|00003e90| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00003ea0| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00003eb0| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00003ec0| 20 63 6c 6f 62 62 65 72 | 20 65 78 69 73 74 69 6e | clobber| existin|
|00003ed0| 67 20 66 69 6c 65 20 5c | 22 27 6d 6b 6d 61 69 6c |g file \|"'mkmail|
|00003ee0| 70 6f 73 74 2e 73 68 27 | 5c 22 0a 65 6c 73 65 0a |post.sh'|\".else.|
|00003ef0| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 | echo s|har: Ext|
|00003f00| 72 61 63 74 69 6e 67 20 | 5c 22 27 6d 6b 6d 61 69 |racting |\"'mkmai|
|00003f10| 6c 70 6f 73 74 2e 73 68 | 27 5c 22 20 5c 28 31 32 |lpost.sh|'\" \(12|
|00003f20| 30 36 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |06 chara|cters\).|
|00003f30| 20 20 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e | sed "s|/^X//" >|
|00003f40| 27 6d 6b 6d 61 69 6c 70 | 6f 73 74 2e 73 68 27 20 |'mkmailp|ost.sh' |
|00003f50| 3c 3c 27 45 4e 44 5f 4f | 46 5f 46 49 4c 45 27 0a |<<'END_O|F_FILE'.|
|00003f60| 58 23 21 20 2f 62 69 6e | 2f 73 68 0a 58 23 23 20 |X#! /bin|/sh.X## |
|00003f70| 20 24 48 65 61 64 65 72 | 3a 20 2f 6e 66 73 2f 70 | $Header|: /nfs/p|
|00003f80| 61 70 61 79 61 2f 75 32 | 2f 72 73 61 6c 7a 2f 73 |apaya/u2|/rsalz/s|
|00003f90| 72 63 2f 6e 65 77 73 67 | 61 74 65 2f 73 72 63 2f |rc/newsg|ate/src/|
|00003fa0| 52 43 53 2f 6d 6b 6d 61 | 69 6c 70 6f 73 74 2e 73 |RCS/mkma|ilpost.s|
|00003fb0| 68 2c 76 20 31 2e 34 20 | 39 31 2f 30 32 2f 31 32 |h,v 1.4 |91/02/12|
|00003fc0| 20 31 34 3a 34 39 3a 32 | 36 20 72 73 61 6c 7a 20 | 14:49:2|6 rsalz |
|00003fd0| 45 78 70 20 24 0a 58 23 | 23 20 20 53 63 72 69 70 |Exp $.X#|# Scrip|
|00003fe0| 74 20 74 6f 20 6d 61 6b | 65 20 61 20 73 65 74 20 |t to mak|e a set |
|00003ff0| 6f 66 20 22 6d 61 69 6c | 70 6f 73 74 22 20 63 6f |of "mail|post" co|
|00004000| 6d 6d 61 6e 64 73 20 66 | 6f 72 20 61 6c 6c 20 67 |mmands f|or all g|
|00004010| 72 6f 75 70 73 20 69 6e | 0a 58 23 23 20 20 74 68 |roups in|.X## th|
|00004020| 65 20 6e 65 77 73 20 61 | 63 74 69 76 65 20 66 69 |e news a|ctive fi|
|00004030| 6c 65 2e 0a 58 23 23 20 | 20 55 73 61 67 65 3a 0a |le..X## | Usage:.|
|00004040| 58 23 23 09 6d 61 6b 65 | 6d 61 69 6c 70 6f 73 74 |X##.make|mailpost|
|00004050| 20 5b 6e 65 77 73 20 61 | 63 74 69 76 65 20 66 69 | [news a|ctive fi|
|00004060| 6c 65 20 5b 6d 61 69 6c | 32 6e 65 77 73 70 61 74 |le [mail|2newspat|
|00004070| 68 5d 20 5d 0a 58 0a 58 | 63 61 73 65 20 24 23 20 |h] ].X.X|case $# |
|00004080| 69 6e 0a 58 5b 30 31 32 | 5d 29 0a 58 20 20 20 20 |in.X[012|]).X |
|00004090| 3b 3b 0a 58 2a 29 0a 58 | 20 20 20 20 65 63 68 6f |;;.X*).X| echo|
|000040a0| 20 22 55 73 61 67 65 3a | 20 60 62 61 73 65 6e 61 | "Usage:| `basena|
|000040b0| 6d 65 20 24 30 60 20 5b | 61 63 74 69 76 65 66 69 |me $0` [|activefi|
|000040c0| 6c 65 20 5b 6d 61 69 6c | 32 6e 65 77 73 70 61 74 |le [mail|2newspat|
|000040d0| 68 5d 20 5d 22 20 31 3e | 26 32 0a 58 20 20 20 20 |h] ]" 1>|&2.X |
|000040e0| 65 78 69 74 20 31 0a 58 | 20 20 20 20 3b 3b 0a 58 |exit 1.X| ;;.X|
|000040f0| 65 73 61 63 0a 58 0a 58 | 41 43 54 49 56 45 3d 24 |esac.X.X|ACTIVE=$|
|00004100| 7b 31 2d 2f 75 73 72 2f | 6c 69 62 2f 6e 65 77 73 |{1-/usr/|lib/news|
|00004110| 2f 61 63 74 69 76 65 7d | 0a 58 69 66 20 5b 20 21 |/active}|.Xif [ !|
|00004120| 20 2d 66 20 24 7b 41 43 | 54 49 56 45 7d 20 5d 20 | -f ${AC|TIVE} ] |
|00004130| 3b 20 74 68 65 6e 0a 58 | 20 20 20 20 65 63 68 6f |; then.X| echo|
|00004140| 20 22 60 62 61 73 65 6e | 61 6d 65 20 24 30 60 3a | "`basen|ame $0`:|
|00004150| 20 20 43 61 6e 27 74 20 | 72 65 61 64 20 69 6e 70 | Can't |read inp|
|00004160| 75 74 20 24 7b 41 43 54 | 49 56 45 7d 2e 22 20 31 |ut ${ACT|IVE}." 1|
|00004170| 3e 26 32 0a 58 20 20 20 | 20 65 78 69 74 20 31 0a |>&2.X | exit 1.|
|00004180| 58 66 69 0a 58 0a 58 23 | 23 20 20 57 72 69 74 65 |Xfi.X.X#|# Write|
|00004190| 20 74 68 65 20 70 72 6f | 6c 6f 67 2e 0a 58 65 63 | the pro|log..Xec|
|000041a0| 68 6f 20 22 2f 2a 22 0a | 58 65 63 68 6f 20 22 2a |ho "/*".|Xecho "*|
|000041b0| 2a 20 20 47 65 6e 65 72 | 61 74 65 64 20 66 72 6f |* Gener|ated fro|
|000041c0| 6d 20 24 7b 41 43 54 49 | 56 45 7d 22 0a 58 65 63 |m ${ACTI|VE}".Xec|
|000041d0| 68 6f 20 22 2a 2a 20 20 | 62 79 20 60 77 68 6f 61 |ho "** |by `whoa|
|000041e0| 6d 69 60 20 6f 6e 20 60 | 64 61 74 65 60 22 0a 58 |mi` on `|date`".X|
|000041f0| 65 63 68 6f 20 22 2a 2f | 22 0a 58 69 66 20 5b 20 |echo "*/|".Xif [ |
|00004200| 22 24 32 22 20 21 3d 20 | 22 22 20 5d 20 3b 20 74 |"$2" != |"" ] ; t|
|00004210| 68 65 6e 0a 58 20 20 20 | 20 65 63 68 6f 20 27 64 |hen.X | echo 'd|
|00004220| 65 66 61 75 6c 74 20 6d | 61 69 6c 32 6e 65 77 73 |efault m|ail2news|
|00004230| 20 22 27 24 32 27 22 3b | 27 0a 58 66 69 0a 58 0a | "'$2'";|'.Xfi.X.|
|00004240| 58 74 72 61 70 20 22 72 | 6d 20 2d 66 20 2f 74 6d |Xtrap "r|m -f /tm|
|00004250| 70 2f 6d 6d 70 24 24 20 | 3b 20 65 78 69 74 20 31 |p/mmp$$ |; exit 1|
|00004260| 22 20 31 20 32 20 33 20 | 31 35 0a 58 0a 58 23 23 |" 1 2 3 |15.X.X##|
|00004270| 20 20 43 72 65 61 74 65 | 20 74 68 65 20 73 65 64 | Create| the sed|
|00004280| 20 74 65 6d 70 6f 72 61 | 72 79 20 66 69 6c 65 20 | tempora|ry file |
|00004290| 61 6e 64 20 72 75 6e 20 | 69 74 0a 58 63 61 74 20 |and run |it.Xcat |
|000042a0| 3e 2f 74 6d 70 2f 6d 6d | 70 24 24 20 3c 3c 5c 45 |>/tmp/mm|p$$ <<\E|
|000042b0| 4f 46 0a 58 23 20 44 65 | 6c 65 74 65 20 6d 6f 64 |OF.X# De|lete mod|
|000042c0| 65 72 61 74 65 64 20 67 | 72 6f 75 70 73 0a 58 2f |erated g|roups.X/|
|000042d0| 6d 24 2f 64 0a 58 23 20 | 54 72 69 6d 20 61 6e 79 |m$/d.X# |Trim any|
|000042e0| 74 68 69 6e 67 20 61 66 | 74 65 72 20 74 68 65 20 |thing af|ter the |
|000042f0| 66 69 72 73 74 20 66 69 | 65 6c 64 0a 58 73 2f 20 |first fi|eld.Xs/ |
|00004300| 2e 2a 24 2f 2f 0a 58 23 | 20 44 65 6c 65 74 65 20 |.*$//.X#| Delete |
|00004310| 63 6f 6e 74 72 6f 6c 2c | 20 6a 75 6e 6b 2c 20 73 |control,| junk, s|
|00004320| 69 74 65 2d 73 70 65 63 | 69 66 69 63 0a 58 2f 5e |ite-spec|ific.X/^|
|00004330| 63 6f 6e 74 72 6f 6c 24 | 2f 64 0a 58 2f 5e 6a 75 |control$|/d.X/^ju|
|00004340| 6e 6b 24 2f 64 0a 58 2f | 5e 74 6f 5c 2e 2f 64 0a |nk$/d.X/|^to\./d.|
|00004350| 58 23 20 44 65 6c 65 74 | 65 20 74 65 73 74 20 67 |X# Delet|e test g|
|00004360| 72 6f 75 70 73 20 61 6e | 64 20 61 6e 6e 6f 75 6e |roups an|d announ|
|00004370| 63 65 2c 20 61 73 73 75 | 6d 69 6e 67 20 74 68 65 |ce, assu|ming the|
|00004380| 20 6c 61 74 74 65 72 20 | 69 73 20 6d 6f 64 65 72 | latter |is moder|
|00004390| 61 74 65 64 0a 58 2f 5c | 3c 74 65 73 74 5c 3e 2f |ated.X/\|<test\>/|
|000043a0| 64 0a 58 2f 5c 3c 61 6e | 6e 6f 75 6e 63 65 5c 3e |d.X/\<an|nounce\>|
|000043b0| 2f 64 0a 58 23 20 54 75 | 72 6e 20 74 68 65 20 6c |/d.X# Tu|rn the l|
|000043c0| 69 6e 65 20 22 66 6f 6f | 22 20 69 6e 74 6f 20 22 |ine "foo|" into "|
|000043d0| 6d 61 69 6c 70 6f 73 74 | 20 66 6f 6f 3b 22 0a 58 |mailpost| foo;".X|
|000043e0| 73 2f 5e 2e 2a 24 2f 6d | 61 69 6c 70 6f 73 74 20 |s/^.*$/m|ailpost |
|000043f0| 26 3b 2f 0a 58 45 4f 46 | 0a 58 0a 58 23 23 20 20 |&;/.XEOF|.X.X## |
|00004400| 52 75 6e 20 73 65 64 2c | 20 63 6c 65 61 6e 20 75 |Run sed,| clean u|
|00004410| 70 2e 0a 58 73 65 64 20 | 2d 66 20 2f 74 6d 70 2f |p..Xsed |-f /tmp/|
|00004420| 6d 6d 70 24 24 20 3c 24 | 7b 41 43 54 49 56 45 7d |mmp$$ <$|{ACTIVE}|
|00004430| 20 7c 20 73 6f 72 74 0a | 58 0a 58 72 6d 20 2d 66 | | sort.|X.Xrm -f|
|00004440| 20 2f 74 6d 70 2f 6d 6d | 70 24 24 0a 45 4e 44 5f | /tmp/mm|p$$.END_|
|00004450| 4f 46 5f 46 49 4c 45 0a | 20 20 69 66 20 74 65 73 |OF_FILE.| if tes|
|00004460| 74 20 31 32 30 36 20 2d | 6e 65 20 60 77 63 20 2d |t 1206 -|ne `wc -|
|00004470| 63 20 3c 27 6d 6b 6d 61 | 69 6c 70 6f 73 74 2e 73 |c <'mkma|ilpost.s|
|00004480| 68 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |h'`; the|n. ec|
|00004490| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 6d 6b 6d 61 |ho shar:| \"'mkma|
|000044a0| 69 6c 70 6f 73 74 2e 73 | 68 27 5c 22 20 75 6e 70 |ilpost.s|h'\" unp|
|000044b0| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|000044c0| 20 73 69 7a 65 21 0a 20 | 20 66 69 0a 20 20 23 20 | size!. | fi. # |
|000044d0| 65 6e 64 20 6f 66 20 27 | 6d 6b 6d 61 69 6c 70 6f |end of '|mkmailpo|
|000044e0| 73 74 2e 73 68 27 0a 66 | 69 0a 69 66 20 74 65 73 |st.sh'.f|i.if tes|
|000044f0| 74 20 2d 66 20 27 6e 65 | 77 73 32 6d 61 69 6c 2e |t -f 'ne|ws2mail.|
|00004500| 63 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |c' -a "$|{1}" != |
|00004510| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|00004520| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|00004530| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|00004540| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 6e 65 77 73 |ing file| \"'news|
|00004550| 32 6d 61 69 6c 2e 63 27 | 5c 22 0a 65 6c 73 65 0a |2mail.c'|\".else.|
|00004560| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 | echo s|har: Ext|
|00004570| 72 61 63 74 69 6e 67 20 | 5c 22 27 6e 65 77 73 32 |racting |\"'news2|
|00004580| 6d 61 69 6c 2e 63 27 5c | 22 20 5c 28 31 32 37 38 |mail.c'\|" \(1278|
|00004590| 35 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 20 |5 charac|ters\). |
|000045a0| 20 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 27 | sed "s/|^X//" >'|
|000045b0| 6e 65 77 73 32 6d 61 69 | 6c 2e 63 27 20 3c 3c 27 |news2mai|l.c' <<'|
|000045c0| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 27 0a 58 2f 2a |END_OF_F|ILE'.X/*|
|000045d0| 0a 58 2a 2a 20 20 4e 45 | 57 53 32 4d 41 49 4c 0a |.X** NE|WS2MAIL.|
|000045e0| 58 2a 2a 20 20 52 65 61 | 64 20 61 20 6e 65 77 73 |X** Rea|d a news|
|000045f0| 20 61 72 74 69 63 6c 65 | 20 6f 6e 20 73 74 61 6e | article| on stan|
|00004600| 64 61 72 64 20 69 6e 70 | 75 74 2c 20 61 6e 64 20 |dard inp|ut, and |
|00004610| 73 65 6e 64 20 69 74 20 | 74 6f 20 74 68 65 20 6d |send it |to the m|
|00004620| 61 69 6c 69 6e 67 0a 58 | 2a 2a 20 20 6c 69 73 74 |ailing.X|** list|
|00004630| 20 61 73 20 64 69 72 65 | 63 74 65 64 20 62 79 20 | as dire|cted by |
|00004640| 74 68 65 20 63 6f 6d 6d | 61 6e 64 2d 6c 69 6e 65 |the comm|and-line|
|00004650| 20 61 72 67 75 6d 65 6e | 74 73 2e 20 20 49 74 20 | argumen|ts. It |
|00004660| 64 6f 65 73 20 73 6f 6d | 65 0a 58 2a 2a 20 20 70 |does som|e.X** p|
|00004670| 61 72 73 69 6e 67 20 61 | 6e 64 20 63 6f 6e 76 65 |arsing a|nd conve|
|00004680| 72 74 69 6e 67 20 6f 66 | 20 6e 65 77 73 20 68 65 |rting of| news he|
|00004690| 61 64 65 72 73 20 69 6e | 74 6f 20 6d 61 69 6c 20 |aders in|to mail |
|000046a0| 68 65 61 64 65 72 73 2e | 0a 58 2a 2a 0a 58 2a 2a |headers.|.X**.X**|
|000046b0| 20 20 54 68 69 73 20 70 | 72 6f 67 72 61 6d 20 77 | This p|rogram w|
|000046c0| 61 6e 74 73 20 74 6f 20 | 6c 69 65 20 74 6f 20 73 |ants to |lie to s|
|000046d0| 65 6e 64 6d 61 69 6c 2c | 20 73 6f 20 69 74 20 73 |endmail,| so it s|
|000046e0| 68 6f 75 6c 64 20 62 65 | 20 73 65 74 75 69 64 20 |hould be| setuid |
|000046f0| 74 6f 0a 58 2a 2a 20 20 | 6f 6e 65 20 6f 66 20 74 |to.X** |one of t|
|00004700| 68 65 20 22 74 72 75 73 | 74 65 64 22 20 75 73 65 |he "trus|ted" use|
|00004710| 72 73 20 61 73 20 6c 69 | 73 74 65 64 20 69 6e 20 |rs as li|sted in |
|00004720| 79 6f 75 72 20 73 65 6e | 64 6d 61 69 6c 2e 63 66 |your sen|dmail.cf|
|00004730| 20 66 69 6c 65 2e 0a 58 | 2a 2a 0a 58 2a 2f 0a 58 | file..X|**.X*/.X|
|00004740| 23 69 6e 63 6c 75 64 65 | 20 22 67 61 74 65 2e 68 |#include| "gate.h|
|00004750| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |".X#incl|ude <sys|
|00004760| 2f 73 74 61 74 2e 68 3e | 0a 58 23 69 66 64 65 66 |/stat.h>|.X#ifdef|
|00004770| 09 52 43 53 49 44 0a 58 | 73 74 61 74 69 63 20 63 |.RCSID.X|static c|
|00004780| 68 61 72 20 52 43 53 5b | 5d 20 3d 0a 58 09 22 24 |har RCS[|] =.X."$|
|00004790| 48 65 61 64 65 72 3a 20 | 2f 6e 66 73 2f 70 61 70 |Header: |/nfs/pap|
|000047a0| 61 79 61 2f 75 32 2f 72 | 73 61 6c 7a 2f 73 72 63 |aya/u2/r|salz/src|
|000047b0| 2f 6e 65 77 73 67 61 74 | 65 2f 73 72 63 2f 52 43 |/newsgat|e/src/RC|
|000047c0| 53 2f 6e 65 77 73 32 6d | 61 69 6c 2e 63 2c 76 20 |S/news2m|ail.c,v |
|000047d0| 31 2e 31 30 20 39 31 2f | 30 32 2f 31 32 20 31 34 |1.10 91/|02/12 14|
|000047e0| 3a 35 30 3a 31 31 20 72 | 73 61 6c 7a 20 45 78 70 |:50:11 r|salz Exp|
|000047f0| 20 24 22 3b 0a 58 23 65 | 6e 64 69 66 09 2f 2a 20 | $";.X#e|ndif./* |
|00004800| 52 43 53 49 44 20 2a 2f | 0a 58 0a 58 0a 58 2f 2a |RCSID */|.X.X.X/*|
|00004810| 20 46 6c 61 67 73 20 66 | 6f 72 20 73 70 65 63 69 | Flags f|or speci|
|00004820| 61 6c 20 68 65 61 64 65 | 72 20 6c 69 6e 65 73 2e |al heade|r lines.|
|00004830| 20 2a 2f 0a 58 74 79 70 | 65 64 65 66 20 65 6e 75 | */.Xtyp|edef enu|
|00004840| 6d 20 5f 48 45 41 44 45 | 52 54 59 50 45 20 7b 0a |m _HEADE|RTYPE {.|
|00004850| 58 20 20 20 20 48 44 52 | 5f 4e 4f 52 4d 2c 0a 58 |X HDR|_NORM,.X|
|00004860| 20 20 20 20 48 44 52 5f | 53 55 42 4a 2c 0a 58 20 | HDR_|SUBJ,.X |
|00004870| 20 20 20 48 44 52 5f 43 | 54 52 4c 2c 0a 58 20 20 | HDR_C|TRL,.X |
|00004880| 20 20 48 44 52 5f 52 45 | 46 53 2c 0a 58 20 20 20 | HDR_RE|FS,.X |
|00004890| 20 48 44 52 5f 50 41 54 | 48 2c 0a 58 20 20 20 20 | HDR_PAT|H,.X |
|000048a0| 48 44 52 5f 46 52 4f 4d | 0a 58 7d 20 48 45 41 44 |HDR_FROM|.X} HEAD|
|000048b0| 45 52 54 59 50 45 3b 0a | 58 0a 58 0a 58 2f 2a 20 |ERTYPE;.|X.X.X/* |
|000048c0| 48 65 61 64 65 72 2d 63 | 72 61 63 6b 69 6e 67 20 |Header-c|racking |
|000048d0| 64 61 74 61 74 79 70 65 | 2e 20 2a 2f 0a 58 74 79 |datatype|. */.Xty|
|000048e0| 70 65 64 65 66 20 73 74 | 72 75 63 74 20 5f 48 45 |pedef st|ruct _HE|
|000048f0| 41 44 45 52 20 7b 0a 58 | 20 20 20 20 63 68 61 72 |ADER {.X| char|
|00004900| 09 09 2a 54 61 67 3b 0a | 58 20 20 20 20 69 6e 74 |..*Tag;.|X int|
|00004910| 09 09 09 4c 65 6e 67 74 | 68 3b 0a 58 20 20 20 20 |...Lengt|h;.X |
|00004920| 48 45 41 44 45 52 54 59 | 50 45 09 09 46 6c 61 67 |HEADERTY|PE..Flag|
|00004930| 3b 0a 58 20 20 20 20 63 | 68 61 72 09 09 56 61 6c |;.X c|har..Val|
|00004940| 75 65 5b 53 4d 5f 53 49 | 5a 45 5d 3b 0a 58 7d 20 |ue[SM_SI|ZE];.X} |
|00004950| 48 45 41 44 45 52 3b 0a | 58 0a 58 53 54 41 54 49 |HEADER;.|X.XSTATI|
|00004960| 43 20 69 6e 74 09 44 65 | 62 75 67 67 69 6e 67 3b |C int.De|bugging;|
|00004970| 0a 58 63 68 61 72 09 09 | 2a 50 6e 61 6d 65 3b 0a |.Xchar..|*Pname;.|
|00004980| 58 0a 58 2f 2a 20 54 68 | 65 20 68 65 61 64 65 72 |X.X/* Th|e header|
|00004990| 73 20 77 65 20 63 61 72 | 65 20 61 62 6f 75 74 2e |s we car|e about.|
|000049a0| 20 2a 2f 0a 58 53 54 41 | 54 49 43 20 48 45 41 44 | */.XSTA|TIC HEAD|
|000049b0| 45 52 09 54 61 62 6c 65 | 5b 5d 20 3d 20 7b 0a 58 |ER.Table|[] = {.X|
|000049c0| 20 20 20 20 7b 09 22 43 | 6f 6e 74 72 6f 6c 22 2c | {."C|ontrol",|
|000049d0| 09 20 37 2c 09 20 48 44 | 52 5f 43 54 52 4c 09 7d |. 7,. HD|R_CTRL.}|
|000049e0| 2c 0a 58 20 20 20 20 7b | 09 22 44 61 74 65 22 2c |,.X {|."Date",|
|000049f0| 09 09 20 34 2c 09 20 48 | 44 52 5f 4e 4f 52 4d 09 |.. 4,. H|DR_NORM.|
|00004a00| 7d 2c 0a 58 20 20 20 20 | 7b 09 22 46 72 6f 6d 22 |},.X |{."From"|
|00004a10| 2c 09 09 20 34 2c 09 20 | 48 44 52 5f 46 52 4f 4d |,.. 4,. |HDR_FROM|
|00004a20| 09 7d 2c 0a 58 20 20 20 | 20 7b 09 22 4d 65 73 73 |.},.X | {."Mess|
|00004a30| 61 67 65 2d 49 44 22 2c | 09 31 30 2c 09 20 48 44 |age-ID",|.10,. HD|
|00004a40| 52 5f 4e 4f 52 4d 09 7d | 2c 0a 58 20 20 20 20 7b |R_NORM.}|,.X {|
|00004a50| 09 22 4f 72 67 61 6e 69 | 7a 61 74 69 6f 6e 22 2c |."Organi|zation",|
|00004a60| 09 31 32 2c 09 20 48 44 | 52 5f 4e 4f 52 4d 09 7d |.12,. HD|R_NORM.}|
|00004a70| 2c 0a 58 20 20 20 20 7b | 09 22 50 61 74 68 22 2c |,.X {|."Path",|
|00004a80| 09 09 20 34 2c 09 20 48 | 44 52 5f 50 41 54 48 09 |.. 4,. H|DR_PATH.|
|00004a90| 7d 2c 0a 58 20 20 20 20 | 7b 09 22 52 65 66 65 72 |},.X |{."Refer|
|00004aa0| 65 6e 63 65 73 22 2c 09 | 31 30 2c 09 20 48 44 52 |ences",.|10,. HDR|
|00004ab0| 5f 52 45 46 53 09 7d 2c | 0a 58 20 20 20 20 7b 09 |_REFS.},|.X {.|
|00004ac0| 22 52 65 70 6c 79 2d 54 | 6f 22 2c 09 20 38 2c 09 |"Reply-T|o",. 8,.|
|00004ad0| 20 48 44 52 5f 4e 4f 52 | 4d 09 7d 2c 0a 58 20 20 | HDR_NOR|M.},.X |
|00004ae0| 20 20 7b 09 22 53 75 62 | 6a 65 63 74 22 2c 09 20 | {."Sub|ject",. |
|00004af0| 37 2c 09 20 48 44 52 5f | 53 55 42 4a 09 7d 2c 0a |7,. HDR_|SUBJ.},.|
|00004b00| 58 7d 3b 0a 58 0a 58 0a | 58 2f 2a 0a 58 2a 2a 20 |X};.X.X.|X/*.X** |
|00004b10| 20 46 69 67 75 72 65 20 | 6f 75 74 20 74 68 65 20 | Figure |out the |
|00004b20| 72 65 74 75 72 6e 20 61 | 64 64 72 65 73 73 2c 20 |return a|ddress, |
|00004b30| 62 79 20 64 6f 69 6e 67 | 20 73 6f 6d 65 20 6f 70 |by doing| some op|
|00004b40| 74 69 6d 69 7a 61 74 69 | 6f 6e 20 6f 6e 20 74 68 |timizati|on on th|
|00004b50| 65 0a 58 2a 2a 20 20 70 | 61 74 68 2e 20 20 49 66 |e.X** p|ath. If|
|00004b60| 20 77 65 20 66 69 6e 64 | 20 61 6e 20 49 6e 74 65 | we find| an Inte|
|00004b70| 72 6e 65 74 20 68 6f 73 | 74 20 6f 72 20 61 20 55 |rnet hos|t or a U|
|00004b80| 55 43 50 20 6e 65 69 67 | 68 62 6f 72 2c 20 72 65 |UCP neig|hbor, re|
|00004b90| 6d 6f 76 65 20 61 6c 6c | 0a 58 2a 2a 20 20 68 6f |move all|.X** ho|
|00004ba0| 73 74 73 20 62 65 66 6f | 72 65 20 74 68 61 74 20 |sts befo|re that |
|00004bb0| 6f 6e 65 20 66 72 6f 6d | 20 74 68 65 20 70 61 74 |one from| the pat|
|00004bc0| 68 2e 0a 58 2a 2f 0a 58 | 53 54 41 54 49 43 20 63 |h..X*/.X|STATIC c|
|00004bd0| 68 61 72 20 2a 0a 58 45 | 64 69 74 50 61 74 68 28 |har *.XE|ditPath(|
|00004be0| 70 61 74 68 2c 20 48 6f | 73 74 29 0a 58 20 20 20 |path, Ho|st).X |
|00004bf0| 20 72 65 67 69 73 74 65 | 72 20 63 68 61 72 09 2a | registe|r char.*|
|00004c00| 70 61 74 68 3b 0a 58 20 | 20 20 20 63 68 61 72 09 |path;.X | char.|
|00004c10| 09 2a 48 6f 73 74 3b 0a | 58 7b 0a 58 20 20 20 20 |.*Host;.|X{.X |
|00004c20| 73 74 61 74 69 63 20 63 | 68 61 72 09 09 2a 2a 48 |static c|har..**H|
|00004c30| 69 6e 65 74 3b 0a 58 20 | 20 20 20 73 74 61 74 69 |inet;.X | stati|
|00004c40| 63 20 63 68 61 72 09 09 | 2a 2a 48 75 75 63 70 3b |c char..|**Huucp;|
|00004c50| 0a 58 20 20 20 20 73 74 | 61 74 69 63 20 63 68 61 |.X st|atic cha|
|00004c60| 72 09 09 2a 2a 4c 73 79 | 73 3b 0a 58 20 20 20 20 |r..**Lsy|s;.X |
|00004c70| 73 74 61 74 69 63 20 63 | 68 61 72 09 09 62 75 66 |static c|har..buf|
|00004c80| 66 5b 53 4d 5f 53 49 5a | 45 5d 3b 0a 58 20 20 20 |f[SM_SIZ|E];.X |
|00004c90| 20 72 65 67 69 73 74 65 | 72 20 63 68 61 72 09 2a | registe|r char.*|
|00004ca0| 70 3b 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |p;.X |register|
|00004cb0| 20 63 68 61 72 09 2a 71 | 3b 0a 58 20 20 20 20 72 | char.*q|;.X r|
|00004cc0| 65 67 69 73 74 65 72 20 | 63 68 61 72 09 2a 2a 56 |egister |char.**V|
|00004cd0| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00004ce0| 69 6e 74 09 61 63 3b 0a | 58 20 20 20 20 72 65 67 |int.ac;.|X reg|
|00004cf0| 69 73 74 65 72 20 69 6e | 74 09 69 3b 0a 58 20 20 |ister in|t.i;.X |
|00004d00| 20 20 72 65 67 69 73 74 | 65 72 20 69 6e 74 09 75 | regist|er int.u|
|00004d10| 75 63 70 70 61 6c 3b 0a | 58 20 20 20 20 72 65 67 |ucppal;.|X reg|
|00004d20| 69 73 74 65 72 20 69 6e | 74 09 69 6e 65 74 70 61 |ister in|t.inetpa|
|00004d30| 6c 3b 0a 58 20 20 20 20 | 46 49 4c 45 09 09 2a 46 |l;.X |FILE..*F|
|00004d40| 3b 0a 58 20 20 20 20 46 | 49 4c 45 09 09 2a 50 3b |;.X F|ILE..*P;|
|00004d50| 0a 58 20 20 20 20 73 74 | 72 75 63 74 20 73 74 61 |.X st|ruct sta|
|00004d60| 74 09 09 53 62 31 3b 0a | 58 20 20 20 20 73 74 72 |t..Sb1;.|X str|
|00004d70| 75 63 74 20 73 74 61 74 | 09 09 53 62 32 3b 0a 58 |uct stat|..Sb2;.X|
|00004d80| 20 20 20 20 63 68 61 72 | 09 09 2a 2a 61 76 3b 0a | char|..**av;.|
|00004d90| 58 20 20 20 20 63 68 61 | 72 09 09 2a 49 6e 65 74 |X cha|r..*Inet|
|00004da0| 73 69 74 65 3b 0a 58 0a | 58 20 20 20 20 69 66 20 |site;.X.|X if |
|00004db0| 28 28 61 63 20 3d 20 53 | 70 6c 69 74 28 70 61 74 |((ac = S|plit(pat|
|00004dc0| 68 2c 20 26 61 76 2c 20 | 27 21 27 29 29 20 3d 3d |h, &av, |'!')) ==|
|00004dd0| 20 32 29 20 7b 0a 58 09 | 2f 2a 20 53 69 6d 70 6c | 2) {.X.|/* Simpl|
|00004de0| 65 20 63 61 73 65 3a 20 | 20 22 73 69 74 65 21 75 |e case: | "site!u|
|00004df0| 73 65 72 22 20 2a 2f 0a | 58 09 53 74 72 63 70 79 |ser" */.|X.Strcpy|
|00004e00| 28 62 75 66 66 2c 20 61 | 76 5b 31 5d 29 3b 0a 58 |(buff, a|v[1]);.X|
|00004e10| 09 53 70 6c 69 74 46 72 | 65 65 28 26 61 76 29 3b |.SplitFr|ee(&av);|
|00004e20| 0a 58 09 72 65 74 75 72 | 6e 20 62 75 66 66 3b 0a |.X.retur|n buff;.|
|00004e30| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 2f 2a |X }.X|.X /*|
|00004e40| 20 49 6e 69 74 69 61 6c | 69 7a 65 2e 20 20 54 68 | Initial|ize. Th|
|00004e50| 69 73 20 69 73 20 73 69 | 6c 6c 79 20 66 6f 72 20 |is is si|lly for |
|00004e60| 6e 6f 77 2c 20 62 75 74 | 20 65 76 65 6e 74 75 61 |now, but| eventua|
|00004e70| 6c 6c 79 20 77 65 20 6d | 69 67 68 74 20 77 61 6e |lly we m|ight wan|
|00004e80| 74 0a 58 20 20 20 20 20 | 2a 20 74 6f 20 62 65 20 |t.X |* to be |
|00004e90| 61 62 6c 65 20 74 6f 20 | 68 61 6e 64 6c 65 20 61 |able to |handle a|
|00004ea0| 20 62 61 74 63 68 65 64 | 20 66 65 65 64 2e 20 2a | batched| feed. *|
|00004eb0| 2f 0a 58 23 69 66 64 65 | 66 09 55 55 4e 41 4d 45 |/.X#ifde|f.UUNAME|
|00004ec0| 0a 58 20 20 20 20 69 66 | 20 28 4c 73 79 73 20 3d |.X if| (Lsys =|
|00004ed0| 3d 20 4e 55 4c 4c 29 20 | 7b 0a 58 09 70 20 3d 20 |= NULL) |{.X.p = |
|00004ee0| 55 55 4e 41 4d 45 3b 0a | 58 09 2f 2a 20 49 66 20 |UUNAME;.|X./* If |
|00004ef0| 73 6f 6d 65 6f 6e 65 20 | 64 69 64 64 6c 65 64 20 |someone |diddled |
|00004f00| 4c 2e 73 79 73 2c 20 72 | 65 62 75 69 6c 64 20 75 |L.sys, r|ebuild u|
|00004f10| 75 6e 61 6d 65 20 6f 75 | 74 70 75 74 2e 20 2a 2f |uname ou|tput. */|
|00004f20| 0a 58 09 69 66 20 28 73 | 74 61 74 28 4c 5f 53 59 |.X.if (s|tat(L_SY|
|00004f30| 53 2c 20 26 53 62 31 29 | 20 3c 20 30 20 7c 7c 20 |S, &Sb1)| < 0 || |
|00004f40| 73 74 61 74 28 70 2c 20 | 26 53 62 32 29 20 3c 20 |stat(p, |&Sb2) < |
|00004f50| 30 0a 58 09 20 20 7c 7c | 20 53 62 31 2e 73 74 5f |0.X. ||| Sb1.st_|
|00004f60| 6d 74 69 6d 65 20 3e 3d | 20 53 62 32 2e 73 74 5f |mtime >=| Sb2.st_|
|00004f70| 6d 74 69 6d 65 29 0a 58 | 09 20 20 20 20 69 66 20 |mtime).X|. if |
|00004f80| 28 28 46 20 3d 20 66 6f | 70 65 6e 28 70 2c 20 22 |((F = fo|pen(p, "|
|00004f90| 77 22 29 29 20 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |w")) ==| NULL).X|
|00004fa0| 09 09 46 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..Fprint|f(stderr|
|00004fb0| 2c 20 22 25 73 3a 20 20 | 43 61 6e 27 74 20 63 72 |, "%s: |Can't cr|
|00004fc0| 65 61 74 65 20 25 73 2c | 20 25 73 2e 5c 6e 22 2c |eate %s,| %s.\n",|
|00004fd0| 0a 58 09 09 09 50 6e 61 | 6d 65 2c 20 70 2c 20 73 |.X...Pna|me, p, s|
|00004fe0| 74 72 65 72 72 6f 72 28 | 65 72 72 6e 6f 29 29 3b |trerror(|errno));|
|00004ff0| 0a 58 09 20 20 20 20 65 | 6c 73 65 20 7b 0a 58 09 |.X. e|lse {.X.|
|00005000| 09 69 66 20 28 28 50 20 | 3d 20 70 6f 70 65 6e 28 |.if ((P |= popen(|
|00005010| 22 65 78 65 63 20 75 75 | 6e 61 6d 65 22 2c 20 22 |"exec uu|name", "|
|00005020| 72 22 29 29 20 3d 3d 20 | 4e 55 4c 4c 29 0a 58 09 |r")) == |NULL).X.|
|00005030| 09 20 20 20 20 46 70 72 | 69 6e 74 66 28 73 74 64 |. Fpr|intf(std|
|00005040| 65 72 72 2c 20 22 25 73 | 3a 20 20 70 6f 70 65 6e |err, "%s|: popen|
|00005050| 20 66 61 69 6c 65 64 2c | 20 25 73 2e 5c 6e 22 2c | failed,| %s.\n",|
|00005060| 0a 58 09 09 09 20 20 20 | 20 50 6e 61 6d 65 2c 20 |.X... | Pname, |
|00005070| 73 74 72 65 72 72 6f 72 | 28 65 72 72 6e 6f 29 29 |strerror|(errno))|
|00005080| 3b 0a 58 09 09 65 6c 73 | 65 20 7b 0a 58 09 09 20 |;.X..els|e {.X.. |
|00005090| 20 20 20 77 68 69 6c 65 | 20 28 66 67 65 74 73 28 | while| (fgets(|
|000050a0| 62 75 66 66 2c 20 73 69 | 7a 65 6f 66 20 62 75 66 |buff, si|zeof buf|
|000050b0| 66 2c 20 50 29 29 0a 58 | 09 09 09 46 70 75 74 73 |f, P)).X|...Fputs|
|000050c0| 28 62 75 66 66 2c 20 46 | 29 3b 0a 58 09 09 20 20 |(buff, F|);.X.. |
|000050d0| 20 20 69 66 20 28 70 63 | 6c 6f 73 65 28 50 29 29 | if (pc|lose(P))|
|000050e0| 0a 58 09 09 09 46 70 72 | 69 6e 74 66 28 73 74 64 |.X...Fpr|intf(std|
|000050f0| 65 72 72 2c 20 22 25 73 | 3a 20 20 70 63 6c 6f 73 |err, "%s|: pclos|
|00005100| 65 20 66 61 69 6c 65 64 | 2c 20 25 73 2e 5c 6e 22 |e failed|, %s.\n"|
|00005110| 2c 0a 58 09 09 09 09 50 | 6e 61 6d 65 2c 20 73 74 |,.X....P|name, st|
|00005120| 72 65 72 72 6f 72 28 65 | 72 72 6e 6f 29 29 3b 0a |rerror(e|rrno));.|
|00005130| 58 09 09 7d 0a 58 09 09 | 69 66 20 28 66 63 6c 6f |X..}.X..|if (fclo|
|00005140| 73 65 28 46 29 20 3d 3d | 20 45 4f 46 29 0a 58 09 |se(F) ==| EOF).X.|
|00005150| 09 20 20 20 20 46 70 72 | 69 6e 74 66 28 73 74 64 |. Fpr|intf(std|
|00005160| 65 72 72 2c 20 22 25 73 | 3a 20 20 45 72 72 6f 72 |err, "%s|: Error|
|00005170| 20 63 6c 6f 73 69 6e 67 | 20 25 73 2c 20 25 73 2e | closing| %s, %s.|
|00005180| 5c 6e 22 2c 0a 58 09 09 | 09 20 20 20 20 50 6e 61 |\n",.X..|. Pna|
|00005190| 6d 65 2c 20 70 2c 20 73 | 74 72 65 72 72 6f 72 28 |me, p, s|trerror(|
|000051a0| 65 72 72 6e 6f 29 29 3b | 0a 58 09 20 20 20 20 7d |errno));|.X. }|
|000051b0| 0a 58 0a 58 09 2f 2a 20 | 53 6c 75 72 70 20 75 70 |.X.X./* |Slurp up|
|000051c0| 20 6e 61 6d 65 73 20 6f | 66 20 55 55 43 50 20 68 | names o|f UUCP h|
|000051d0| 6f 73 74 73 20 77 65 20 | 74 61 6c 6b 20 74 6f 2e |osts we |talk to.|
|000051e0| 20 2a 2f 0a 58 09 4c 73 | 79 73 20 3d 20 52 65 61 | */.X.Ls|ys = Rea|
|000051f0| 64 46 69 6c 65 28 70 29 | 3b 0a 58 0a 58 23 69 66 |dFile(p)|;.X.X#if|
|00005200| 64 65 66 09 55 55 43 50 | 5f 49 4e 45 54 0a 58 09 |def.UUCP|_INET.X.|
|00005210| 2f 2a 20 53 6c 75 72 70 | 20 75 70 20 74 68 65 20 |/* Slurp| up the |
|00005220| 55 55 43 50 2d 3e 49 6e | 74 65 72 6e 65 74 20 6e |UUCP->In|ternet n|
|00005230| 61 6d 65 20 6d 61 70 70 | 69 6e 67 73 2e 20 2a 2f |ame mapp|ings. */|
|00005240| 0a 58 09 66 6f 72 20 28 | 48 75 75 63 70 20 3d 20 |.X.for (|Huucp = |
|00005250| 52 65 61 64 46 69 6c 65 | 28 55 55 43 50 5f 49 4e |ReadFile|(UUCP_IN|
|00005260| 45 54 29 2c 20 69 20 3d | 20 31 3b 20 48 75 75 63 |ET), i =| 1; Huuc|
|00005270| 70 5b 69 5d 3b 20 69 2b | 2b 29 0a 58 09 20 20 20 |p[i]; i+|+).X. |
|00005280| 20 3b 0a 58 09 66 6f 72 | 20 28 48 69 6e 65 74 20 | ;.X.for| (Hinet |
|00005290| 3d 20 4e 45 57 28 63 68 | 61 72 2a 2c 20 69 29 2c |= NEW(ch|ar*, i),|
|000052a0| 20 69 20 3d 20 30 3b 20 | 70 20 3d 20 48 75 75 63 | i = 0; |p = Huuc|
|000052b0| 70 5b 69 5d 3b 20 69 2b | 2b 29 20 7b 0a 58 09 20 |p[i]; i+|+) {.X. |
|000052c0| 20 20 20 77 68 69 6c 65 | 20 28 2a 70 20 26 26 20 | while| (*p && |
|000052d0| 21 57 48 49 54 45 28 2a | 70 29 29 0a 58 09 09 70 |!WHITE(*|p)).X..p|
|000052e0| 2b 2b 3b 0a 58 09 20 20 | 20 20 69 66 20 28 2a 70 |++;.X. | if (*p|
|000052f0| 29 0a 58 09 09 66 6f 72 | 20 28 2a 70 2b 2b 20 3d |).X..for| (*p++ =|
|00005300| 20 27 5c 30 27 3b 20 2a | 70 20 26 26 20 57 48 49 | '\0'; *|p && WHI|
|00005310| 54 45 28 2a 70 29 3b 20 | 70 2b 2b 29 0a 58 09 09 |TE(*p); |p++).X..|
|00005320| 20 20 20 20 3b 0a 58 09 | 20 20 20 20 48 69 6e 65 | ;.X.| Hine|
|00005330| 74 5b 69 5d 20 3d 20 70 | 3b 0a 58 09 7d 0a 58 23 |t[i] = p|;.X.}.X#|
|00005340| 65 6e 64 69 66 09 2f 2a | 20 55 55 43 50 5f 49 4e |endif./*| UUCP_IN|
|00005350| 45 54 20 2a 2f 0a 58 20 | 20 20 20 7d 0a 58 23 65 |ET */.X | }.X#e|
|00005360| 6e 64 69 66 09 2f 2a 20 | 55 55 4e 41 4d 45 20 2a |ndif./* |UUNAME *|
|00005370| 2f 0a 58 0a 58 20 20 20 | 20 2f 2a 20 53 63 61 6e |/.X.X | /* Scan|
|00005380| 20 74 68 65 20 70 61 74 | 68 2c 20 6e 6f 74 69 6e | the pat|h, notin|
|00005390| 67 20 69 66 20 77 65 20 | 66 69 6e 64 20 61 20 55 |g if we |find a U|
|000053a0| 55 43 50 20 6f 72 20 49 | 6e 74 65 72 6e 65 74 20 |UCP or I|nternet |
|000053b0| 6e 65 69 67 68 62 6f 72 | 2e 20 2a 2f 0a 58 20 20 |neighbor|. */.X |
|000053c0| 20 20 66 6f 72 20 28 75 | 75 63 70 70 61 6c 20 3d | for (u|ucppal =|
|000053d0| 20 31 2c 20 69 6e 65 74 | 70 61 6c 20 3d 20 30 2c | 1, inet|pal = 0,|
|000053e0| 20 69 20 3d 20 30 3b 20 | 69 20 3c 20 61 63 3b 20 | i = 0; |i < ac; |
|000053f0| 69 2b 2b 29 20 7b 0a 58 | 09 66 6f 72 20 28 56 20 |i++) {.X|.for (V |
|00005400| 3d 20 4c 73 79 73 3b 20 | 2a 56 3b 20 56 2b 2b 29 |= Lsys; |*V; V++)|
|00005410| 0a 58 09 20 20 20 20 69 | 66 20 28 45 51 28 61 76 |.X. i|f (EQ(av|
|00005420| 5b 69 5d 2c 20 2a 56 29 | 29 0a 58 09 09 75 75 63 |[i], *V)|).X..uuc|
|00005430| 70 70 61 6c 20 3d 20 69 | 3b 0a 58 09 66 6f 72 20 |ppal = i|;.X.for |
|00005440| 28 56 20 3d 20 48 75 75 | 63 70 3b 20 2a 56 3b 20 |(V = Huu|cp; *V; |
|00005450| 56 2b 2b 29 0a 58 09 20 | 20 20 20 69 66 20 28 45 |V++).X. | if (E|
|00005460| 51 28 61 76 5b 69 5d 2c | 20 2a 56 29 29 20 7b 0a |Q(av[i],| *V)) {.|
|00005470| 58 09 09 69 6e 65 74 70 | 61 6c 20 3d 20 69 3b 0a |X..inetp|al = i;.|
|00005480| 58 09 09 49 6e 65 74 73 | 69 74 65 20 3d 20 48 69 |X..Inets|ite = Hi|
|00005490| 6e 65 74 5b 56 20 2d 20 | 48 75 75 63 70 5d 3b 0a |net[V - |Huucp];.|
|000054a0| 58 09 20 20 20 20 7d 0a | 58 20 20 20 20 7d 0a 58 |X. }.|X }.X|
|000054b0| 0a 58 20 20 20 20 69 66 | 20 28 69 6e 65 74 70 61 |.X if| (inetpa|
|000054c0| 6c 20 3c 20 75 75 63 70 | 70 61 6c 29 20 7b 0a 58 |l < uucp|pal) {.X|
|000054d0| 09 2f 2a 20 4e 6f 20 49 | 6e 74 65 72 6e 65 74 20 |./* No I|nternet |
|000054e0| 73 69 74 65 20 66 6f 75 | 6e 64 2c 20 74 75 72 6e |site fou|nd, turn|
|000054f0| 20 61 21 62 21 63 20 69 | 6e 74 6f 20 61 21 62 21 | a!b!c i|nto a!b!|
|00005500| 63 40 74 68 69 73 2d 68 | 6f 73 74 20 2a 2f 0a 58 |c@this-h|ost */.X|
|00005510| 09 66 6f 72 20 28 70 20 | 3d 20 62 75 66 66 20 2b |.for (p |= buff +|
|00005520| 20 41 50 50 45 4e 44 28 | 62 75 66 66 2c 20 61 76 | APPEND(|buff, av|
|00005530| 5b 75 75 63 70 70 61 6c | 5d 29 3b 20 2b 2b 75 75 |[uucppal|]); ++uu|
|00005540| 63 70 70 61 6c 20 3c 20 | 61 63 3b 20 29 20 7b 0a |cppal < |ac; ) {.|
|00005550| 58 09 20 20 20 20 2a 70 | 2b 2b 20 3d 20 27 21 27 |X. *p|++ = '!'|
|00005560| 3b 0a 58 09 20 20 20 20 | 70 20 2b 3d 20 41 50 50 |;.X. |p += APP|
|00005570| 45 4e 44 28 70 2c 20 61 | 76 5b 75 75 63 70 70 61 |END(p, a|v[uucppa|
|00005580| 6c 5d 29 3b 0a 58 09 7d | 0a 58 09 2a 70 2b 2b 20 |l]);.X.}|.X.*p++ |
|00005590| 3d 20 27 40 27 3b 0a 58 | 09 53 74 72 63 70 79 28 |= '@';.X|.Strcpy(|
|000055a0| 70 2c 20 48 6f 73 74 29 | 3b 0a 58 20 20 20 20 7d |p, Host)|;.X }|
|000055b0| 0a 58 20 20 20 20 65 6c | 73 65 20 69 66 20 28 69 |.X el|se if (i|
|000055c0| 6e 65 74 70 61 6c 20 3d | 3d 20 61 63 20 2d 20 31 |netpal =|= ac - 1|
|000055d0| 29 0a 58 09 2f 2a 20 54 | 75 72 6e 20 61 21 62 21 |).X./* T|urn a!b!|
|000055e0| 69 6e 65 74 21 75 73 65 | 72 20 69 6e 74 6f 20 75 |inet!use|r into u|
|000055f0| 73 65 72 40 69 6e 65 74 | 2e 64 6f 6d 61 69 6e 2e |ser@inet|.domain.|
|00005600| 6e 61 6d 65 20 2a 2f 0a | 58 09 53 70 72 69 6e 74 |name */.|X.Sprint|
|00005610| 66 28 62 75 66 66 2c 20 | 22 25 73 40 25 73 22 2c |f(buff, |"%s@%s",|
|00005620| 20 61 76 5b 61 63 5d 2c | 20 49 6e 65 74 73 69 74 | av[ac],| Inetsit|
|00005630| 65 29 3b 0a 58 20 20 20 | 20 65 6c 73 65 20 7b 0a |e);.X | else {.|
|00005640| 58 09 2f 2a 20 54 75 72 | 6e 20 61 21 69 6e 65 74 |X./* Tur|n a!inet|
|00005650| 21 62 21 75 73 65 72 20 | 69 6e 74 6f 20 62 21 75 |!b!user |into b!u|
|00005660| 73 65 72 40 69 6e 65 74 | 2e 64 6f 6d 61 69 6e 2e |ser@inet|.domain.|
|00005670| 6e 61 6d 65 20 2a 2f 0a | 58 09 66 6f 72 20 28 70 |name */.|X.for (p|
|00005680| 20 3d 20 62 75 66 66 20 | 2b 20 41 50 50 45 4e 44 | = buff |+ APPEND|
|00005690| 28 62 75 66 66 2c 20 61 | 76 5b 2b 2b 69 6e 65 74 |(buff, a|v[++inet|
|000056a0| 70 61 6c 5d 29 3b 20 2b | 2b 69 6e 65 74 70 61 6c |pal]); +|+inetpal|
|000056b0| 20 3c 20 61 63 3b 20 29 | 20 7b 0a 58 09 20 20 20 | < ac; )| {.X. |
|000056c0| 20 2a 70 2b 2b 20 3d 20 | 27 21 27 3b 0a 58 09 20 | *p++ = |'!';.X. |
|000056d0| 20 20 20 70 20 2b 3d 20 | 41 50 50 45 4e 44 28 70 | p += |APPEND(p|
|000056e0| 2c 20 61 76 5b 69 6e 65 | 74 70 61 6c 5d 29 3b 0a |, av[ine|tpal]);.|
|000056f0| 58 09 7d 0a 58 09 2a 70 | 2b 2b 20 3d 20 27 40 27 |X.}.X.*p|++ = '@'|
|00005700| 3b 0a 58 09 53 74 72 63 | 70 79 28 70 2c 20 49 6e |;.X.Strc|py(p, In|
|00005710| 65 74 73 69 74 65 29 3b | 0a 58 20 20 20 20 7d 0a |etsite);|.X }.|
|00005720| 58 0a 58 20 20 20 20 2f | 2a 20 43 6f 6e 76 65 72 |X.X /|* Conver|
|00005730| 74 20 61 6c 6c 20 62 75 | 74 20 74 68 65 20 6c 61 |t all bu|t the la|
|00005740| 73 74 20 22 40 22 20 74 | 6f 20 22 25 22 20 28 66 |st "@" t|o "%" (f|
|00005750| 69 65 20 6f 6e 20 64 65 | 63 77 72 6c 20 61 6e 64 |ie on de|cwrl and|
|00005760| 20 70 73 75 65 63 6c 21 | 29 2e 20 2a 2f 0a 58 20 | psuecl!|). */.X |
|00005770| 20 20 20 69 66 20 28 70 | 20 3d 20 49 44 58 28 62 | if (p| = IDX(b|
|00005780| 75 66 66 2c 20 27 40 27 | 29 29 0a 58 09 66 6f 72 |uff, '@'|)).X.for|
|00005790| 20 28 20 3b 20 71 20 3d | 20 49 44 58 28 70 20 2b | ( ; q =| IDX(p +|
|000057a0| 20 31 2c 20 27 40 27 29 | 3b 20 70 20 3d 20 71 29 | 1, '@')|; p = q)|
|000057b0| 0a 58 09 20 20 20 20 2a | 70 20 3d 20 27 25 27 3b |.X. *|p = '%';|
|000057c0| 0a 58 0a 58 20 20 20 20 | 53 70 6c 69 74 46 72 65 |.X.X |SplitFre|
|000057d0| 65 28 26 61 76 29 3b 0a | 58 20 20 20 20 72 65 74 |e(&av);.|X ret|
|000057e0| 75 72 6e 20 62 75 66 66 | 3b 0a 58 7d 0a 58 0a 58 |urn buff|;.X}.X.X|
|000057f0| 0a 58 2f 2a 0a 58 2a 2a | 20 20 48 61 63 6b 20 75 |.X/*.X**| Hack u|
|00005800| 70 20 74 68 65 20 72 65 | 66 65 72 65 6e 63 65 73 |p the re|ferences|
|00005810| 2c 20 74 61 6b 69 6e 67 | 20 6f 6e 6c 79 20 74 68 |, taking| only th|
|00005820| 65 20 6c 61 73 74 20 74 | 68 72 65 65 2e 0a 58 2a |e last t|hree..X*|
|00005830| 2f 0a 58 53 54 41 54 49 | 43 20 63 68 61 72 20 2a |/.XSTATI|C char *|
|00005840| 0a 58 54 72 69 6d 52 65 | 66 65 72 65 6e 63 65 73 |.XTrimRe|ferences|
|00005850| 28 72 65 66 73 29 0a 58 | 20 20 20 20 63 68 61 72 |(refs).X| char|
|00005860| 09 09 20 2a 72 65 66 73 | 3b 0a 58 7b 0a 58 20 20 |.. *refs|;.X{.X |
|00005870| 20 20 73 74 61 74 69 63 | 20 63 68 61 72 09 09 62 | static| char..b|
|00005880| 75 66 66 5b 53 4d 5f 53 | 49 5a 45 5d 3b 0a 58 20 |uff[SM_S|IZE];.X |
|00005890| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|000058a0| 09 2a 70 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 |.*p;.X | regist|
|000058b0| 65 72 20 69 6e 74 09 69 | 3b 0a 58 20 20 20 20 72 |er int.i|;.X r|
|000058c0| 65 67 69 73 74 65 72 20 | 69 6e 74 09 61 63 3b 0a |egister |int.ac;.|
|000058d0| 58 20 20 20 20 63 68 61 | 72 09 09 2a 2a 61 76 3b |X cha|r..**av;|
|000058e0| 0a 58 0a 58 20 20 20 20 | 69 66 20 28 61 63 20 3d |.X.X |if (ac =|
|000058f0| 20 53 70 6c 69 74 28 72 | 65 66 73 2c 20 26 61 76 | Split(r|efs, &av|
|00005900| 2c 20 27 5c 30 27 29 29 | 20 7b 0a 58 09 2f 2a 20 |, '\0'))| {.X./* |
|00005910| 54 72 69 63 6b 79 2e 20 | 20 49 66 20 74 68 65 72 |Tricky. | If ther|
|00005920| 65 20 61 72 65 20 66 69 | 76 65 20 72 65 66 65 72 |e are fi|ve refer|
|00005930| 65 6e 63 65 73 2c 20 77 | 65 20 77 61 6e 74 20 73 |ences, w|e want s|
|00005940| 75 62 73 63 72 69 70 74 | 73 20 32 2c 33 2c 34 2e |ubscript|s 2,3,4.|
|00005950| 20 2a 2f 0a 58 09 69 20 | 3d 20 61 63 20 3c 20 33 | */.X.i |= ac < 3|
|00005960| 20 3f 20 30 20 3a 20 61 | 63 20 2d 20 33 3b 0a 58 | ? 0 : a|c - 3;.X|
|00005970| 09 66 6f 72 20 28 70 20 | 3d 20 62 75 66 66 20 2b |.for (p |= buff +|
|00005980| 20 41 50 50 45 4e 44 28 | 62 75 66 66 2c 20 61 76 | APPEND(|buff, av|
|00005990| 5b 69 5d 29 3b 20 2b 2b | 69 20 3c 20 61 63 3b 20 |[i]); ++|i < ac; |
|000059a0| 29 20 7b 0a 58 09 20 20 | 20 20 2a 70 2b 2b 20 3d |) {.X. | *p++ =|
|000059b0| 20 27 2c 27 3b 0a 58 09 | 20 20 20 20 2a 70 2b 2b | ',';.X.| *p++|
|000059c0| 20 3d 20 27 20 27 3b 0a | 58 09 20 20 20 20 70 20 | = ' ';.|X. p |
|000059d0| 2b 3d 20 41 50 50 45 4e | 44 28 70 2c 20 61 76 5b |+= APPEN|D(p, av[|
|000059e0| 69 5d 29 3b 0a 58 09 7d | 0a 58 09 53 70 6c 69 74 |i]);.X.}|.X.Split|
|000059f0| 46 72 65 65 28 26 61 76 | 29 3b 0a 58 20 20 20 20 |Free(&av|);.X |
|00005a00| 7d 0a 58 20 20 20 20 65 | 6c 73 65 0a 58 09 62 75 |}.X e|lse.X.bu|
|00005a10| 66 66 5b 30 5d 20 3d 20 | 27 5c 30 27 3b 0a 58 20 |ff[0] = |'\0';.X |
|00005a20| 20 20 20 72 65 74 75 72 | 6e 20 62 75 66 66 3b 0a | retur|n buff;.|
|00005a30| 58 7d 0a 58 0a 58 0a 58 | 23 69 66 6e 64 65 66 09 |X}.X.X.X|#ifndef.|
|00005a40| 48 41 56 45 5f 50 55 54 | 45 4e 56 0a 58 2f 2a 0a |HAVE_PUT|ENV.X/*.|
|00005a50| 58 2a 2a 20 20 41 20 62 | 72 75 74 65 2d 66 6f 72 |X** A b|rute-for|
|00005a60| 63 65 64 20 69 6d 70 6c | 65 6d 65 6e 74 61 74 69 |ced impl|ementati|
|00005a70| 6f 6e 20 6f 66 20 70 75 | 74 65 6e 76 2e 20 20 57 |on of pu|tenv. W|
|00005a80| 61 73 74 65 73 20 6d 65 | 6d 6f 72 79 2e 20 20 43 |astes me|mory. C|
|00005a90| 6f 6e 73 69 64 65 72 0a | 58 2a 2a 20 20 69 74 20 |onsider.|X** it |
|00005aa0| 69 6e 63 65 6e 74 69 76 | 65 20 74 6f 20 69 6e 73 |incentiv|e to ins|
|00005ab0| 74 61 6c 6c 20 74 68 65 | 20 66 72 65 65 20 42 53 |tall the| free BS|
|00005ac0| 44 20 76 65 72 73 69 6f | 6e 2e 2e 2e 0a 58 2a 2f |D versio|n....X*/|
|00005ad0| 0a 58 69 6e 74 0a 58 70 | 75 74 65 6e 76 28 76 61 |.Xint.Xp|utenv(va|
|00005ae0| 6c 29 0a 58 20 20 20 20 | 63 68 61 72 09 2a 76 61 |l).X |char.*va|
|00005af0| 6c 3b 0a 58 7b 0a 58 20 | 20 20 20 63 68 61 72 09 |l;.X{.X | char.|
|00005b00| 2a 2a 6e 65 77 3b 0a 58 | 20 20 20 20 69 6e 74 09 |**new;.X| int.|
|00005b10| 09 69 3b 0a 58 20 20 20 | 20 69 6e 74 09 09 6c 65 |.i;.X | int..le|
|00005b20| 6e 67 74 68 3b 0a 58 20 | 20 20 20 69 6e 74 09 09 |ngth;.X | int..|
|00005b30| 66 6f 75 6e 64 3b 0a 58 | 20 20 20 20 63 68 61 72 |found;.X| char|
|00005b40| 09 2a 70 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 53 |.*p;.X.X| /* S|
|00005b50| 65 65 20 69 66 20 74 68 | 65 20 76 61 6c 75 65 20 |ee if th|e value |
|00005b60| 69 73 20 61 6c 72 65 61 | 64 79 20 69 6e 20 74 68 |is alrea|dy in th|
|00005b70| 65 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 2e 20 2a |e enviro|nment. *|
|00005b80| 2f 0a 58 20 20 20 20 66 | 6f 75 6e 64 20 3d 20 2d |/.X f|ound = -|
|00005b90| 31 3b 0a 58 20 20 20 20 | 69 66 20 28 70 20 3d 20 |1;.X |if (p = |
|00005ba0| 49 44 58 28 76 61 6c 2c | 20 27 3d 27 29 29 20 7b |IDX(val,| '=')) {|
|00005bb0| 0a 58 09 66 6f 72 20 28 | 6c 65 6e 67 74 68 20 3d |.X.for (|length =|
|00005bc0| 20 2b 2b 70 20 2d 20 76 | 61 6c 2c 20 69 20 3d 20 | ++p - v|al, i = |
|00005bd0| 30 3b 20 65 6e 76 69 72 | 6f 6e 5b 69 5d 3b 20 69 |0; envir|on[i]; i|
|00005be0| 2b 2b 29 0a 58 09 20 20 | 20 20 69 66 20 28 45 51 |++).X. | if (EQ|
|00005bf0| 6e 28 76 61 6c 2c 20 65 | 6e 76 69 72 6f 6e 5b 69 |n(val, e|nviron[i|
|00005c00| 5d 2c 20 6c 65 6e 67 74 | 68 29 29 20 7b 0a 58 09 |], lengt|h)) {.X.|
|00005c10| 09 66 6f 75 6e 64 20 3d | 20 69 3b 0a 58 09 09 62 |.found =| i;.X..b|
|00005c20| 72 65 61 6b 3b 0a 58 09 | 20 20 20 20 7d 0a 58 20 |reak;.X.| }.X |
|00005c30| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 2f 2a 20 47 | }.X.X| /* G|
|00005c40| 65 74 20 74 68 65 20 73 | 69 7a 65 2c 20 61 6e 64 |et the s|ize, and|
|00005c50| 20 73 70 61 63 65 20 66 | 6f 72 20 74 68 65 20 6e | space f|or the n|
|00005c60| 65 77 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 2e 20 |ew envir|onment. |
|00005c70| 2a 2f 0a 58 20 20 20 20 | 66 6f 72 20 28 69 20 3d |*/.X |for (i =|
|00005c80| 20 30 3b 20 65 6e 76 69 | 72 6f 6e 5b 69 5d 3b 20 | 0; envi|ron[i]; |
|00005c90| 69 2b 2b 29 0a 58 09 3b | 0a 58 20 20 20 20 69 20 |i++).X.;|.X i |
|00005ca0| 2b 3d 20 32 3b 0a 58 20 | 20 20 20 6e 65 77 20 3d |+= 2;.X | new =|
|00005cb0| 20 4e 45 57 28 63 68 61 | 72 2a 2c 20 69 29 3b 0a | NEW(cha|r*, i);.|
|00005cc0| 58 20 20 20 20 6e 65 77 | 5b 30 5d 20 3d 20 76 61 |X new|[0] = va|
|00005cd0| 6c 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 43 6f 70 |l;.X.X | /* Cop|
|00005ce0| 79 20 74 68 65 20 6f 6c | 64 20 74 6f 20 74 68 65 |y the ol|d to the|
|00005cf0| 20 6e 65 77 2e 20 2a 2f | 0a 58 20 20 20 20 66 6f | new. */|.X fo|
|00005d00| 72 20 28 69 20 3d 20 30 | 3b 20 65 6e 76 69 72 6f |r (i = 0|; enviro|
|00005d10| 6e 5b 69 5d 3b 20 69 2b | 2b 29 0a 58 09 69 66 20 |n[i]; i+|+).X.if |
|00005d20| 28 69 20 21 3d 20 66 6f | 75 6e 64 29 0a 58 09 20 |(i != fo|und).X. |
|00005d30| 20 20 20 6e 65 77 5b 69 | 20 2b 20 31 5d 20 3d 20 | new[i| + 1] = |
|00005d40| 65 6e 76 69 72 6f 6e 5b | 69 5d 3b 0a 58 20 20 20 |environ[|i];.X |
|00005d50| 20 6e 65 77 5b 69 20 2b | 20 31 5d 20 3d 20 4e 55 | new[i +| 1] = NU|
|00005d60| 4c 4c 3b 0a 58 20 20 20 | 20 65 6e 76 69 72 6f 6e |LL;.X | environ|
|00005d70| 20 3d 20 6e 65 77 3b 0a | 58 20 20 20 20 72 65 74 | = new;.|X ret|
|00005d80| 75 72 6e 20 30 3b 0a 58 | 7d 0a 58 23 65 6e 64 69 |urn 0;.X|}.X#endi|
|00005d90| 66 09 2f 2a 20 48 41 56 | 45 5f 50 55 54 45 4e 56 |f./* HAV|E_PUTENV|
|00005da0| 20 2a 2f 0a 58 0a 58 0a | 58 2f 2a 0a 58 2a 2a 20 | */.X.X.|X/*.X** |
|00005db0| 20 50 72 69 6e 74 20 61 | 20 75 73 61 67 65 20 6d | Print a| usage m|
|00005dc0| 65 73 73 61 67 65 20 61 | 6e 64 20 65 78 69 74 2e |essage a|nd exit.|
|00005dd0| 0a 58 2a 2f 0a 58 53 54 | 41 54 49 43 20 76 6f 69 |.X*/.XST|ATIC voi|
|00005de0| 64 0a 58 55 73 61 67 65 | 28 29 0a 58 7b 0a 58 20 |d.XUsage|().X{.X |
|00005df0| 20 20 20 46 70 72 69 6e | 74 66 28 73 74 64 65 72 | Fprin|tf(stder|
|00005e00| 72 2c 20 22 55 73 61 67 | 65 3a 5c 6e 5c 74 25 73 |r, "Usag|e:\n\t%s|
|00005e10| 20 25 73 20 25 73 5c 6e | 22 2c 0a 58 09 50 6e 61 | %s %s\n|",.X.Pna|
|00005e20| 6d 65 2c 0a 58 09 22 5b | 2d 2e 5d 20 5b 2d 65 20 |me,.X."[|-.] [-e |
|00005e30| 76 61 72 3d 76 61 6c 5d | 22 2c 0a 58 09 22 6c 69 |var=val]|",.X."li|
|00005e40| 73 74 6e 61 6d 65 20 6c | 69 73 74 61 64 64 72 20 |stname l|istaddr |
|00005e50| 6c 69 73 74 61 64 6d 69 | 6e 20 68 6f 73 74 20 5b |listadmi|n host [|
|00005e60| 61 72 74 69 63 6c 65 5d | 22 29 3b 0a 58 20 20 20 |article]|");.X |
|00005e70| 20 65 78 69 74 28 45 58 | 5f 55 53 41 47 45 29 3b | exit(EX|_USAGE);|
|00005e80| 0a 58 7d 0a 58 0a 58 0a | 58 6d 61 69 6e 28 61 63 |.X}.X.X.|Xmain(ac|
|00005e90| 2c 20 61 76 29 0a 58 20 | 20 20 20 69 6e 74 09 09 |, av).X | int..|
|00005ea0| 09 61 63 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 |.ac;.X | regist|
|00005eb0| 65 72 20 63 68 61 72 09 | 2a 61 76 5b 5d 3b 0a 58 |er char.|*av[];.X|
|00005ec0| 7b 0a 58 20 20 20 20 73 | 74 61 74 69 63 20 63 68 |{.X s|tatic ch|
|00005ed0| 61 72 09 09 74 6d 70 5b | 73 69 7a 65 6f 66 20 54 |ar..tmp[|sizeof T|
|00005ee0| 45 4d 50 46 49 4c 45 5d | 3b 0a 58 20 20 20 20 72 |EMPFILE]|;.X r|
|00005ef0| 65 67 69 73 74 65 72 20 | 46 49 4c 45 09 2a 46 3b |egister |FILE.*F;|
|00005f00| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 48 |.X re|gister H|
|00005f10| 45 41 44 45 52 09 2a 68 | 70 3b 0a 58 20 20 20 20 |EADER.*h|p;.X |
|00005f20| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 2a 70 |register| char.*p|
|00005f30| 3b 0a 58 20 20 20 20 63 | 68 61 72 09 09 2a 73 76 |;.X c|har..*sv|
|00005f40| 5b 31 30 5d 3b 0a 58 20 | 20 20 20 63 68 61 72 09 |[10];.X | char.|
|00005f50| 09 62 75 66 66 5b 42 55 | 46 53 49 5a 5d 3b 0a 58 |.buff[BU|FSIZ];.X|
|00005f60| 20 20 20 20 63 68 61 72 | 09 09 53 65 6e 64 65 72 | char|..Sender|
|00005f70| 41 64 64 72 5b 53 4d 5f | 53 49 5a 45 5d 3b 0a 58 |Addr[SM_|SIZE];.X|
|00005f80| 20 20 20 20 63 68 61 72 | 09 09 54 6f 41 64 64 72 | char|..ToAddr|
|00005f90| 5b 53 4d 5f 53 49 5a 45 | 5d 3b 0a 58 20 20 20 20 |[SM_SIZE|];.X |
|00005fa0| 63 68 61 72 09 09 48 6f | 73 74 5b 53 4d 5f 53 49 |char..Ho|st[SM_SI|
|00005fb0| 5a 45 5d 3b 0a 58 20 20 | 20 20 63 68 61 72 09 09 |ZE];.X | char..|
|00005fc0| 46 75 6c 6c 6e 61 6d 65 | 5b 53 4d 5f 53 49 5a 45 |Fullname|[SM_SIZE|
|00005fd0| 5d 3b 0a 58 20 20 20 20 | 69 6e 74 09 09 09 69 3b |];.X |int...i;|
|00005fe0| 0a 58 20 20 20 20 69 6e | 74 09 09 09 48 61 64 45 |.X in|t...HadE|
|00005ff0| 66 6c 61 67 3b 0a 58 20 | 20 20 20 63 68 61 72 09 |flag;.X | char.|
|00006000| 09 2a 4c 69 73 74 6e 61 | 6d 65 3b 0a 58 20 20 20 |.*Listna|me;.X |
|00006010| 20 63 68 61 72 09 09 2a | 4c 69 73 74 61 64 64 72 | char..*|Listaddr|
|00006020| 3b 0a 58 20 20 20 20 63 | 68 61 72 09 09 2a 4c 69 |;.X c|har..*Li|
|00006030| 73 74 61 64 6d 69 6e 3b | 0a 58 20 20 20 20 63 68 |stadmin;|.X ch|
|00006040| 61 72 09 09 2a 4c 69 73 | 74 68 6f 73 74 3b 0a 58 |ar..*Lis|thost;.X|
|00006050| 20 20 20 20 63 68 61 72 | 09 09 2a 41 72 74 69 63 | char|..*Artic|
|00006060| 6c 65 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 53 65 |le;.X.X | /* Se|
|00006070| 74 20 64 65 66 61 75 6c | 74 73 2e 20 2a 2f 0a 58 |t defaul|ts. */.X|
|00006080| 20 20 20 20 50 6e 61 6d | 65 20 3d 20 28 50 6e 61 | Pnam|e = (Pna|
|00006090| 6d 65 20 3d 20 52 44 58 | 28 61 76 5b 30 5d 2c 20 |me = RDX|(av[0], |
|000060a0| 27 2f 27 29 29 20 3f 20 | 50 6e 61 6d 65 20 2b 20 |'/')) ? |Pname + |
|000060b0| 31 20 3a 20 61 76 5b 30 | 5d 3b 0a 58 20 20 20 20 |1 : av[0|];.X |
|000060c0| 48 61 64 45 66 6c 61 67 | 20 3d 20 46 41 4c 53 45 |HadEflag| = FALSE|
|000060d0| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 50 61 72 73 |;.X.X | /* Pars|
|000060e0| 65 20 4a 43 4c 2e 20 2a | 2f 0a 58 20 20 20 20 77 |e JCL. *|/.X w|
|000060f0| 68 69 6c 65 20 28 28 69 | 20 3d 20 67 65 74 6f 70 |hile ((i| = getop|
|00006100| 74 28 61 63 2c 20 61 76 | 2c 20 22 45 3a 2e 22 29 |t(ac, av|, "E:.")|
|00006110| 29 20 21 3d 20 45 4f 46 | 29 0a 58 09 73 77 69 74 |) != EOF|).X.swit|
|00006120| 63 68 20 28 69 29 20 7b | 0a 58 09 64 65 66 61 75 |ch (i) {|.X.defau|
|00006130| 6c 74 3a 0a 58 09 20 20 | 20 20 55 73 61 67 65 28 |lt:.X. | Usage(|
|00006140| 29 3b 0a 58 09 20 20 20 | 20 2f 2a 20 4e 4f 54 52 |);.X. | /* NOTR|
|00006150| 45 41 43 48 45 44 20 2a | 2f 0a 58 09 63 61 73 65 |EACHED *|/.X.case|
|00006160| 20 27 2e 27 3a 0a 58 09 | 20 20 20 20 44 65 62 75 | '.':.X.| Debu|
|00006170| 67 67 69 6e 67 20 3d 20 | 54 52 55 45 3b 0a 58 09 |gging = |TRUE;.X.|
|00006180| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 09 63 61 73 | brea|k;.X.cas|
|00006190| 65 20 27 45 27 3a 0a 58 | 09 20 20 20 20 69 66 20 |e 'E':.X|. if |
|000061a0| 28 70 75 74 65 6e 76 28 | 43 4f 50 59 28 6f 70 74 |(putenv(|COPY(opt|
|000061b0| 61 72 67 29 29 29 20 7b | 0a 58 09 09 46 70 72 69 |arg))) {|.X..Fpri|
|000061c0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 25 73 3a |ntf(stde|rr, "%s:|
|000061d0| 20 20 43 61 6e 27 74 20 | 61 64 64 20 74 6f 20 65 | Can't |add to e|
|000061e0| 6e 76 69 72 6f 6e 6d 65 | 6e 74 2c 20 25 73 2e 5c |nvironme|nt, %s.\|
|000061f0| 6e 22 2c 0a 58 09 09 20 | 20 20 20 50 6e 61 6d 65 |n",.X.. | Pname|
|00006200| 2c 20 73 74 72 65 72 72 | 6f 72 28 65 72 72 6e 6f |, strerr|or(errno|
|00006210| 29 29 3b 0a 58 09 09 65 | 78 69 74 28 45 58 5f 54 |));.X..e|xit(EX_T|
|00006220| 45 4d 50 46 41 49 4c 29 | 3b 0a 58 09 20 20 20 20 |EMPFAIL)|;.X. |
|00006230| 7d 0a 58 09 20 20 20 20 | 48 61 64 45 66 6c 61 67 |}.X. |HadEflag|
|00006240| 20 3d 20 54 52 55 45 3b | 0a 58 09 20 20 20 20 62 | = TRUE;|.X. b|
|00006250| 72 65 61 6b 3b 0a 58 09 | 7d 0a 58 20 20 20 20 61 |reak;.X.|}.X a|
|00006260| 63 20 2d 3d 20 6f 70 74 | 69 6e 64 3b 0a 58 20 20 |c -= opt|ind;.X |
|00006270| 20 20 61 76 20 2b 3d 20 | 6f 70 74 69 6e 64 3b 0a | av += |optind;.|
|00006280| 58 20 20 20 20 69 66 20 | 28 61 63 20 21 3d 20 34 |X if |(ac != 4|
|00006290| 20 26 26 20 61 63 20 21 | 3d 20 35 29 0a 58 09 55 | && ac !|= 5).X.U|
|000062a0| 73 61 67 65 28 29 3b 0a | 58 0a 58 20 20 20 20 2f |sage();.|X.X /|
|000062b0| 2a 20 50 61 72 73 65 20 | 74 68 65 20 70 6f 73 69 |* Parse |the posi|
|000062c0| 74 69 6f 6e 61 6c 20 70 | 61 72 61 6d 65 74 65 72 |tional p|arameter|
|000062d0| 73 2e 20 2a 2f 0a 58 20 | 20 20 20 4c 69 73 74 6e |s. */.X | Listn|
|000062e0| 61 6d 65 20 3d 20 61 76 | 5b 30 5d 3b 0a 58 20 20 |ame = av|[0];.X |
|000062f0| 20 20 4c 69 73 74 61 64 | 64 72 20 3d 20 61 76 5b | Listad|dr = av[|
|00006300| 31 5d 3b 0a 58 20 20 20 | 20 4c 69 73 74 61 64 6d |1];.X | Listadm|
|00006310| 69 6e 20 3d 20 61 76 5b | 32 5d 3b 0a 58 20 20 20 |in = av[|2];.X |
|00006320| 20 4c 69 73 74 68 6f 73 | 74 20 3d 20 61 76 5b 33 | Listhos|t = av[3|
|00006330| 5d 3b 0a 58 20 20 20 20 | 41 72 74 69 63 6c 65 20 |];.X |Article |
|00006340| 3d 20 61 76 5b 34 5d 3b | 0a 58 0a 58 20 20 20 20 |= av[4];|.X.X |
|00006350| 2f 2a 20 41 72 72 61 6e | 67 65 20 66 6f 72 20 6c |/* Arran|ge for l|
|00006360| 6f 67 67 69 6e 67 2e 20 | 2a 2f 0a 58 20 20 20 20 |ogging. |*/.X |
|00006370| 69 66 20 28 21 44 65 62 | 75 67 67 69 6e 67 20 26 |if (!Deb|ugging &|
|00006380| 26 20 66 72 65 6f 70 65 | 6e 28 45 52 52 5f 4c 4f |& freope|n(ERR_LO|
|00006390| 47 2c 20 22 61 22 2c 20 | 73 74 64 65 72 72 29 20 |G, "a", |stderr) |
|000063a0| 3d 3d 20 4e 55 4c 4c 29 | 0a 58 09 2f 2a 20 53 69 |== NULL)|.X./* Si|
|000063b0| 67 68 3b 20 65 72 72 6f | 72 20 69 6e 20 65 72 72 |gh; erro|r in err|
|000063c0| 6f 72 20 68 61 6e 64 6c | 65 72 2e 2e 2e 2e 20 2a |or handl|er.... *|
|000063d0| 2f 0a 58 09 28 76 6f 69 | 64 29 66 72 65 6f 70 65 |/.X.(voi|d)freope|
|000063e0| 6e 28 22 2f 64 65 76 2f | 63 6f 6e 73 6f 6c 65 22 |n("/dev/|console"|
|000063f0| 2c 20 22 77 22 2c 20 73 | 74 64 65 72 72 29 3b 0a |, "w", s|tderr);.|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.