home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / news / transport / cnews / msgidd / msgidd.shar next >
SHell self-extracting ARchive  |  1992-07-26  |  23.7 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


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

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file C source, ASCII text default
100% TrID shar SHell self-extracting aRchive (var.2) default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 23 20 54 6f 20 75 6e 62 | 75 6e 64 6c 65 2c 20 73 |# To unb|undle, s|
|00000010| 68 20 74 68 69 73 20 66 | 69 6c 65 0a 65 63 68 6f |h this f|ile.echo|
|00000020| 20 4d 61 6b 65 66 69 6c | 65 2e 64 69 66 66 73 20 | Makefil|e.diffs |
|00000030| 31 3e 26 32 0a 73 65 64 | 20 27 73 2f 5e 58 2f 2f |1>&2.sed| 's/^X//|
|00000040| 27 20 3e 4d 61 6b 65 66 | 69 6c 65 2e 64 69 66 66 |' >Makef|ile.diff|
|00000050| 73 20 3c 3c 27 21 27 0a | 58 2a 2a 2a 20 2f 74 6d |s <<'!'.|X*** /tm|
|00000060| 70 2f 2c 52 43 53 74 31 | 61 30 33 30 30 34 09 53 |p/,RCSt1|a03004.S|
|00000070| 61 74 20 41 75 67 20 31 | 37 20 31 33 3a 33 37 3a |at Aug 1|7 13:37:|
|00000080| 32 32 20 31 39 39 31 0a | 58 2d 2d 2d 20 4d 61 6b |22 1991.|X--- Mak|
|00000090| 65 66 69 6c 65 09 53 61 | 74 20 41 75 67 20 31 37 |efile.Sa|t Aug 17|
|000000a0| 20 31 32 3a 34 30 3a 30 | 30 20 31 39 39 31 0a 58 | 12:40:0|0 1991.X|
|000000b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0a |********|*******.|
|000000c0| 58 2a 2a 2a 20 31 2c 34 | 20 2a 2a 2a 2a 0a 58 21 |X*** 1,4| ****.X!|
|000000d0| 20 23 20 24 48 65 61 64 | 65 72 3a 20 4d 61 6b 65 | # $Head|er: Make|
|000000e0| 66 69 6c 65 2c 76 20 31 | 2e 33 20 39 30 2f 31 32 |file,v 1|.3 90/12|
|000000f0| 2f 32 32 20 31 30 3a 31 | 36 3a 30 32 20 73 6f 62 |/22 10:1|6:02 sob|
|00000100| 20 45 78 70 20 24 0a 58 | 20 20 23 20 4d 61 6b 65 | Exp $.X| # Make|
|00000110| 66 69 6c 65 20 66 6f 72 | 20 4e 4e 54 50 20 73 65 |file for| NNTP se|
|00000120| 72 76 65 72 0a 58 20 20 | 23 0a 58 20 20 0a 58 2d |rver.X |#.X .X-|
|00000130| 2d 2d 20 31 2c 34 20 2d | 2d 2d 2d 0a 58 21 20 23 |-- 1,4 -|---.X! #|
|00000140| 20 24 48 65 61 64 65 72 | 3a 20 4d 61 6b 65 66 69 | $Header|: Makefi|
|00000150| 6c 65 2c 76 20 31 2e 34 | 20 39 31 2f 30 38 2f 31 |le,v 1.4| 91/08/1|
|00000160| 37 20 31 32 3a 30 34 3a | 31 33 20 76 69 78 69 65 |7 12:04:|13 vixie|
|00000170| 20 4c 6f 63 6b 65 64 20 | 24 0a 58 20 20 23 20 4d | Locked |$.X # M|
|00000180| 61 6b 65 66 69 6c 65 20 | 66 6f 72 20 4e 4e 54 50 |akefile |for NNTP|
|00000190| 20 73 65 72 76 65 72 0a | 58 20 20 23 0a 58 20 20 | server.|X #.X |
|000001a0| 0a 58 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X******|********|
|000001b0| 2a 0a 58 2a 2a 2a 20 36 | 2c 31 38 20 2a 2a 2a 2a |*.X*** 6|,18 ****|
|000001c0| 0a 58 20 20 09 61 68 62 | 73 2e 6f 20 67 6c 6f 62 |.X .ahb|s.o glob|
|000001d0| 61 6c 73 2e 6f 20 67 72 | 6f 75 70 2e 6f 20 68 65 |als.o gr|oup.o he|
|000001e0| 6c 70 2e 6f 20 69 68 61 | 76 65 2e 6f 20 6c 69 73 |lp.o iha|ve.o lis|
|000001f0| 74 2e 6f 20 6d 69 73 63 | 2e 6f 20 6e 65 74 61 75 |t.o misc|.o netau|
|00000200| 78 2e 6f 20 5c 0a 58 20 | 20 09 6e 65 77 67 72 6f |x.o \.X | .newgro|
|00000210| 75 70 73 2e 6f 20 6e 65 | 77 6e 65 77 73 2e 6f 20 |ups.o ne|wnews.o |
|00000220| 6e 65 78 74 6c 61 73 74 | 2e 6f 20 6e 67 6d 61 74 |nextlast|.o ngmat|
|00000230| 63 68 2e 6f 20 70 6f 73 | 74 2e 6f 20 70 61 72 73 |ch.o pos|t.o pars|
|00000240| 69 74 2e 6f 20 73 63 61 | 6e 64 69 72 2e 6f 20 5c |it.o sca|ndir.o \|
|00000250| 0a 58 20 20 09 73 6c 61 | 76 65 2e 6f 20 73 70 61 |.X .sla|ve.o spa|
|00000260| 77 6e 2e 6f 20 73 74 72 | 63 61 73 65 63 6d 70 2e |wn.o str|casecmp.|
|00000270| 6f 20 73 75 62 6e 65 74 | 2e 6f 20 74 69 6d 65 2e |o subnet|.o time.|
|00000280| 6f 20 78 68 64 72 2e 6f | 20 66 61 6b 65 73 79 73 |o xhdr.o| fakesys|
|00000290| 6c 6f 67 2e 6f 20 5c 0a | 58 21 20 09 62 61 74 63 |log.o \.|X! .batc|
|000002a0| 68 2e 6f 20 61 75 74 68 | 2e 6f 20 74 69 6d 65 72 |h.o auth|.o timer|
|000002b0| 2e 6f 20 2e 2e 2f 63 6f | 6d 6d 6f 6e 2f 76 65 72 |.o ../co|mmon/ver|
|000002c0| 73 69 6f 6e 2e 6f 0a 58 | 20 20 0a 58 20 20 53 52 |sion.o.X| .X SR|
|000002d0| 56 52 53 52 43 20 3d 20 | 6d 61 69 6e 2e 63 20 73 |VRSRC = |main.c s|
|000002e0| 65 72 76 65 2e 63 20 61 | 63 63 65 73 73 2e 63 20 |erve.c a|ccess.c |
|000002f0| 61 63 63 65 73 73 5f 69 | 6e 65 74 2e 63 20 61 63 |access_i|net.c ac|
|00000300| 63 65 73 73 5f 64 6e 65 | 74 2e 63 20 61 63 74 69 |cess_dne|t.c acti|
|00000310| 76 65 2e 63 20 5c 0a 58 | 20 20 09 61 68 62 73 2e |ve.c \.X| .ahbs.|
|00000320| 63 20 67 6c 6f 62 61 6c | 73 2e 63 20 67 72 6f 75 |c global|s.c grou|
|00000330| 70 2e 63 20 68 65 6c 70 | 2e 63 20 69 68 61 76 65 |p.c help|.c ihave|
|00000340| 2e 63 20 6c 69 73 74 2e | 63 20 6d 69 73 63 2e 63 |.c list.|c misc.c|
|00000350| 20 6e 65 74 61 75 78 2e | 63 20 5c 0a 58 20 20 09 | netaux.|c \.X .|
|00000360| 6e 65 77 67 72 6f 75 70 | 73 2e 63 20 6e 65 77 6e |newgroup|s.c newn|
|00000370| 65 77 73 2e 63 20 6e 65 | 78 74 6c 61 73 74 2e 63 |ews.c ne|xtlast.c|
|00000380| 20 6e 67 6d 61 74 63 68 | 2e 63 20 70 6f 73 74 2e | ngmatch|.c post.|
|00000390| 63 20 70 61 72 73 69 74 | 2e 63 20 73 63 61 6e 64 |c parsit|.c scand|
|000003a0| 69 72 2e 63 20 5c 0a 58 | 20 20 09 73 6c 61 76 65 |ir.c \.X| .slave|
|000003b0| 2e 63 20 73 70 61 77 6e | 2e 63 20 73 74 72 63 61 |.c spawn|.c strca|
|000003c0| 73 65 63 6d 70 2e 63 20 | 73 75 62 6e 65 74 2e 63 |secmp.c |subnet.c|
|000003d0| 20 74 69 6d 65 2e 63 20 | 78 68 64 72 2e 63 20 66 | time.c |xhdr.c f|
|000003e0| 61 6b 65 73 79 73 6c 6f | 67 2e 63 20 5c 0a 58 21 |akesyslo|g.c \.X!|
|000003f0| 20 09 62 61 74 63 68 2e | 63 20 61 75 74 68 2e 63 | .batch.|c auth.c|
|00000400| 20 74 69 6d 65 72 2e 63 | 20 2e 2e 2f 63 6f 6d 6d | timer.c| ../comm|
|00000410| 6f 6e 2f 76 65 72 73 69 | 6f 6e 2e 63 0a 58 20 20 |on/versi|on.c.X |
|00000420| 0a 58 20 20 53 52 56 52 | 49 4e 43 20 3d 20 63 6f |.X SRVR|INC = co|
|00000430| 6d 6d 6f 6e 2e 68 20 2e | 2e 2f 63 6f 6d 6d 6f 6e |mmon.h .|./common|
|00000440| 2f 63 6f 6e 66 2e 68 20 | 2e 2e 2f 63 6f 6d 6d 6f |/conf.h |../commo|
|00000450| 6e 2f 6e 6e 74 70 2e 68 | 20 74 69 6d 65 72 2e 68 |n/nntp.h| timer.h|
|00000460| 0a 58 20 20 0a 58 2d 2d | 2d 20 36 2c 31 38 20 2d |.X .X--|- 6,18 -|
|00000470| 2d 2d 2d 0a 58 20 20 09 | 61 68 62 73 2e 6f 20 67 |---.X .|ahbs.o g|
|00000480| 6c 6f 62 61 6c 73 2e 6f | 20 67 72 6f 75 70 2e 6f |lobals.o| group.o|
|00000490| 20 68 65 6c 70 2e 6f 20 | 69 68 61 76 65 2e 6f 20 | help.o |ihave.o |
|000004a0| 6c 69 73 74 2e 6f 20 6d | 69 73 63 2e 6f 20 6e 65 |list.o m|isc.o ne|
|000004b0| 74 61 75 78 2e 6f 20 5c | 0a 58 20 20 09 6e 65 77 |taux.o \|.X .new|
|000004c0| 67 72 6f 75 70 73 2e 6f | 20 6e 65 77 6e 65 77 73 |groups.o| newnews|
|000004d0| 2e 6f 20 6e 65 78 74 6c | 61 73 74 2e 6f 20 6e 67 |.o nextl|ast.o ng|
|000004e0| 6d 61 74 63 68 2e 6f 20 | 70 6f 73 74 2e 6f 20 70 |match.o |post.o p|
|000004f0| 61 72 73 69 74 2e 6f 20 | 73 63 61 6e 64 69 72 2e |arsit.o |scandir.|
|00000500| 6f 20 5c 0a 58 20 20 09 | 73 6c 61 76 65 2e 6f 20 |o \.X .|slave.o |
|00000510| 73 70 61 77 6e 2e 6f 20 | 73 74 72 63 61 73 65 63 |spawn.o |strcasec|
|00000520| 6d 70 2e 6f 20 73 75 62 | 6e 65 74 2e 6f 20 74 69 |mp.o sub|net.o ti|
|00000530| 6d 65 2e 6f 20 78 68 64 | 72 2e 6f 20 66 61 6b 65 |me.o xhd|r.o fake|
|00000540| 73 79 73 6c 6f 67 2e 6f | 20 5c 0a 58 21 20 09 62 |syslog.o| \.X! .b|
|00000550| 61 74 63 68 2e 6f 20 61 | 75 74 68 2e 6f 20 74 69 |atch.o a|uth.o ti|
|00000560| 6d 65 72 2e 6f 20 6d 73 | 67 69 64 2e 6f 20 2e 2e |mer.o ms|gid.o ..|
|00000570| 2f 63 6f 6d 6d 6f 6e 2f | 76 65 72 73 69 6f 6e 2e |/common/|version.|
|00000580| 6f 0a 58 20 20 0a 58 20 | 20 53 52 56 52 53 52 43 |o.X .X | SRVRSRC|
|00000590| 20 3d 20 6d 61 69 6e 2e | 63 20 73 65 72 76 65 2e | = main.|c serve.|
|000005a0| 63 20 61 63 63 65 73 73 | 2e 63 20 61 63 63 65 73 |c access|.c acces|
|000005b0| 73 5f 69 6e 65 74 2e 63 | 20 61 63 63 65 73 73 5f |s_inet.c| access_|
|000005c0| 64 6e 65 74 2e 63 20 61 | 63 74 69 76 65 2e 63 20 |dnet.c a|ctive.c |
|000005d0| 5c 0a 58 20 20 09 61 68 | 62 73 2e 63 20 67 6c 6f |\.X .ah|bs.c glo|
|000005e0| 62 61 6c 73 2e 63 20 67 | 72 6f 75 70 2e 63 20 68 |bals.c g|roup.c h|
|000005f0| 65 6c 70 2e 63 20 69 68 | 61 76 65 2e 63 20 6c 69 |elp.c ih|ave.c li|
|00000600| 73 74 2e 63 20 6d 69 73 | 63 2e 63 20 6e 65 74 61 |st.c mis|c.c neta|
|00000610| 75 78 2e 63 20 5c 0a 58 | 20 20 09 6e 65 77 67 72 |ux.c \.X| .newgr|
|00000620| 6f 75 70 73 2e 63 20 6e | 65 77 6e 65 77 73 2e 63 |oups.c n|ewnews.c|
|00000630| 20 6e 65 78 74 6c 61 73 | 74 2e 63 20 6e 67 6d 61 | nextlas|t.c ngma|
|00000640| 74 63 68 2e 63 20 70 6f | 73 74 2e 63 20 70 61 72 |tch.c po|st.c par|
|00000650| 73 69 74 2e 63 20 73 63 | 61 6e 64 69 72 2e 63 20 |sit.c sc|andir.c |
|00000660| 5c 0a 58 20 20 09 73 6c | 61 76 65 2e 63 20 73 70 |\.X .sl|ave.c sp|
|00000670| 61 77 6e 2e 63 20 73 74 | 72 63 61 73 65 63 6d 70 |awn.c st|rcasecmp|
|00000680| 2e 63 20 73 75 62 6e 65 | 74 2e 63 20 74 69 6d 65 |.c subne|t.c time|
|00000690| 2e 63 20 78 68 64 72 2e | 63 20 66 61 6b 65 73 79 |.c xhdr.|c fakesy|
|000006a0| 73 6c 6f 67 2e 63 20 5c | 0a 58 21 20 09 62 61 74 |slog.c \|.X! .bat|
|000006b0| 63 68 2e 63 20 61 75 74 | 68 2e 63 20 74 69 6d 65 |ch.c aut|h.c time|
|000006c0| 72 2e 63 20 6d 73 67 69 | 64 2e 63 20 2e 2e 2f 63 |r.c msgi|d.c ../c|
|000006d0| 6f 6d 6d 6f 6e 2f 76 65 | 72 73 69 6f 6e 2e 63 0a |ommon/ve|rsion.c.|
|000006e0| 58 20 20 0a 58 20 20 53 | 52 56 52 49 4e 43 20 3d |X .X S|RVRINC =|
|000006f0| 20 63 6f 6d 6d 6f 6e 2e | 68 20 2e 2e 2f 63 6f 6d | common.|h ../com|
|00000700| 6d 6f 6e 2f 63 6f 6e 66 | 2e 68 20 2e 2e 2f 63 6f |mon/conf|.h ../co|
|00000710| 6d 6d 6f 6e 2f 6e 6e 74 | 70 2e 68 20 74 69 6d 65 |mmon/nnt|p.h time|
|00000720| 72 2e 68 0a 58 20 20 0a | 58 2a 2a 2a 2a 2a 2a 2a |r.h.X .|X*******|
|00000730| 2a 2a 2a 2a 2a 2a 2a 2a | 0a 58 2a 2a 2a 20 32 31 |********|.X*** 21|
|00000740| 2c 33 33 20 2a 2a 2a 2a | 0a 58 20 20 23 20 2d 6c |,33 ****|.X # -l|
|00000750| 64 62 6d 20 68 65 72 65 | 20 69 66 20 79 6f 75 27 |dbm here| if you'|
|00000760| 76 65 20 23 64 65 66 69 | 6e 65 27 65 64 20 44 42 |ve #defi|ne'ed DB|
|00000770| 4d 20 69 6e 20 2e 2e 2f | 63 6f 6d 6d 6f 6e 2f 63 |M in ../|common/c|
|00000780| 6f 6e 66 2e 68 0a 58 20 | 20 4c 49 42 53 09 3d 20 |onf.h.X | LIBS.= |
|00000790| 2d 6c 64 62 6d 0a 58 20 | 20 0a 58 21 20 43 46 4c |-ldbm.X | .X! CFL|
|000007a0| 41 47 53 09 3d 20 2d 4f | 0a 58 20 20 0a 58 20 20 |AGS.= -O|.X .X |
|000007b0| 23 20 57 68 65 72 65 20 | 6e 6e 74 70 64 20 69 73 |# Where |nntpd is|
|000007c0| 20 67 6f 69 6e 67 20 74 | 6f 20 6c 69 76 65 0a 58 | going t|o live.X|
|000007d0| 20 20 0a 58 21 20 44 45 | 53 54 44 49 52 09 3d 20 | .X! DE|STDIR.= |
|000007e0| 2f 65 74 63 0a 58 20 20 | 0a 58 21 20 61 6c 6c 3a |/etc.X |.X! all:|
|000007f0| 09 6e 6e 74 70 64 0a 58 | 20 20 0a 58 20 20 6e 6e |.nntpd.X| .X nn|
|00000800| 74 70 64 3a 20 24 7b 53 | 52 56 52 4f 42 4a 7d 20 |tpd: ${S|RVROBJ} |
|00000810| 24 7b 53 52 56 52 49 4e | 43 7d 0a 58 20 20 09 24 |${SRVRIN|C}.X .$|
|00000820| 7b 43 43 7d 20 24 7b 43 | 46 4c 41 47 53 7d 20 2d |{CC} ${C|FLAGS} -|
|00000830| 6f 20 6e 6e 74 70 64 20 | 24 7b 53 52 56 52 4f 42 |o nntpd |${SRVROB|
|00000840| 4a 7d 20 24 7b 4c 49 42 | 53 7d 0a 58 2d 2d 2d 20 |J} ${LIB|S}.X--- |
|00000850| 32 31 2c 33 33 20 2d 2d | 2d 2d 0a 58 20 20 23 20 |21,33 --|--.X # |
|00000860| 2d 6c 64 62 6d 20 68 65 | 72 65 20 69 66 20 79 6f |-ldbm he|re if yo|
|00000870| 75 27 76 65 20 23 64 65 | 66 69 6e 65 27 65 64 20 |u've #de|fine'ed |
|00000880| 44 42 4d 20 69 6e 20 2e | 2e 2f 63 6f 6d 6d 6f 6e |DBM in .|./common|
|00000890| 2f 63 6f 6e 66 2e 68 0a | 58 20 20 4c 49 42 53 09 |/conf.h.|X LIBS.|
|000008a0| 3d 20 2d 6c 64 62 6d 0a | 58 20 20 0a 58 21 20 43 |= -ldbm.|X .X! C|
|000008b0| 46 4c 41 47 53 09 3d 20 | 2d 4f 20 2d 49 2f 75 73 |FLAGS.= |-O -I/us|
|000008c0| 72 2f 6c 6f 63 61 6c 2f | 69 6e 63 6c 75 64 65 0a |r/local/|include.|
|000008d0| 58 20 20 0a 58 20 20 23 | 20 57 68 65 72 65 20 6e |X .X #| Where n|
|000008e0| 6e 74 70 64 20 69 73 20 | 67 6f 69 6e 67 20 74 6f |ntpd is |going to|
|000008f0| 20 6c 69 76 65 0a 58 20 | 20 0a 58 21 20 44 45 53 | live.X | .X! DES|
|00000900| 54 44 49 52 09 3d 20 2f | 75 73 72 2f 6c 69 62 2f |TDIR.= /|usr/lib/|
|00000910| 6e 65 77 73 2f 65 74 63 | 0a 58 20 20 0a 58 21 20 |news/etc|.X .X! |
|00000920| 61 6c 6c 3a 09 6e 6e 74 | 70 64 20 6d 73 67 69 64 |all:.nnt|pd msgid|
|00000930| 64 0a 58 20 20 0a 58 20 | 20 6e 6e 74 70 64 3a 20 |d.X .X | nntpd: |
|00000940| 24 7b 53 52 56 52 4f 42 | 4a 7d 20 24 7b 53 52 56 |${SRVROB|J} ${SRV|
|00000950| 52 49 4e 43 7d 0a 58 20 | 20 09 24 7b 43 43 7d 20 |RINC}.X | .${CC} |
|00000960| 24 7b 43 46 4c 41 47 53 | 7d 20 2d 6f 20 6e 6e 74 |${CFLAGS|} -o nnt|
|00000970| 70 64 20 24 7b 53 52 56 | 52 4f 42 4a 7d 20 24 7b |pd ${SRV|ROBJ} ${|
|00000980| 4c 49 42 53 7d 0a 58 2a | 2a 2a 2a 2a 2a 2a 2a 2a |LIBS}.X*|********|
|00000990| 2a 2a 2a 2a 2a 2a 0a 58 | 2a 2a 2a 20 33 34 2c 34 |******.X|*** 34,4|
|000009a0| 38 20 2a 2a 2a 2a 0a 58 | 20 20 0a 58 20 20 24 7b |8 ****.X| .X ${|
|000009b0| 53 52 56 52 4f 42 4a 7d | 3a 20 24 7b 53 52 56 52 |SRVROBJ}|: ${SRVR|
|000009c0| 49 4e 43 7d 0a 58 20 20 | 0a 58 21 20 69 6e 73 74 |INC}.X |.X! inst|
|000009d0| 61 6c 6c 3a 20 6e 6e 74 | 70 64 0a 58 20 20 09 63 |all: nnt|pd.X .c|
|000009e0| 70 20 6e 6e 74 70 64 20 | 24 7b 44 45 53 54 44 49 |p nntpd |${DESTDI|
|000009f0| 52 7d 2f 6e 6e 74 70 64 | 0a 58 20 20 09 63 68 6d |R}/nntpd|.X .chm|
|00000a00| 6f 64 20 37 31 31 20 24 | 7b 44 45 53 54 44 49 52 |od 711 $|{DESTDIR|
|00000a10| 7d 2f 6e 6e 74 70 64 0a | 58 20 20 0a 58 20 20 6c |}/nntpd.|X .X l|
|00000a20| 69 6e 74 3a 0a 58 20 20 | 09 6c 69 6e 74 20 24 7b |int:.X |.lint ${|
|00000a30| 53 52 56 52 53 52 43 7d | 0a 58 20 20 0a 58 20 20 |SRVRSRC}|.X .X |
|00000a40| 63 6c 65 61 6e 3a 0a 58 | 21 20 09 2d 72 6d 20 2d |clean:.X|! .-rm -|
|00000a50| 66 20 2a 2e 6f 20 6e 6e | 74 70 64 20 6d 61 6b 65 |f *.o nn|tpd make|
|00000a60| 2a 2e 6f 75 74 20 61 2e | 6f 75 74 0a 58 20 20 0a |*.out a.|out.X .|
|00000a70| 58 20 20 64 69 73 74 72 | 69 62 3a 20 63 6c 65 61 |X distr|ib: clea|
|00000a80| 6e 0a 58 20 20 09 72 6d | 20 2d 72 66 20 53 43 43 |n.X .rm| -rf SCC|
|00000a90| 53 20 73 61 76 65 20 74 | 61 67 73 0a 58 2d 2d 2d |S save t|ags.X---|
|00000aa0| 20 33 34 2c 35 34 20 2d | 2d 2d 2d 0a 58 20 20 0a | 34,54 -|---.X .|
|00000ab0| 58 20 20 24 7b 53 52 56 | 52 4f 42 4a 7d 3a 20 24 |X ${SRV|ROBJ}: $|
|00000ac0| 7b 53 52 56 52 49 4e 43 | 7d 0a 58 20 20 0a 58 21 |{SRVRINC|}.X .X!|
|00000ad0| 20 6d 73 67 69 64 64 3a | 20 6d 73 67 69 64 64 2e | msgidd:| msgidd.|
|00000ae0| 63 0a 58 21 20 09 24 7b | 43 43 7d 20 24 7b 43 46 |c.X! .${|CC} ${CF|
|00000af0| 4c 41 47 53 7d 20 2d 6f | 20 6d 73 67 69 64 64 20 |LAGS} -o| msgidd |
|00000b00| 6d 73 67 69 64 64 2e 63 | 0a 58 21 20 0a 58 21 20 |msgidd.c|.X! .X! |
|00000b10| 69 6e 73 74 61 6c 6c 3a | 20 6e 6e 74 70 64 20 6d |install:| nntpd m|
|00000b20| 73 67 69 64 64 0a 58 20 | 20 09 63 70 20 6e 6e 74 |sgidd.X | .cp nnt|
|00000b30| 70 64 20 24 7b 44 45 53 | 54 44 49 52 7d 2f 6e 6e |pd ${DES|TDIR}/nn|
|00000b40| 74 70 64 0a 58 20 20 09 | 63 68 6d 6f 64 20 37 31 |tpd.X .|chmod 71|
|00000b50| 31 20 24 7b 44 45 53 54 | 44 49 52 7d 2f 6e 6e 74 |1 ${DEST|DIR}/nnt|
|00000b60| 70 64 0a 58 2b 20 09 6d | 76 20 2d 66 20 24 7b 44 |pd.X+ .m|v -f ${D|
|00000b70| 45 53 54 44 49 52 7d 2f | 6d 73 67 69 64 64 20 24 |ESTDIR}/|msgidd $|
|00000b80| 7b 44 45 53 54 44 49 52 | 7d 2f 6d 73 67 69 64 64 |{DESTDIR|}/msgidd|
|00000b90| 2e 6f 6c 64 0a 58 2b 20 | 09 63 70 20 6d 73 67 69 |.old.X+ |.cp msgi|
|00000ba0| 64 64 20 24 7b 44 45 53 | 54 44 49 52 7d 2f 6d 73 |dd ${DES|TDIR}/ms|
|00000bb0| 67 69 64 64 0a 58 2b 20 | 09 63 68 6d 6f 64 20 37 |gidd.X+ |.chmod 7|
|00000bc0| 31 31 20 24 7b 44 45 53 | 54 44 49 52 7d 2f 6d 73 |11 ${DES|TDIR}/ms|
|00000bd0| 67 69 64 64 0a 58 20 20 | 0a 58 20 20 6c 69 6e 74 |gidd.X |.X lint|
|00000be0| 3a 0a 58 20 20 09 6c 69 | 6e 74 20 24 7b 53 52 56 |:.X .li|nt ${SRV|
|00000bf0| 52 53 52 43 7d 0a 58 20 | 20 0a 58 20 20 63 6c 65 |RSRC}.X | .X cle|
|00000c00| 61 6e 3a 0a 58 21 20 09 | 2d 72 6d 20 2d 66 20 2a |an:.X! .|-rm -f *|
|00000c10| 2e 6f 20 6e 6e 74 70 64 | 20 6d 73 67 69 64 64 20 |.o nntpd| msgidd |
|00000c20| 6d 61 6b 65 2a 2e 6f 75 | 74 20 61 2e 6f 75 74 0a |make*.ou|t a.out.|
|00000c30| 58 20 20 0a 58 20 20 64 | 69 73 74 72 69 62 3a 20 |X .X d|istrib: |
|00000c40| 63 6c 65 61 6e 0a 58 20 | 20 09 72 6d 20 2d 72 66 |clean.X | .rm -rf|
|00000c50| 20 53 43 43 53 20 73 61 | 76 65 20 74 61 67 73 0a | SCCS sa|ve tags.|
|00000c60| 21 0a 65 63 68 6f 20 52 | 45 41 44 4d 45 2e 64 65 |!.echo R|EADME.de|
|00000c70| 63 77 72 6c 20 31 3e 26 | 32 0a 73 65 64 20 27 73 |cwrl 1>&|2.sed 's|
|00000c80| 2f 5e 58 2f 2f 27 20 3e | 52 45 41 44 4d 45 2e 64 |/^X//' >|README.d|
|00000c90| 65 63 77 72 6c 20 3c 3c | 27 21 27 0a 4e 4e 54 50 |ecwrl <<|'!'.NNTP|
|00000ca0| 20 64 61 65 6d 6f 6e 20 | 2d 2d 20 44 45 43 57 52 | daemon |-- DECWR|
|00000cb0| 4c 20 6d 6f 64 73 0a 50 | 61 75 6c 20 56 69 78 69 |L mods.P|aul Vixi|
|00000cc0| 65 20 3c 76 69 78 69 65 | 40 6e 73 6c 2e 64 65 63 |e <vixie|@nsl.dec|
|00000cd0| 2e 63 6f 6d 3e 20 31 37 | 20 41 75 67 75 73 74 20 |.com> 17| August |
|00000ce0| 31 39 39 31 20 28 63 6c | 65 61 6e 65 64 20 75 70 |1991 (cl|eaned up|
|00000cf0| 2c 20 73 6e 69 66 66 69 | 6e 67 20 73 69 67 70 69 |, sniffi|ng sigpi|
|00000d00| 70 65 73 29 0a 50 61 75 | 6c 20 56 69 78 69 65 20 |pes).Pau|l Vixie |
|00000d10| 3c 76 69 78 69 65 40 77 | 72 6c 2e 64 65 63 2e 63 |<vixie@w|rl.dec.c|
|00000d20| 6f 6d 3e 20 31 33 20 46 | 65 62 72 75 61 72 79 20 |om> 13 F|ebruary |
|00000d30| 31 39 39 31 20 28 70 6f | 72 74 65 64 20 74 6f 20 |1991 (po|rted to |
|00000d40| 31 2e 35 2e 31 31 2c 20 | 77 2f 20 6c 65 72 65 73 |1.5.11, |w/ leres|
|00000d50| 29 0a 50 61 75 6c 20 56 | 69 78 69 65 20 3c 76 69 |).Paul V|ixie <vi|
|00000d60| 78 69 65 40 77 72 6c 2e | 64 65 63 2e 63 6f 6d 3e |xie@wrl.|dec.com>|
|00000d70| 20 30 34 20 4f 63 74 6f | 62 65 72 20 31 39 39 30 | 04 Octo|ber 1990|
|00000d80| 20 28 69 6d 70 72 6f 76 | 65 64 20 62 79 20 53 74 | (improv|ed by St|
|00000d90| 65 76 65 20 53 63 68 6f | 63 68 29 0a 50 61 75 6c |eve Scho|ch).Paul|
|00000da0| 20 56 69 78 69 65 20 3c | 76 69 78 69 65 40 77 72 | Vixie <|vixie@wr|
|00000db0| 6c 2e 64 65 63 2e 63 6f | 6d 3e 20 31 38 20 53 65 |l.dec.co|m> 18 Se|
|00000dc0| 70 74 65 6d 62 65 72 20 | 31 39 39 30 20 28 69 6d |ptember |1990 (im|
|00000dd0| 70 72 6f 76 65 64 20 62 | 79 20 6b 65 6e 40 73 64 |proved b|y ken@sd|
|00000de0| 64 2e 68 70 2e 63 6f 6d | 29 0a 50 61 75 6c 20 56 |d.hp.com|).Paul V|
|00000df0| 69 78 69 65 20 3c 76 69 | 78 69 65 40 77 72 6c 2e |ixie <vi|xie@wrl.|
|00000e00| 64 65 63 2e 63 6f 6d 3e | 20 31 36 20 4a 75 6e 65 |dec.com>| 16 June|
|00000e10| 20 31 39 39 30 20 28 77 | 6f 72 6b 73 20 6f 6e 20 | 1990 (w|orks on |
|00000e20| 31 2e 35 2e 38 29 0a 0a | 54 68 65 73 65 20 6d 6f |1.5.8)..|These mo|
|00000e30| 64 69 66 69 63 61 74 69 | 6f 6e 73 20 61 64 64 20 |dificati|ons add |
|00000e40| 61 20 22 6d 65 73 73 61 | 67 65 20 49 44 20 64 61 |a "messa|ge ID da|
|00000e50| 65 6d 6f 6e 22 20 74 6f | 20 6e 6e 74 70 64 2e 20 |emon" to| nntpd. |
|00000e60| 20 4e 6e 74 70 64 20 77 | 69 6c 6c 20 71 75 65 72 | Nntpd w|ill quer|
|00000e70| 79 0a 74 68 69 73 20 64 | 61 65 6d 6f 6e 20 61 62 |y.this d|aemon ab|
|00000e80| 6f 75 74 20 61 6c 6c 20 | 6f 66 66 65 72 65 64 20 |out all |offered |
|00000e90| 6d 65 73 73 61 67 65 20 | 49 44 27 73 2c 20 61 6e |message |ID's, an|
|00000ea0| 64 20 74 68 65 20 64 61 | 65 6d 6f 6e 20 77 69 6c |d the da|emon wil|
|00000eb0| 6c 20 6b 65 65 70 20 61 | 0a 6d 61 6e 61 67 65 64 |l keep a|.managed|
|00000ec0| 2c 20 6d 65 6d 6f 72 79 | 20 72 65 73 69 64 65 6e |, memory| residen|
|00000ed0| 74 20 6c 69 73 74 20 6f | 66 20 72 65 63 65 6e 74 |t list o|f recent|
|00000ee0| 20 49 44 27 73 2e 20 20 | 22 52 65 63 65 6e 74 22 | ID's. |"Recent"|
|00000ef0| 20 6d 65 61 6e 73 20 49 | 44 27 73 20 6f 66 66 65 | means I|D's offe|
|00000f00| 72 65 64 0a 77 69 74 68 | 69 6e 20 74 68 65 20 6c |red.with|in the l|
|00000f10| 61 73 74 20 4e 20 28 7e | 31 34 34 30 2c 20 6f 72 |ast N (~|1440, or|
|00000f20| 20 6f 6e 65 20 66 75 6c | 6c 20 64 61 79 29 20 6d | one ful|l day) m|
|00000f30| 69 6e 75 74 65 73 2e 20 | 20 49 66 20 61 6e 20 49 |inutes. | If an I|
|00000f40| 44 20 68 61 73 20 62 65 | 65 6e 0a 69 6e 71 75 69 |D has be|en.inqui|
|00000f50| 72 65 64 20 6f 66 20 69 | 6e 20 74 68 65 20 6c 61 |red of i|n the la|
|00000f60| 73 74 20 4e 20 6d 69 6e | 75 74 65 73 2c 20 74 68 |st N min|utes, th|
|00000f70| 65 20 64 61 65 6d 6f 6e | 20 73 61 79 73 20 22 64 |e daemon| says "d|
|00000f80| 6f 6e 27 74 20 61 63 63 | 65 70 74 20 69 74 22 2c |on't acc|ept it",|
|00000f90| 20 77 68 69 63 68 0a 6b | 65 65 70 73 20 6e 6e 74 | which.k|eeps nnt|
|00000fa0| 70 64 20 66 72 6f 6d 20 | 61 63 63 65 70 74 69 6e |pd from |acceptin|
|00000fb0| 67 20 74 68 69 6e 67 73 | 20 74 68 61 74 20 68 61 |g things| that ha|
|00000fc0| 76 65 20 61 6c 72 65 61 | 64 79 20 62 65 65 6e 20 |ve alrea|dy been |
|00000fd0| 61 63 63 65 70 74 65 64 | 20 62 75 74 20 77 68 69 |accepted| but whi|
|00000fe0| 63 68 0a 61 72 65 20 73 | 69 74 74 69 6e 67 20 69 |ch.are s|itting i|
|00000ff0| 6e 20 74 68 65 20 69 6e | 70 75 74 20 62 61 74 63 |n the in|put batc|
|00001000| 68 20 71 75 65 75 65 2c | 20 77 61 69 74 69 6e 67 |h queue,| waiting|
|00001010| 20 74 6f 20 62 65 20 75 | 6e 62 61 74 63 68 65 64 | to be u|nbatched|
|00001020| 2e 20 20 54 68 69 73 20 | 77 68 6f 6c 65 0a 73 63 |. This |whole.sc|
|00001030| 68 65 6d 65 20 69 73 20 | 6f 62 76 69 6f 75 73 6c |heme is |obviousl|
|00001040| 79 20 6f 6e 6c 79 20 75 | 73 65 66 75 6c 20 69 66 |y only u|seful if|
|00001050| 20 79 6f 75 20 72 75 6e | 20 43 20 4e 65 77 73 2c | you run| C News,|
|00001060| 20 73 69 6e 63 65 20 6e | 6e 74 70 2d 66 6f 72 2d | since n|ntp-for-|
|00001070| 42 2d 4e 65 77 73 0a 6a | 75 73 74 20 66 6f 72 6b |B-News.j|ust fork|
|00001080| 73 20 69 6e 65 77 73 20 | 6f 6e 63 65 20 70 65 72 |s inews |once per|
|00001090| 20 69 6e 63 6f 6d 69 6e | 67 20 61 72 74 69 63 6c | incomin|g articl|
|000010a0| 65 2e 0a 0a 49 6e 73 74 | 61 6c 6c 61 74 69 6f 6e |e...Inst|allation|
|000010b0| 20 69 73 20 68 6f 70 65 | 66 75 6c 6c 79 20 74 72 | is hope|fully tr|
|000010c0| 69 76 69 61 6c 2e 20 20 | 52 65 62 75 69 6c 64 20 |ivial. |Rebuild |
|000010d0| 61 6e 64 20 72 65 69 6e | 73 74 61 6c 6c 20 6e 6e |and rein|stall nn|
|000010e0| 74 70 64 20 77 69 74 68 | 0a 74 68 65 73 65 20 64 |tpd with|.these d|
|000010f0| 69 66 66 73 20 61 70 70 | 6c 69 65 64 3b 20 69 6e |iffs app|lied; in|
|00001100| 73 74 61 6c 6c 20 6d 73 | 67 69 64 64 20 61 73 20 |stall ms|gidd as |
|00001110| 77 65 6c 6c 3b 20 61 64 | 64 20 74 68 69 73 20 6c |well; ad|d this l|
|00001120| 69 6e 65 20 74 6f 20 72 | 63 2e 6c 6f 63 61 6c 2c |ine to r|c.local,|
|00001130| 0a 61 6e 64 20 65 78 65 | 63 75 74 65 20 69 74 20 |.and exe|cute it |
|00001140| 62 79 20 68 61 6e 64 20 | 28 6f 72 20 72 65 62 6f |by hand |(or rebo|
|00001150| 6f 74 29 3a 0a 0a 65 63 | 68 6f 20 2f 75 73 72 2f |ot):..ec|ho /usr/|
|00001160| 6c 69 62 2f 6e 65 77 73 | 2f 65 74 63 2f 6d 73 67 |lib/news|/etc/msg|
|00001170| 69 64 64 20 5c 0a 58 09 | 2d 73 20 2f 75 73 72 2f |idd \.X.|-s /usr/|
|00001180| 6c 69 62 2f 6e 65 77 73 | 2f 6e 6e 74 70 5f 6d 73 |lib/news|/nntp_ms|
|00001190| 67 69 64 20 5c 0a 58 09 | 2d 6c 20 2f 75 73 72 2f |gid \.X.|-l /usr/|
|000011a0| 6c 69 62 2f 6e 65 77 73 | 2f 6d 73 67 69 64 2e 6c |lib/news|/msgid.l|
|000011b0| 6f 67 20 5c 0a 58 09 2d | 68 20 31 34 34 30 20 22 |og \.X.-|h 1440 "|
|000011c0| 26 22 20 7c 20 73 75 20 | 6e 65 77 73 20 3e 2f 64 |&" | su |news >/d|
|000011d0| 65 76 2f 63 6f 6e 73 6f | 6c 65 0a 0a 4e 6f 74 65 |ev/conso|le..Note|
|000011e0| 20 74 68 61 74 20 2f 75 | 73 72 2f 6c 69 62 2f 6e | that /u|sr/lib/n|
|000011f0| 65 77 73 2f 65 74 63 20 | 69 73 20 77 68 65 72 65 |ews/etc |is where|
|00001200| 20 49 20 6b 65 65 70 20 | 6e 6e 74 70 64 20 61 6e | I keep |nntpd an|
|00001210| 64 20 6d 73 67 69 64 64 | 2c 20 61 6e 64 20 74 68 |d msgidd|, and th|
|00001220| 61 74 0a 58 2f 75 73 72 | 2f 6c 69 62 2f 6e 65 77 |at.X/usr|/lib/new|
|00001230| 73 2f 6e 6e 74 70 5f 6d | 73 67 69 64 20 69 73 20 |s/nntp_m|sgid is |
|00001240| 74 68 65 20 75 6e 69 78 | 2d 64 6f 6d 61 69 6e 20 |the unix|-domain |
|00001250| 73 6f 63 6b 65 74 20 75 | 73 65 64 20 66 6f 72 20 |socket u|sed for |
|00001260| 74 68 65 20 64 61 65 6d | 6f 6e 2e 0a 0a 58 46 75 |the daem|on...XFu|
|00001270| 74 75 72 65 20 65 6e 68 | 61 6e 63 65 6d 65 6e 74 |ture enh|ancement|
|00001280| 73 3a 0a 58 09 2d 3e 20 | 6d 6f 76 65 20 61 6c 6c |s:.X.-> |move all|
|00001290| 20 74 68 65 20 64 62 7a | 20 73 74 75 66 66 20 6f | the dbz| stuff o|
|000012a0| 75 74 20 6f 66 20 69 68 | 61 76 65 2e 63 20 61 6e |ut of ih|ave.c an|
|000012b0| 64 20 6a 75 73 74 20 64 | 6f 20 69 74 20 61 6c 6c |d just d|o it all|
|000012c0| 20 68 65 72 65 3b 0a 58 | 09 20 20 20 74 68 69 73 | here;.X|. this|
|000012d0| 20 77 69 6c 6c 20 73 65 | 72 69 61 6c 69 7a 65 20 | will se|rialize |
|000012e0| 74 68 65 20 64 62 7a 20 | 72 65 61 64 73 20 69 6e |the dbz |reads in|
|000012f0| 74 6f 20 74 68 69 73 20 | 6f 6e 65 20 70 72 6f 63 |to this |one proc|
|00001300| 65 73 73 2c 20 77 68 69 | 63 68 0a 58 09 20 20 20 |ess, whi|ch.X. |
|00001310| 69 73 20 64 65 62 61 74 | 61 62 6c 65 20 61 6e 64 |is debat|able and|
|00001320| 20 6e 65 65 64 73 20 6d | 6f 72 65 20 74 68 6f 75 | needs m|ore thou|
|00001330| 67 68 74 2e 0a 0a 54 68 | 61 6e 6b 73 20 74 6f 20 |ght...Th|anks to |
|00001340| 6b 65 6e 40 73 64 64 2e | 68 70 2e 63 6f 6d 20 66 |ken@sdd.|hp.com f|
|00001350| 6f 72 3a 0a 58 09 2d 3e | 20 63 68 61 6e 67 65 20 |or:.X.->| change |
|00001360| 74 68 65 20 70 72 6f 74 | 6f 63 6f 6c 20 73 6f 20 |the prot|ocol so |
|00001370| 74 68 61 74 20 72 65 71 | 75 65 73 74 69 6e 67 20 |that req|uesting |
|00001380| 49 44 20 73 74 61 74 75 | 73 0a 58 09 20 20 20 64 |ID statu|s.X. d|
|00001390| 6f 65 73 6e 27 74 20 68 | 61 76 65 20 74 68 65 20 |oesn't h|ave the |
|000013a0| 73 69 64 65 20 65 66 66 | 65 63 74 20 6f 66 20 6d |side eff|ect of m|
|000013b0| 61 72 6b 69 6e 67 20 74 | 68 65 20 61 72 74 69 63 |arking t|he artic|
|000013c0| 6c 65 0a 58 09 20 20 20 | 61 73 20 22 72 65 63 65 |le.X. |as "rece|
|000013d0| 69 76 65 64 22 2e 20 20 | 4d 61 72 6b 69 6e 67 20 |ived". |Marking |
|000013e0| 69 74 20 61 73 20 72 65 | 63 65 69 76 65 64 20 73 |it as re|ceived s|
|000013f0| 68 6f 75 6c 64 6e 27 74 | 20 62 65 0a 58 09 20 20 |houldn't| be.X. |
|00001400| 20 64 6f 6e 65 20 75 6e | 74 69 6c 20 74 68 65 20 | done un|til the |
|00001410| 61 72 74 69 63 6c 65 20 | 68 61 73 20 61 63 74 75 |article |has actu|
|00001420| 61 6c 6c 79 20 62 65 65 | 6e 20 77 72 69 74 74 65 |ally bee|n writte|
|00001430| 6e 20 74 6f 0a 58 09 20 | 20 20 74 68 65 20 62 61 |n to.X. | the ba|
|00001440| 74 63 68 20 66 69 6c 65 | 2e 0a 0a 54 68 61 6e 6b |tch file|...Thank|
|00001450| 73 20 74 6f 20 53 74 65 | 76 65 20 53 63 68 6f 63 |s to Ste|ve Schoc|
|00001460| 68 20 66 6f 72 3a 0a 58 | 09 2d 3e 20 68 61 6e 64 |h for:.X|.-> hand|
|00001470| 6c 65 20 53 49 47 50 49 | 50 45 20 70 72 6f 70 65 |le SIGPI|PE prope|
|00001480| 72 6c 79 2c 20 69 74 27 | 73 20 70 72 65 74 74 79 |rly, it'|s pretty|
|00001490| 20 63 6f 6d 6d 6f 6e 20 | 61 6e 64 20 49 20 77 61 | common |and I wa|
|000014a0| 73 0a 58 09 20 20 20 6a | 75 73 74 20 53 49 47 5f |s.X. j|ust SIG_|
|000014b0| 49 47 4e 27 69 6e 67 20 | 69 74 2e 0a 0a 54 68 61 |IGN'ing |it...Tha|
|000014c0| 6e 6b 73 20 74 6f 20 4a | 61 6d 65 73 20 42 72 69 |nks to J|ames Bri|
|000014d0| 73 74 65 72 20 66 6f 72 | 3a 0a 58 09 2d 3e 20 6d |ster for|:.X.-> m|
|000014e0| 73 67 69 64 64 2e 70 69 | 64 20 66 69 6c 65 2c 20 |sgidd.pi|d file, |
|000014f0| 75 73 65 66 75 6c 20 66 | 6f 72 20 53 49 47 48 55 |useful f|or SIGHU|
|00001500| 50 27 69 6e 67 20 66 6f | 72 20 6c 6f 67 66 69 6c |P'ing fo|r logfil|
|00001510| 65 20 63 68 61 6e 67 65 | 73 0a 21 0a 65 63 68 6f |e change|s.!.echo|
|00001520| 20 69 68 61 76 65 2e 63 | 2e 64 69 66 66 73 20 31 | ihave.c|.diffs 1|
|00001530| 3e 26 32 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |>&2.sed |'s/^X//'|
|00001540| 20 3e 69 68 61 76 65 2e | 63 2e 64 69 66 66 73 20 | >ihave.|c.diffs |
|00001550| 3c 3c 27 21 27 0a 58 2a | 2a 2a 20 2f 74 6d 70 2f |<<'!'.X*|** /tmp/|
|00001560| 2c 52 43 53 74 31 61 31 | 37 31 38 34 09 57 65 64 |,RCSt1a1|7184.Wed|
|00001570| 20 46 65 62 20 31 33 20 | 31 31 3a 33 37 3a 30 36 | Feb 13 |11:37:06|
|00001580| 20 31 39 39 31 0a 58 2d | 2d 2d 20 69 68 61 76 65 | 1991.X-|-- ihave|
|00001590| 2e 63 09 57 65 64 20 46 | 65 62 20 31 33 20 31 31 |.c.Wed F|eb 13 11|
|000015a0| 3a 32 34 3a 35 35 20 31 | 39 39 31 0a 58 2a 2a 2a |:24:55 1|991.X***|
|000015b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0a 58 2a 2a |********|****.X**|
|000015c0| 2a 20 31 2c 38 20 2a 2a | 2a 2a 0a 58 20 20 23 69 |* 1,8 **|**.X #i|
|000015d0| 66 6e 64 65 66 20 6c 69 | 6e 74 0a 58 21 20 73 74 |fndef li|nt.X! st|
|000015e0| 61 74 69 63 20 63 68 61 | 72 09 2a 73 63 63 73 69 |atic cha|r.*sccsi|
|000015f0| 64 20 3d 20 22 40 28 23 | 29 24 48 65 61 64 65 72 |d = "@(#|)$Header|
|00001600| 3a 20 69 68 61 76 65 2e | 63 2c 76 20 31 2e 31 38 |: ihave.|c,v 1.18|
|00001610| 20 39 30 2f 31 32 2f 32 | 33 20 31 31 3a 34 39 3a | 90/12/2|3 11:49:|
|00001620| 35 39 20 76 69 78 69 65 | 20 4c 6f 63 6b 65 64 20 |59 vixie| Locked |
|00001630| 24 22 3b 0a 58 20 20 23 | 65 6e 64 69 66 0a 58 20 |$";.X #|endif.X |
|00001640| 20 0a 58 20 20 23 69 6e | 63 6c 75 64 65 20 22 63 | .X #in|clude "c|
|00001650| 6f 6d 6d 6f 6e 2e 68 22 | 0a 58 20 20 0a 58 20 20 |ommon.h"|.X .X |
|00001660| 23 69 66 64 65 66 20 4c | 4f 47 0a 58 20 20 69 6e |#ifdef L|OG.X in|
|00001670| 74 09 69 68 5f 61 63 63 | 65 70 74 65 64 3b 0a 58 |t.ih_acc|epted;.X|
|00001680| 2d 2d 2d 20 31 2c 31 31 | 20 2d 2d 2d 2d 0a 58 20 |--- 1,11| ----.X |
|00001690| 20 23 69 66 6e 64 65 66 | 20 6c 69 6e 74 0a 58 21 | #ifndef| lint.X!|
|000016a0| 20 73 74 61 74 69 63 20 | 63 68 61 72 09 2a 73 63 | static |char.*sc|
|000016b0| 63 73 69 64 20 3d 20 22 | 40 28 23 29 24 48 65 61 |csid = "|@(#)$Hea|
|000016c0| 64 65 72 3a 20 69 68 61 | 76 65 2e 63 2c 76 20 31 |der: iha|ve.c,v 1|
|000016d0| 2e 31 38 20 39 30 2f 31 | 32 2f 32 33 20 31 31 3a |.18 90/1|2/23 11:|
|000016e0| 34 39 3a 35 39 20 73 6f | 62 20 45 78 70 20 24 22 |49:59 so|b Exp $"|
|000016f0| 3b 0a 58 20 20 23 65 6e | 64 69 66 0a 58 20 20 0a |;.X #en|dif.X .|
|00001700| 58 20 20 23 69 6e 63 6c | 75 64 65 20 22 63 6f 6d |X #incl|ude "com|
|00001710| 6d 6f 6e 2e 68 22 0a 58 | 2b 20 23 69 66 64 65 66 |mon.h".X|+ #ifdef|
|00001720| 20 4d 53 47 49 44 0a 58 | 2b 20 23 69 6e 63 6c 75 | MSGID.X|+ #inclu|
|00001730| 64 65 20 22 6d 73 67 69 | 64 2e 68 22 0a 58 2b 20 |de "msgi|d.h".X+ |
|00001740| 23 65 6e 64 69 66 20 2f | 2a 4d 53 47 49 44 2a 2f |#endif /|*MSGID*/|
|00001750| 0a 58 20 20 0a 58 20 20 | 23 69 66 64 65 66 20 4c |.X .X |#ifdef L|
|00001760| 4f 47 0a 58 20 20 69 6e | 74 09 69 68 5f 61 63 63 |OG.X in|t.ih_acc|
|00001770| 65 70 74 65 64 3b 0a 58 | 2a 2a 2a 2a 2a 2a 2a 2a |epted;.X|********|
|00001780| 2a 2a 2a 2a 2a 2a 2a 0a | 58 2a 2a 2a 20 32 33 2c |*******.|X*** 23,|
|00001790| 32 38 20 2a 2a 2a 2a 0a | 58 2d 2d 2d 20 32 36 2c |28 ****.|X--- 26,|
|000017a0| 33 32 20 2d 2d 2d 2d 0a | 58 20 20 09 63 68 61 72 |32 ----.|X .char|
|000017b0| 09 09 65 72 72 62 75 66 | 5b 32 20 2a 20 4e 4e 54 |..errbuf|[2 * NNT|
|000017c0| 50 5f 53 54 52 4c 45 4e | 5d 3b 0a 58 20 20 09 69 |P_STRLEN|];.X .i|
|000017d0| 6e 74 09 09 72 65 74 63 | 6f 64 65 3b 0a 58 20 20 |nt..retc|ode;.X |
|000017e0| 09 72 65 67 69 73 74 65 | 72 20 63 68 61 72 09 2a |.registe|r char.*|
|000017f0| 63 70 3b 0a 58 2b 20 09 | 69 6e 74 09 09 64 75 70 |cp;.X+ .|int..dup|
|00001800| 20 3d 20 30 3b 0a 58 20 | 20 20 20 0a 58 20 20 09 | = 0;.X | .X .|
|00001810| 69 66 20 28 21 63 61 6e | 78 66 65 72 29 0a 58 20 |if (!can|xfer).X |
|00001820| 20 09 09 7b 0a 58 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | ..{.X**|********|
|00001830| 2a 2a 2a 2a 2a 0a 58 2a | 2a 2a 20 34 32 2c 34 39 |*****.X*|** 42,49|
|00001840| 20 2a 2a 2a 2a 0a 58 20 | 20 09 09 72 65 74 75 72 | ****.X | ..retur|
|00001850| 6e 3b 0a 58 20 20 09 7d | 0a 58 20 20 0a 58 21 20 |n;.X .}|.X .X! |
|00001860| 09 63 70 20 3d 20 67 65 | 74 68 69 73 74 65 6e 74 |.cp = ge|thistent|
|00001870| 28 61 72 67 76 5b 31 5d | 2c 20 31 29 3b 0a 58 21 |(argv[1]|, 1);.X!|
|00001880| 20 09 69 66 20 28 63 70 | 20 21 3d 20 4e 55 4c 4c | .if (cp| != NULL|
|00001890| 29 20 7b 0a 58 20 20 09 | 09 70 72 69 6e 74 66 28 |) {.X .|.printf(|
|000018a0| 22 25 64 20 47 6f 74 20 | 69 74 2e 5c 72 5c 6e 22 |"%d Got |it.\r\n"|
|000018b0| 2c 20 45 52 52 5f 47 4f | 54 49 54 29 3b 0a 58 20 |, ERR_GO|TIT);.X |
|000018c0| 20 09 09 28 76 6f 69 64 | 29 20 66 66 6c 75 73 68 | ..(void|) fflush|
|000018d0| 28 73 74 64 6f 75 74 29 | 3b 0a 58 20 20 23 69 66 |(stdout)|;.X #if|
|000018e0| 64 65 66 20 4c 4f 47 0a | 58 2d 2d 2d 20 34 36 2c |def LOG.|X--- 46,|
|000018f0| 36 36 20 2d 2d 2d 2d 0a | 58 20 20 09 09 72 65 74 |66 ----.|X ..ret|
|00001900| 75 72 6e 3b 0a 58 20 20 | 09 7d 0a 58 20 20 0a 58 |urn;.X |.}.X .X|
|00001910| 21 20 23 69 66 64 65 66 | 20 4d 53 47 49 44 0a 58 |! #ifdef| MSGID.X|
|00001920| 21 20 09 69 66 20 28 6d | 73 67 69 64 28 61 72 67 |! .if (m|sgid(arg|
|00001930| 76 5b 31 5d 2c 20 4d 41 | 44 44 29 29 0a 58 21 20 |v[1], MA|DD)).X! |
|00001940| 09 09 64 75 70 2b 2b 3b | 0a 58 21 20 23 65 6e 64 |..dup++;|.X! #end|
|00001950| 69 66 20 2f 2a 4d 53 47 | 49 44 2a 2f 0a 58 21 20 |if /*MSG|ID*/.X! |
|00001960| 0a 58 21 20 09 69 66 20 | 28 21 64 75 70 29 20 7b |.X! .if |(!dup) {|
|00001970| 0a 58 21 20 09 09 63 70 | 20 3d 20 67 65 74 68 69 |.X! ..cp| = gethi|
|00001980| 73 74 65 6e 74 28 61 72 | 67 76 5b 31 5d 2c 20 31 |stent(ar|gv[1], 1|
|00001990| 29 3b 0a 58 21 20 09 09 | 69 66 20 28 63 70 20 21 |);.X! ..|if (cp !|
|000019a0| 3d 20 4e 55 4c 4c 29 20 | 7b 0a 58 21 20 09 09 09 |= NULL) |{.X! ...|
|000019b0| 64 75 70 2b 2b 3b 0a 58 | 21 20 23 69 66 64 65 66 |dup++;.X|! #ifdef|
|000019c0| 20 4d 53 47 49 44 0a 58 | 21 20 09 09 09 28 76 6f | MSGID.X|! ...(vo|
|000019d0| 69 64 29 20 6d 73 67 69 | 64 28 61 72 67 76 5b 31 |id) msgi|d(argv[1|
|000019e0| 5d 2c 20 4d 4f 4c 44 29 | 3b 0a 58 21 20 23 65 6e |], MOLD)|;.X! #en|
|000019f0| 64 69 66 20 2f 2a 4d 53 | 47 49 44 2a 2f 0a 58 21 |dif /*MS|GID*/.X!|
|00001a00| 20 09 09 7d 0a 58 21 20 | 09 7d 0a 58 21 20 09 69 | ..}.X! |.}.X! .i|
|00001a10| 66 20 28 64 75 70 29 20 | 7b 0a 58 20 20 09 09 70 |f (dup) |{.X ..p|
|00001a20| 72 69 6e 74 66 28 22 25 | 64 20 47 6f 74 20 69 74 |rintf("%|d Got it|
|00001a30| 2e 5c 72 5c 6e 22 2c 20 | 45 52 52 5f 47 4f 54 49 |.\r\n", |ERR_GOTI|
|00001a40| 54 29 3b 0a 58 20 20 09 | 09 28 76 6f 69 64 29 20 |T);.X .|.(void) |
|00001a50| 66 66 6c 75 73 68 28 73 | 74 64 6f 75 74 29 3b 0a |fflush(s|tdout);.|
|00001a60| 58 20 20 23 69 66 64 65 | 66 20 4c 4f 47 0a 21 0a |X #ifde|f LOG.!.|
|00001a70| 65 63 68 6f 20 6d 73 67 | 69 64 2e 63 20 31 3e 26 |echo msg|id.c 1>&|
|00001a80| 32 0a 73 65 64 20 27 73 | 2f 5e 58 2f 2f 27 20 3e |2.sed 's|/^X//' >|
|00001a90| 6d 73 67 69 64 2e 63 20 | 3c 3c 27 21 27 0a 58 2f |msgid.c |<<'!'.X/|
|00001aa0| 2a 20 6d 73 67 69 64 20 | 2d 2d 20 6d 65 73 73 61 |* msgid |-- messa|
|00001ab0| 67 65 20 49 44 20 74 65 | 73 74 0a 58 20 2a 20 76 |ge ID te|st.X * v|
|00001ac0| 69 78 20 31 33 66 65 62 | 39 31 20 5b 6e 65 67 61 |ix 13feb|91 [nega|
|00001ad0| 74 69 76 65 20 63 61 63 | 68 69 6e 67 5d 0a 58 20 |tive cac|hing].X |
|00001ae0| 2a 20 76 69 78 20 32 34 | 6d 61 79 39 30 20 5b 77 |* vix 24|may90 [w|
|00001af0| 72 69 74 74 65 6e 5d 0a | 58 20 2a 0a 58 20 2a 20 |ritten].|X *.X * |
|00001b00| 77 69 74 68 20 6d 6f 64 | 73 20 6b 65 6e 40 73 64 |with mod|s ken@sd|
|00001b10| 64 2e 68 70 2e 63 6f 6d | 20 30 31 6a 75 6c 39 30 |d.hp.com| 01jul90|
|00001b20| 0a 58 20 2a 0a 58 20 2a | 20 24 48 65 61 64 65 72 |.X *.X *| $Header|
|00001b30| 3a 20 6d 73 67 69 64 2e | 63 2c 76 20 31 2e 36 20 |: msgid.|c,v 1.6 |
|00001b40| 39 31 2f 30 38 2f 31 37 | 20 31 32 3a 30 34 3a 31 |91/08/17| 12:04:1|
|00001b50| 31 20 76 69 78 69 65 20 | 4c 6f 63 6b 65 64 20 24 |1 vixie |Locked $|
|00001b60| 0a 58 20 2a 2f 0a 0a 58 | 23 69 6e 63 6c 75 64 65 |.X */..X|#include|
|00001b70| 20 3c 73 74 64 69 6f 2e | 68 3e 0a 58 23 69 6e 63 | <stdio.|h>.X#inc|
|00001b80| 6c 75 64 65 20 3c 63 74 | 79 70 65 2e 68 3e 0a 58 |lude <ct|ype.h>.X|
|00001b90| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 74 79 |#include| <sys/ty|
|00001ba0| 70 65 73 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |pes.h>.X|#include|
|00001bb0| 20 3c 73 79 73 2f 74 69 | 6d 65 2e 68 3e 0a 58 23 | <sys/ti|me.h>.X#|
|00001bc0| 69 66 64 65 66 20 68 70 | 75 78 0a 58 23 69 6e 63 |ifdef hp|ux.X#inc|
|00001bd0| 6c 75 64 65 20 3c 73 79 | 73 2f 70 61 72 61 6d 2e |lude <sy|s/param.|
|00001be0| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 6c 69 |h>.X#inc|lude <li|
|00001bf0| 62 42 53 44 2e 68 3e 0a | 58 23 65 6e 64 69 66 0a |bBSD.h>.|X#endif.|
|00001c00| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 73 |X#includ|e <sys/s|
|00001c10| 6f 63 6b 65 74 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |ocket.h>|.X#inclu|
|00001c20| 64 65 20 3c 73 79 73 2f | 75 6e 2e 68 3e 0a 58 23 |de <sys/|un.h>.X#|
|00001c30| 69 6e 63 6c 75 64 65 20 | 3c 73 79 73 6c 6f 67 2e |include |<syslog.|
|00001c40| 68 3e 0a 58 23 64 65 66 | 69 6e 65 20 4e 45 45 44 |h>.X#def|ine NEED|
|00001c50| 4d 53 47 53 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |MSGS.X#i|nclude "|
|00001c60| 6d 73 67 69 64 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |msgid.h"|.X#inclu|
|00001c70| 64 65 20 22 2e 2e 2f 63 | 6f 6d 6d 6f 6e 2f 63 6f |de "../c|ommon/co|
|00001c80| 6e 66 2e 68 22 0a 0a 58 | 23 69 66 64 65 66 20 4d |nf.h"..X|#ifdef M|
|00001c90| 53 47 49 44 0a 0a 58 23 | 69 66 64 65 66 20 57 41 |SGID..X#|ifdef WA|
|00001ca0| 4e 54 5f 4d 41 49 4e 0a | 63 68 61 72 20 68 6f 73 |NT_MAIN.|char hos|
|00001cb0| 74 6e 61 6d 65 5b 42 55 | 46 53 49 5a 5d 3b 0a 58 |tname[BU|FSIZ];.X|
|00001cc0| 23 65 6c 73 65 0a 65 78 | 74 65 72 6e 20 63 68 61 |#else.ex|tern cha|
|00001cd0| 72 20 68 6f 73 74 6e 61 | 6d 65 5b 5d 3b 0a 58 23 |r hostna|me[];.X#|
|00001ce0| 65 6e 64 69 66 0a 0a 58 | 23 64 65 66 69 6e 65 20 |endif..X|#define |
|00001cf0| 53 45 52 56 45 52 54 49 | 4d 45 4f 55 54 09 33 30 |SERVERTI|MEOUT.30|
|00001d00| 0a 0a 73 74 61 74 69 63 | 20 69 6e 74 20 73 20 3d |..static| int s =|
|00001d10| 20 2d 31 3b 0a 73 74 61 | 74 69 63 20 69 6e 74 20 | -1;.sta|tic int |
|00001d20| 72 65 61 64 5f 61 6e 73 | 77 65 72 28 29 3b 0a 0a |read_ans|wer();..|
|00001d30| 58 2f 2a 0a 58 20 2a 20 | 50 72 6f 74 6f 63 6f 6c |X/*.X * |Protocol|
|00001d40| 3a 0a 58 20 2a 20 20 20 | 20 52 65 74 75 72 6e 20 |:.X * | Return |
|00001d50| 76 61 6c 75 65 20 61 73 | 20 75 73 65 64 20 68 65 |value as| used he|
|00001d60| 72 65 20 69 73 20 66 72 | 6f 6d 20 74 68 65 20 73 |re is fr|om the s|
|00001d70| 65 72 76 65 72 20 74 6f | 20 75 73 2e 20 20 4e 6f |erver to| us. No|
|00001d80| 74 65 20 74 68 61 74 20 | 74 68 69 73 0a 58 20 2a |te that |this.X *|
|00001d90| 20 20 20 20 6d 61 79 20 | 6e 6f 74 20 62 65 20 74 | may |not be t|
|00001da0| 68 65 20 73 61 6d 65 20 | 61 73 20 74 68 65 20 72 |he same |as the r|
|00001db0| 65 74 75 72 6e 20 76 61 | 6c 75 65 20 66 72 6f 6d |eturn va|lue from|
|00001dc0| 20 6d 73 67 69 64 28 29 | 2e 0a 58 20 2a 0a 58 20 | msgid()|..X *.X |
|00001dd0| 2a 20 20 20 20 33 20 6d | 65 73 73 61 67 65 20 74 |* 3 m|essage t|
|00001de0| 79 70 65 73 3a 0a 58 20 | 2a 20 20 20 20 20 20 20 |ypes:.X |* |
|00001df0| 20 4d 43 41 4e 43 45 4c | 3a 20 44 65 6c 65 74 65 | MCANCEL|: Delete|
|00001e00| 20 61 6e 20 69 64 20 66 | 72 6f 6d 20 74 68 65 20 | an id f|rom the |
|00001e10| 68 6f 6c 64 69 6e 67 20 | 71 75 65 75 65 73 2e 20 |holding |queues. |
|00001e20| 20 52 65 74 75 72 6e 20 | 76 61 6c 75 65 0a 58 20 | Return |value.X |
|00001e30| 2a 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |* | |
|00001e40| 20 20 69 73 20 6e 6f 6e | 2d 7a 65 72 6f 20 66 6f | is non|-zero fo|
|00001e50| 72 20 66 61 69 6c 75 72 | 65 2e 0a 58 20 2a 20 20 |r failur|e..X * |
|00001e60| 20 20 20 20 20 20 4d 41 | 44 44 3a 20 20 20 20 43 | MA|DD: C|
|00001e70| 68 65 63 6b 20 66 6f 72 | 20 64 75 70 20 61 6e 64 |heck for| dup and|
|00001e80| 20 61 64 64 20 61 73 20 | 6e 65 65 64 65 64 2e 20 | add as |needed. |
|00001e90| 20 52 65 74 75 72 6e 20 | 76 61 6c 75 65 20 69 73 | Return |value is|
|00001ea0| 20 0a 58 20 2a 20 20 20 | 20 20 20 20 20 20 20 20 | .X * | |
|00001eb0| 20 20 20 20 20 20 6e 6f | 6e 2d 7a 65 72 6f 20 66 | no|n-zero f|
|00001ec0| 6f 72 20 64 75 70 2e 0a | 58 20 2a 20 20 20 20 20 |or dup..|X * |
|00001ed0| 20 20 20 4d 48 4f 53 54 | 3a 20 20 20 55 73 65 64 | MHOST|: Used|
|00001ee0| 20 74 6f 20 69 6e 66 6f | 72 6d 20 74 68 65 20 73 | to info|rm the s|
|00001ef0| 65 72 76 65 72 20 77 68 | 6f 20 69 73 20 6f 6e 20 |erver wh|o is on |
|00001f00| 74 68 65 20 6f 74 68 65 | 72 20 65 6e 64 20 6f 66 |the othe|r end of|
|00001f10| 20 74 68 69 73 20 0a 58 | 20 2a 20 20 20 20 20 20 | this .X| * |
|00001f20| 20 20 20 20 20 20 20 20 | 20 20 20 6e 6e 74 70 64 | | nntpd|
|00001f30| 2e 20 20 52 65 74 75 72 | 6e 20 76 61 6c 75 65 20 |. Retur|n value |
|00001f40| 69 73 20 6e 6f 6e 2d 7a | 65 72 6f 20 66 6f 72 20 |is non-z|ero for |
|00001f50| 66 61 69 6c 75 72 65 2e | 20 20 55 73 65 64 20 6f |failure.| Used o|
|00001f60| 6e 6c 79 0a 58 20 2a 20 | 20 20 20 20 20 20 20 20 |nly.X * | |
|00001f70| 20 20 20 20 20 20 20 20 | 69 6e 20 6d 73 67 69 64 | |in msgid|
|00001f80| 5f 69 6e 69 74 28 29 2e | 0a 58 20 2a 2f 0a 0a 0a |_init().|.X */...|
|00001f90| 58 2f 2a 20 0a 58 20 2a | 20 72 65 74 75 72 6e 73 |X/* .X *| returns|
|00001fa0| 3a 20 30 20 66 6f 72 20 | 6f 6b 2c 20 31 20 66 6f |: 0 for |ok, 1 fo|
|00001fb0| 72 20 66 61 69 6c 75 72 | 65 0a 58 20 2a 2f 0a 6d |r failur|e.X */.m|
|00001fc0| 73 67 69 64 5f 69 6e 69 | 74 28 29 0a 58 7b 0a 58 |sgid_ini|t().X{.X|
|00001fd0| 20 20 20 20 63 68 61 72 | 20 62 75 66 5b 33 30 30 | char| buf[300|
|00001fe0| 5d 3b 0a 58 20 20 20 20 | 73 74 72 75 63 74 20 73 |];.X |struct s|
|00001ff0| 6f 63 6b 61 64 64 72 5f | 75 6e 20 6e 3b 0a 58 20 |ockaddr_|un n;.X |
|00002000| 20 20 20 73 74 61 74 69 | 63 20 64 65 61 64 5f 73 | stati|c dead_s|
|00002010| 65 72 76 65 72 5f 63 6f | 75 6e 74 20 3d 20 30 3b |erver_co|unt = 0;|
|00002020| 0a 0a 58 20 20 20 20 73 | 20 3d 20 73 6f 63 6b 65 |..X s| = socke|
|00002030| 74 28 50 46 5f 55 4e 49 | 58 2c 20 53 4f 43 4b 5f |t(PF_UNI|X, SOCK_|
|00002040| 53 54 52 45 41 4d 2c 20 | 30 29 3b 0a 58 20 20 20 |STREAM, |0);.X |
|00002050| 20 69 66 20 28 73 20 3c | 20 30 29 20 7b 0a 58 09 | if (s <| 0) {.X.|
|00002060| 73 79 73 6c 6f 67 28 4c | 4f 47 5f 45 52 52 2c 20 |syslog(L|OG_ERR, |
|00002070| 22 6d 73 67 69 64 3a 20 | 63 61 6e 27 74 20 67 65 |"msgid: |can't ge|
|00002080| 74 20 73 6f 63 6b 65 74 | 3a 20 25 6d 22 29 3b 0a |t socket|: %m");.|
|00002090| 58 09 72 65 74 75 72 6e | 28 31 29 3b 0a 58 20 20 |X.return|(1);.X |
|000020a0| 20 20 7d 0a 0a 58 20 20 | 20 20 6e 2e 73 75 6e 5f | }..X | n.sun_|
|000020b0| 66 61 6d 69 6c 79 20 3d | 20 41 46 5f 55 4e 49 58 |family =| AF_UNIX|
|000020c0| 3b 0a 58 20 20 20 20 28 | 76 6f 69 64 29 20 73 74 |;.X (|void) st|
|000020d0| 72 63 70 79 28 6e 2e 73 | 75 6e 5f 70 61 74 68 2c |rcpy(n.s|un_path,|
|000020e0| 20 53 4f 43 4b 4e 41 4d | 45 29 3b 0a 0a 58 20 20 | SOCKNAM|E);..X |
|000020f0| 20 20 69 66 20 28 30 20 | 3e 20 63 6f 6e 6e 65 63 | if (0 |> connec|
|00002100| 74 28 73 2c 20 26 6e 2c | 20 73 74 72 6c 65 6e 28 |t(s, &n,| strlen(|
|00002110| 6e 2e 73 75 6e 5f 70 61 | 74 68 29 20 2b 20 73 69 |n.sun_pa|th) + si|
|00002120| 7a 65 6f 66 20 6e 2e 73 | 75 6e 5f 66 61 6d 69 6c |zeof n.s|un_famil|
|00002130| 79 29 29 20 7b 0a 58 09 | 63 6c 6f 73 65 28 73 29 |y)) {.X.|close(s)|
|00002140| 3b 0a 58 09 73 20 3d 20 | 2d 31 3b 0a 58 09 2f 2a |;.X.s = |-1;.X./*|
|00002150| 20 6f 6e 6c 79 20 73 79 | 73 6c 6f 67 20 65 76 65 | only sy|slog eve|
|00002160| 72 79 20 31 32 38 20 6d | 65 73 73 61 67 65 73 2c |ry 128 m|essages,|
|00002170| 20 73 6f 20 74 68 61 74 | 20 64 65 61 64 20 6d 73 | so that| dead ms|
|00002180| 67 69 64 64 20 64 6f 65 | 73 6e 27 74 0a 58 09 20 |gidd doe|sn't.X. |
|00002190| 2a 20 6c 65 61 64 20 74 | 6f 20 6d 75 6c 74 69 2d |* lead t|o multi-|
|000021a0| 6d 65 67 61 62 79 74 65 | 20 73 79 73 6c 6f 67 20 |megabyte| syslog |
|000021b0| 66 69 6c 65 73 20 28 76 | 69 78 2c 20 31 33 66 65 |files (v|ix, 13fe|
|000021c0| 62 39 31 29 0a 58 09 20 | 2a 2f 0a 58 09 69 66 20 |b91).X. |*/.X.if |
|000021d0| 28 21 28 64 65 61 64 5f | 73 65 72 76 65 72 5f 63 |(!(dead_|server_c|
|000021e0| 6f 75 6e 74 2b 2b 20 25 | 20 31 32 38 29 29 20 7b |ount++ %| 128)) {|
|000021f0| 0a 58 09 20 20 20 20 73 | 79 73 6c 6f 67 28 4c 4f |.X. s|yslog(LO|
|00002200| 47 5f 45 52 52 2c 20 22 | 6d 73 67 69 64 3a 20 63 |G_ERR, "|msgid: c|
|00002210| 6f 6e 6e 65 63 74 20 74 | 6f 20 25 73 3a 20 25 6d |onnect t|o %s: %m|
|00002220| 22 2c 20 53 4f 43 4b 4e | 41 4d 45 29 3b 0a 58 09 |", SOCKN|AME);.X.|
|00002230| 7d 0a 58 09 72 65 74 75 | 72 6e 28 31 29 3b 0a 58 |}.X.retu|rn(1);.X|
|00002240| 20 20 20 20 7d 0a 0a 58 | 20 20 20 20 28 76 6f 69 | }..X| (voi|
|00002250| 64 29 20 73 74 72 63 70 | 79 28 62 75 66 2c 20 6d |d) strcp|y(buf, m|
|00002260| 73 67 73 5b 4d 48 4f 53 | 54 5d 29 3b 0a 58 20 20 |sgs[MHOS|T]);.X |
|00002270| 20 20 28 76 6f 69 64 29 | 20 73 74 72 63 61 74 28 | (void)| strcat(|
|00002280| 62 75 66 2c 20 68 6f 73 | 74 6e 61 6d 65 29 3b 0a |buf, hos|tname);.|
|00002290| 58 20 20 20 20 69 66 20 | 28 77 72 69 74 65 28 73 |X if |(write(s|
|000022a0| 2c 20 62 75 66 2c 20 73 | 74 72 6c 65 6e 28 62 75 |, buf, s|trlen(bu|
|000022b0| 66 29 29 20 3c 20 30 29 | 20 7b 0a 58 09 63 6c 6f |f)) < 0)| {.X.clo|
|000022c0| 73 65 28 73 29 3b 0a 58 | 09 73 20 3d 20 2d 31 3b |se(s);.X|.s = -1;|
|000022d0| 0a 58 09 73 79 73 6c 6f | 67 28 4c 4f 47 5f 45 52 |.X.syslo|g(LOG_ER|
|000022e0| 52 2c 20 22 6d 73 67 69 | 64 3a 20 68 6f 73 74 20 |R, "msgi|d: host |
|000022f0| 6d 65 73 73 61 67 65 20 | 77 72 69 74 65 3a 20 25 |message |write: %|
|00002300| 6d 22 2c 20 53 4f 43 4b | 4e 41 4d 45 29 3b 0a 58 |m", SOCK|NAME);.X|
|00002310| 09 72 65 74 75 72 6e 28 | 31 29 3b 0a 58 20 20 20 |.return(|1);.X |
|00002320| 20 7d 0a 0a 58 20 20 20 | 20 72 65 74 75 72 6e 28 | }..X | return(|
|00002330| 72 65 61 64 5f 61 6e 73 | 77 65 72 28 29 29 3b 0a |read_ans|wer());.|
|00002340| 58 7d 0a 0a 0a 58 2f 2a | 20 0a 58 20 2a 20 72 65 |X}...X/*| .X * re|
|00002350| 74 75 72 6e 73 3a 20 6e | 6f 6e 7a 65 72 6f 20 3d |turns: n|onzero =|
|00002360| 20 64 75 70 6c 69 63 61 | 74 65 2c 20 72 65 74 75 | duplica|te, retu|
|00002370| 72 6e 20 76 61 6c 75 65 | 20 64 6f 65 73 6e 27 74 |rn value| doesn't|
|00002380| 20 6d 65 61 6e 20 6d 75 | 63 68 20 66 6f 72 20 74 | mean mu|ch for t|
|00002390| 68 65 0a 58 20 2a 20 20 | 20 20 20 20 20 20 20 20 |he.X * | |
|000023a0| 4d 41 44 44 20 6f 72 20 | 4d 4f 4c 44 20 6d 65 73 |MADD or |MOLD mes|
|000023b0| 73 61 67 65 73 0a 58 20 | 2a 2f 0a 69 6e 74 0a 6d |sages.X |*/.int.m|
|000023c0| 73 67 69 64 28 69 64 2c | 20 6d 74 79 70 65 29 0a |sgid(id,| mtype).|
|000023d0| 58 20 20 20 20 63 68 61 | 72 20 2a 69 64 3b 0a 58 |X cha|r *id;.X|
|000023e0| 20 20 20 20 69 6e 74 20 | 6d 74 79 70 65 3b 0a 58 | int |mtype;.X|
|000023f0| 7b 0a 58 20 20 20 20 63 | 68 61 72 20 2a 63 70 2c |{.X c|har *cp,|
|00002400| 20 62 75 66 5b 32 35 36 | 5d 2c 20 2a 72 69 6e 64 | buf[256|], *rind|
|00002410| 65 78 28 29 3b 0a 0a 58 | 20 20 20 20 69 66 20 28 |ex();..X| if (|
|00002420| 73 20 3d 3d 20 2d 31 20 | 26 26 20 6d 73 67 69 64 |s == -1 |&& msgid|
|00002430| 5f 69 6e 69 74 28 29 29 | 0a 58 09 72 65 74 75 72 |_init())|.X.retur|
|00002440| 6e 28 30 29 3b 0a 0a 58 | 20 20 20 20 2f 2a 0a 58 |n(0);..X| /*.X|
|00002450| 20 20 20 20 20 2a 20 57 | 65 20 6e 65 65 64 20 74 | * W|e need t|
|00002460| 6f 20 64 6f 20 74 68 69 | 73 20 6a 75 73 74 20 62 |o do thi|s just b|
|00002470| 65 63 61 75 73 65 20 67 | 65 74 68 69 73 74 65 6e |ecause g|ethisten|
|00002480| 74 20 64 6f 65 73 20 69 | 74 0a 58 20 20 20 20 20 |t does i|t.X |
|00002490| 2a 20 22 69 6e 20 70 6c | 61 63 65 22 20 73 6f 20 |* "in pl|ace" so |
|000024a0| 61 64 64 20 76 73 20 6f | 6c 64 20 67 65 74 73 20 |add vs o|ld gets |
|000024b0| 66 72 69 65 64 20 2e 2e | 2e 0a 58 20 20 20 20 20 |fried ..|..X |
|000024c0| 2a 0a 58 20 20 20 20 20 | 2a 20 49 66 20 72 75 6e |*.X |* If run|
|000024d0| 6e 69 6e 67 20 42 6e 65 | 77 73 2c 20 63 6f 6e 76 |ning Bne|ws, conv|
|000024e0| 65 72 74 73 20 22 69 64 | 22 20 74 6f 20 6c 6f 77 |erts "id|" to low|
|000024f0| 65 72 20 63 61 73 65 2e | 0a 58 20 20 20 20 20 2a |er case.|.X *|
|00002500| 20 49 66 20 72 75 6e 6e | 69 6e 67 20 43 6e 65 77 | If runn|ing Cnew|
|00002510| 73 2c 20 63 6f 6e 76 65 | 72 74 73 20 22 69 64 22 |s, conve|rts "id"|
|00002520| 20 70 65 72 20 72 66 63 | 38 32 32 2e 0a 58 20 20 | per rfc|822..X |
|00002530| 20 20 20 2a 2f 0a 58 23 | 69 66 64 65 66 20 43 4e | */.X#|ifdef CN|
|00002540| 45 57 53 0a 58 20 20 20 | 20 63 70 20 3d 20 72 69 |EWS.X | cp = ri|
|00002550| 6e 64 65 78 28 69 64 2c | 20 27 40 27 29 3b 20 20 |ndex(id,| '@'); |
|00002560| 20 20 20 20 20 20 2f 2a | 20 6c 6f 6f 6b 20 66 6f | /*| look fo|
|00002570| 72 20 40 20 69 6e 20 6d | 65 73 73 61 67 65 20 69 |r @ in m|essage i|
|00002580| 64 20 2a 2f 0a 58 20 20 | 20 20 69 66 20 28 63 70 |d */.X | if (cp|
|00002590| 20 21 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 66 6f | != NULL|) {.X.fo|
|000025a0| 72 28 3b 20 2a 63 70 20 | 21 3d 20 27 5c 30 27 3b |r(; *cp |!= '\0';|
|000025b0| 20 2b 2b 63 70 29 0a 58 | 23 65 6c 73 65 0a 58 20 | ++cp).X|#else.X |
|000025c0| 20 20 20 7b 0a 58 09 66 | 6f 72 20 28 63 70 20 3d | {.X.f|or (cp =|
|000025d0| 20 6d 73 67 5f 69 64 3b | 20 2a 63 70 20 21 3d 20 | msg_id;| *cp != |
|000025e0| 27 5c 30 27 3b 20 2b 2b | 63 70 29 0a 58 23 65 6e |'\0'; ++|cp).X#en|
|000025f0| 64 69 66 0a 58 09 20 20 | 20 20 69 66 20 28 69 73 |dif.X. | if (is|
|00002600| 75 70 70 65 72 28 2a 63 | 70 29 29 0a 58 09 09 2a |upper(*c|p)).X..*|
|00002610| 63 70 20 3d 20 74 6f 6c | 6f 77 65 72 28 2a 63 70 |cp = tol|ower(*cp|
|00002620| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 28 |);.X |}.X (|
|00002630| 76 6f 69 64 29 20 73 74 | 72 63 70 79 28 62 75 66 |void) st|rcpy(buf|
|00002640| 2c 20 6d 73 67 73 5b 6d | 74 79 70 65 5d 29 3b 0a |, msgs[m|type]);.|
|00002650| 58 20 20 20 20 28 76 6f | 69 64 29 20 73 74 72 63 |X (vo|id) strc|
|00002660| 61 74 28 62 75 66 2c 20 | 69 64 29 3b 0a 58 20 20 |at(buf, |id);.X |
|00002670| 20 20 69 66 20 28 30 20 | 3e 20 77 72 69 74 65 28 | if (0 |> write(|
|00002680| 73 2c 20 62 75 66 2c 20 | 73 74 72 6c 65 6e 28 62 |s, buf, |strlen(b|
|00002690| 75 66 29 29 29 20 7b 0a | 58 09 73 79 73 6c 6f 67 |uf))) {.|X.syslog|
|000026a0| 28 4c 4f 47 5f 45 52 52 | 2c 20 22 6d 73 67 69 64 |(LOG_ERR|, "msgid|
|000026b0| 3a 20 77 72 69 74 65 3a | 20 25 6d 22 29 3b 0a 58 |: write:| %m");.X|
|000026c0| 09 63 6c 6f 73 65 28 73 | 29 3b 0a 58 09 73 20 3d |.close(s|);.X.s =|
|000026d0| 20 2d 31 3b 0a 58 09 72 | 65 74 75 72 6e 28 30 29 | -1;.X.r|eturn(0)|
|000026e0| 3b 0a 58 20 20 20 20 7d | 0a 58 20 20 20 20 72 65 |;.X }|.X re|
|000026f0| 74 75 72 6e 28 72 65 61 | 64 5f 61 6e 73 77 65 72 |turn(rea|d_answer|
|00002700| 28 29 29 3b 20 0a 58 7d | 0a 0a 0a 73 74 61 74 69 |()); .X}|...stati|
|00002710| 63 20 69 6e 74 0a 72 65 | 61 64 5f 61 6e 73 77 65 |c int.re|ad_answe|
|00002720| 72 28 29 0a 58 7b 0a 58 | 20 20 20 20 75 6e 73 69 |r().X{.X| unsi|
|00002730| 67 6e 65 64 20 63 68 61 | 72 20 63 3b 0a 58 20 20 |gned cha|r c;.X |
|00002740| 20 20 66 64 5f 73 65 74 | 20 72 65 61 64 66 64 73 | fd_set| readfds|
|00002750| 3b 0a 58 20 20 20 20 73 | 74 72 75 63 74 20 74 69 |;.X s|truct ti|
|00002760| 6d 65 76 61 6c 20 74 6f | 3b 0a 58 20 20 20 20 69 |meval to|;.X i|
|00002770| 6e 74 20 69 3b 0a 0a 58 | 20 20 20 20 46 44 5f 5a |nt i;..X| FD_Z|
|00002780| 45 52 4f 28 26 72 65 61 | 64 66 64 73 29 3b 0a 58 |ERO(&rea|dfds);.X|
|00002790| 20 20 20 20 46 44 5f 53 | 45 54 28 73 2c 20 26 72 | FD_S|ET(s, &r|
|000027a0| 65 61 64 66 64 73 29 3b | 0a 58 20 20 20 20 74 6f |eadfds);|.X to|
|000027b0| 2e 74 76 5f 73 65 63 20 | 3d 20 53 45 52 56 45 52 |.tv_sec |= SERVER|
|000027c0| 54 49 4d 45 4f 55 54 3b | 0a 58 20 20 20 20 74 6f |TIMEOUT;|.X to|
|000027d0| 2e 74 76 5f 75 73 65 63 | 20 3d 20 30 3b 0a 58 20 |.tv_usec| = 0;.X |
|000027e0| 20 20 20 69 66 20 28 28 | 69 20 3d 20 73 65 6c 65 | if ((|i = sele|
|000027f0| 63 74 28 73 2b 31 2c 20 | 26 72 65 61 64 66 64 73 |ct(s+1, |&readfds|
|00002800| 2c 20 4e 55 4c 4c 2c 20 | 4e 55 4c 4c 2c 20 26 74 |, NULL, |NULL, &t|
|00002810| 6f 29 29 20 3c 20 30 29 | 20 7b 0a 58 09 73 79 73 |o)) < 0)| {.X.sys|
|00002820| 6c 6f 67 28 4c 4f 47 5f | 45 52 52 2c 20 22 6d 73 |log(LOG_|ERR, "ms|
|00002830| 67 69 64 3a 20 73 65 6c | 65 63 74 3a 20 25 6d 22 |gid: sel|ect: %m"|
|00002840| 29 3b 0a 58 09 67 6f 74 | 6f 20 62 61 64 3b 0a 58 |);.X.got|o bad;.X|
|00002850| 20 20 20 20 7d 0a 58 20 | 20 20 20 69 66 20 28 69 | }.X | if (i|
|00002860| 20 3d 3d 20 30 20 7c 7c | 20 46 44 5f 49 53 53 45 | == 0 ||| FD_ISSE|
|00002870| 54 28 73 2c 20 26 72 65 | 61 64 66 64 73 29 20 3d |T(s, &re|adfds) =|
|00002880| 3d 20 30 20 7c 7c 20 28 | 69 20 3d 20 72 65 61 64 |= 0 || (|i = read|
|00002890| 28 73 2c 20 26 63 2c 20 | 31 29 29 20 3d 3d 20 30 |(s, &c, |1)) == 0|
|000028a0| 29 20 7b 0a 58 09 73 79 | 73 6c 6f 67 28 4c 4f 47 |) {.X.sy|slog(LOG|
|000028b0| 5f 45 52 52 2c 20 22 6d | 73 67 69 64 3a 20 72 65 |_ERR, "m|sgid: re|
|000028c0| 61 64 20 74 69 6d 65 6f | 75 74 22 29 3b 0a 58 09 |ad timeo|ut");.X.|
|000028d0| 67 6f 74 6f 20 62 61 64 | 3b 0a 58 20 20 20 20 7d |goto bad|;.X }|
|000028e0| 0a 58 20 20 20 20 69 66 | 20 28 69 20 3c 20 30 29 |.X if| (i < 0)|
|000028f0| 20 7b 0a 58 09 73 79 73 | 6c 6f 67 28 4c 4f 47 5f | {.X.sys|log(LOG_|
|00002900| 45 52 52 2c 20 22 6d 73 | 67 69 64 3a 20 72 65 61 |ERR, "ms|gid: rea|
|00002910| 64 3a 20 25 6d 22 29 3b | 0a 58 09 67 6f 74 6f 20 |d: %m");|.X.goto |
|00002920| 62 61 64 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 |bad;.X | }.X |
|00002930| 20 69 66 20 28 63 29 0a | 58 09 72 65 74 75 72 6e | if (c).|X.return|
|00002940| 28 31 29 3b 0a 58 20 20 | 20 20 72 65 74 75 72 6e |(1);.X | return|
|00002950| 28 30 29 3b 0a 62 61 64 | 3a 0a 58 20 20 20 20 63 |(0);.bad|:.X c|
|00002960| 6c 6f 73 65 28 73 29 3b | 0a 58 20 20 20 20 73 20 |lose(s);|.X s |
|00002970| 3d 20 2d 31 3b 0a 58 20 | 20 20 20 72 65 74 75 72 |= -1;.X | retur|
|00002980| 6e 20 30 3b 0a 58 7d 0a | 0a 58 23 69 66 64 65 66 |n 0;.X}.|.X#ifdef|
|00002990| 20 57 41 4e 54 5f 4d 41 | 49 4e 0a 6d 61 69 6e 28 | WANT_MA|IN.main(|
|000029a0| 61 72 67 63 2c 20 61 72 | 67 76 29 0a 58 20 20 20 |argc, ar|gv).X |
|000029b0| 20 69 6e 74 20 61 72 67 | 63 3b 0a 58 20 20 20 20 | int arg|c;.X |
|000029c0| 63 68 61 72 20 2a 61 72 | 67 76 5b 5d 3b 0a 58 7b |char *ar|gv[];.X{|
|000029d0| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 69 |.X re|gister i|
|000029e0| 6e 74 20 6e 3b 0a 58 20 | 20 20 20 63 68 61 72 20 |nt n;.X | char |
|000029f0| 62 75 66 5b 42 55 46 53 | 49 5a 5d 2c 20 63 6d 64 |buf[BUFS|IZ], cmd|
|00002a00| 5b 32 30 5d 2c 20 69 64 | 5b 42 55 46 53 49 5a 5d |[20], id|[BUFSIZ]|
|00002a10| 3b 0a 0a 58 20 20 20 20 | 69 66 20 28 67 65 74 68 |;..X |if (geth|
|00002a20| 6f 73 74 6e 61 6d 65 28 | 68 6f 73 74 6e 61 6d 65 |ostname(|hostname|
|00002a30| 2c 20 42 55 46 53 49 5a | 29 29 20 7b 0a 58 09 70 |, BUFSIZ|)) {.X.p|
|00002a40| 65 72 72 6f 72 28 22 68 | 6f 73 74 6e 61 6d 65 22 |error("h|ostname"|
|00002a50| 29 3b 0a 58 09 65 78 69 | 74 28 31 29 3b 0a 58 20 |);.X.exi|t(1);.X |
|00002a60| 20 20 20 7d 0a 58 20 20 | 20 20 28 76 6f 69 64 29 | }.X | (void)|
|00002a70| 20 70 72 69 6e 74 66 28 | 22 68 6f 73 74 3a 20 25 | printf(|"host: %|
|00002a80| 73 5c 6e 22 2c 20 68 6f | 73 74 6e 61 6d 65 29 3b |s\n", ho|stname);|
|00002a90| 0a 0a 58 20 20 20 20 69 | 66 20 28 61 72 67 63 20 |..X i|f (argc |
|00002aa0| 21 3d 20 31 29 20 7b 0a | 58 09 28 76 6f 69 64 29 |!= 1) {.|X.(void)|
|00002ab0| 20 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c | fprintf|(stderr,|
|00002ac0| 20 22 75 73 61 67 65 3a | 20 25 73 5c 6e 22 2c 20 | "usage:| %s\n", |
|00002ad0| 61 72 67 76 5b 30 5d 29 | 3b 0a 58 09 65 78 69 74 |argv[0])|;.X.exit|
|00002ae0| 28 31 29 3b 0a 58 20 20 | 20 20 7d 0a 0a 58 23 69 |(1);.X | }..X#i|
|00002af0| 66 64 65 66 20 4c 4f 47 | 5f 44 41 45 4d 4f 4e 0a |fdef LOG|_DAEMON.|
|00002b00| 58 20 20 20 20 6f 70 65 | 6e 6c 6f 67 28 22 6d 73 |X ope|nlog("ms|
|00002b10| 67 69 64 2d 74 65 73 74 | 22 2c 20 4c 4f 47 5f 50 |gid-test|", LOG_P|
|00002b20| 49 44 2c 20 4c 4f 47 5f | 44 41 45 4d 4f 4e 29 3b |ID, LOG_|DAEMON);|
|00002b30| 0a 58 23 65 6c 73 65 0a | 58 20 20 20 20 6f 70 65 |.X#else.|X ope|
|00002b40| 6e 6c 6f 67 28 22 6d 73 | 67 69 64 2d 74 65 73 74 |nlog("ms|gid-test|
|00002b50| 22 2c 20 4c 4f 47 5f 50 | 49 44 29 3b 0a 58 23 65 |", LOG_P|ID);.X#e|
|00002b60| 6e 64 69 66 0a 0a 58 20 | 20 20 20 77 68 69 6c 65 |ndif..X | while|
|00002b70| 20 28 66 70 75 74 73 28 | 22 63 6d 64 20 6d 73 67 | (fputs(|"cmd msg|
|00002b80| 69 64 3a 20 22 2c 20 73 | 74 64 6f 75 74 29 2c 20 |id: ", s|tdout), |
|00002b90| 66 66 6c 75 73 68 28 73 | 74 64 6f 75 74 29 2c 20 |fflush(s|tdout), |
|00002ba0| 66 67 65 74 73 28 62 75 | 66 2c 20 42 55 46 53 49 |fgets(bu|f, BUFSI|
|00002bb0| 5a 2c 20 73 74 64 69 6e | 29 29 0a 58 09 69 66 20 |Z, stdin|)).X.if |
|00002bc0| 28 28 6e 20 3d 20 73 73 | 63 61 6e 66 28 62 75 66 |((n = ss|canf(buf|
|00002bd0| 2c 20 22 25 5b 5e 20 5c | 74 5d 25 2a 5b 20 5c 74 |, "%[^ \|t]%*[ \t|
|00002be0| 5d 25 5b 5e 5c 6e 5d 22 | 2c 20 63 6d 64 2c 20 69 |]%[^\n]"|, cmd, i|
|00002bf0| 64 29 29 20 3d 3d 20 32 | 29 20 7b 0a 58 09 20 20 |d)) == 2|) {.X. |
|00002c00| 20 20 69 66 20 28 73 74 | 72 63 6d 70 28 63 6d 64 | if (st|rcmp(cmd|
|00002c10| 2c 20 22 63 61 6e 63 65 | 6c 22 29 20 3d 3d 20 30 |, "cance|l") == 0|
|00002c20| 29 0a 58 09 09 28 76 6f | 69 64 29 20 70 72 69 6e |).X..(vo|id) prin|
|00002c30| 74 66 28 22 25 73 5c 6e | 22 2c 20 28 6d 73 67 69 |tf("%s\n|", (msgi|
|00002c40| 64 28 69 64 2c 20 4d 43 | 41 4e 43 45 4c 29 20 3f |d(id, MC|ANCEL) ?|
|00002c50| 20 22 66 61 69 6c 65 64 | 22 20 3a 20 22 6f 6b 22 | "failed|" : "ok"|
|00002c60| 29 29 3b 0a 58 09 20 20 | 20 20 65 6c 73 65 20 69 |));.X. | else i|
|00002c70| 66 20 28 73 74 72 63 6d | 70 28 63 6d 64 2c 20 22 |f (strcm|p(cmd, "|
|00002c80| 61 64 64 22 29 20 3d 3d | 20 30 29 0a 58 09 09 28 |add") ==| 0).X..(|
|00002c90| 76 6f 69 64 29 20 70 72 | 69 6e 74 66 28 22 25 64 |void) pr|intf("%d|
|00002ca0| 5c 6e 22 2c 20 6d 73 67 | 69 64 28 69 64 2c 20 4d |\n", msg|id(id, M|
|00002cb0| 41 44 44 29 29 3b 0a 58 | 09 09 2f 2a 20 0a 58 09 |ADD));.X|../* .X.|
|00002cc0| 09 28 76 6f 69 64 29 20 | 70 72 69 6e 74 66 28 22 |.(void) |printf("|
|00002cd0| 25 73 64 75 70 6c 69 63 | 61 74 65 5c 6e 22 2c 20 |%sduplic|ate\n", |
|00002ce0| 0a 58 09 09 09 20 20 20 | 20 20 20 28 6d 73 67 69 |.X... | (msgi|
|00002cf0| 64 28 69 64 2c 20 4d 41 | 44 44 29 20 3f 20 22 22 |d(id, MA|DD) ? ""|
|00002d00| 20 3a 20 22 6e 6f 74 20 | 61 20 22 29 29 3b 0a 58 | : "not |a "));.X|
|00002d10| 09 09 2a 2f 0a 58 09 20 | 20 20 20 65 6c 73 65 20 |..*/.X. | else |
|00002d20| 69 66 20 28 73 74 72 63 | 6d 70 28 63 6d 64 2c 20 |if (strc|mp(cmd, |
|00002d30| 22 6f 6c 64 22 29 20 3d | 3d 20 30 29 0a 58 09 09 |"old") =|= 0).X..|
|00002d40| 28 76 6f 69 64 29 20 70 | 72 69 6e 74 66 28 22 25 |(void) p|rintf("%|
|00002d50| 73 5c 6e 22 2c 20 28 6d | 73 67 69 64 28 69 64 2c |s\n", (m|sgid(id,|
|00002d60| 20 4d 4f 4c 44 29 20 3f | 20 22 66 61 69 6c 65 64 | MOLD) ?| "failed|
|00002d70| 22 20 3a 20 22 6f 6b 22 | 29 29 3b 0a 58 09 20 20 |" : "ok"|));.X. |
|00002d80| 20 20 65 6c 73 65 0a 58 | 09 09 28 76 6f 69 64 29 | else.X|..(void)|
|00002d90| 20 70 72 69 6e 74 66 28 | 22 70 6f 73 73 69 62 6c | printf(|"possibl|
|00002da0| 65 20 63 6d 64 73 20 61 | 72 65 20 63 61 6e 63 65 |e cmds a|re cance|
|00002db0| 6c 2c 20 61 64 64 2c 20 | 61 6e 64 20 6f 6c 64 5c |l, add, |and old\|
|00002dc0| 6e 22 29 3b 0a 58 09 7d | 20 65 6c 73 65 0a 58 09 |n");.X.}| else.X.|
|00002dd0| 20 20 20 20 28 76 6f 69 | 64 29 20 70 72 69 6e 74 | (voi|d) print|
|00002de0| 66 28 22 5b 25 64 5d 20 | 70 6f 73 73 69 62 6c 65 |f("[%d] |possible|
|00002df0| 20 63 6d 64 73 20 61 72 | 65 20 63 61 6e 63 65 6c | cmds ar|e cancel|
|00002e00| 2c 20 61 64 64 2c 20 61 | 6e 64 20 6f 6c 64 5c 6e |, add, a|nd old\n|
|00002e10| 22 2c 20 6e 29 3b 0a 58 | 7d 0a 58 23 65 6e 64 69 |", n);.X|}.X#endi|
|00002e20| 66 0a 58 23 65 6e 64 69 | 66 20 4d 53 47 49 44 0a |f.X#endi|f MSGID.|
|00002e30| 21 0a 65 63 68 6f 20 6d | 73 67 69 64 2e 68 20 31 |!.echo m|sgid.h 1|
|00002e40| 3e 26 32 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |>&2.sed |'s/^X//'|
|00002e50| 20 3e 6d 73 67 69 64 2e | 68 20 3c 3c 27 21 27 0a | >msgid.|h <<'!'.|
|00002e60| 58 2f 2a 0a 58 20 2a 20 | 44 65 66 61 75 6c 74 20 |X/*.X * |Default |
|00002e70| 70 6c 61 63 65 20 66 6f | 72 20 74 68 65 20 73 6f |place fo|r the so|
|00002e80| 63 6b 65 74 0a 58 20 2a | 2f 0a 58 23 64 65 66 69 |cket.X *|/.X#defi|
|00002e90| 6e 65 20 53 4f 43 4b 4e | 41 4d 45 09 22 2f 75 73 |ne SOCKN|AME."/us|
|00002ea0| 72 2f 6c 69 62 2f 6e 65 | 77 73 2f 6e 6e 74 70 5f |r/lib/ne|ws/nntp_|
|00002eb0| 6d 73 67 69 64 22 0a 58 | 23 64 65 66 69 6e 65 20 |msgid".X|#define |
|00002ec0| 50 49 44 46 49 4c 45 20 | 20 20 20 20 20 20 20 20 |PIDFILE | |
|00002ed0| 22 2f 75 73 72 2f 6c 69 | 62 2f 6e 65 77 73 2f 6d |"/usr/li|b/news/m|
|00002ee0| 73 67 69 64 64 2e 70 69 | 64 22 0a 0a 0a 58 23 69 |sgidd.pi|d"...X#i|
|00002ef0| 66 64 65 66 20 4e 45 45 | 44 4d 53 47 53 0a 58 2f |fdef NEE|DMSGS.X/|
|00002f00| 2a 0a 58 20 2a 20 4d 65 | 73 73 61 67 65 20 74 79 |*.X * Me|ssage ty|
|00002f10| 70 65 73 20 66 72 6f 6d | 20 63 6c 69 65 6e 74 20 |pes from| client |
|00002f20| 74 6f 20 73 65 72 76 65 | 72 0a 58 20 2a 2f 0a 63 |to serve|r.X */.c|
|00002f30| 68 61 72 20 2a 6d 73 67 | 73 5b 5d 20 3d 20 7b 0a |har *msg|s[] = {.|
|00002f40| 58 20 20 20 20 22 61 64 | 64 2d 22 2c 0a 58 20 20 |X "ad|d-",.X |
|00002f50| 20 20 22 63 61 6e 2d 22 | 2c 0a 58 20 20 20 20 22 | "can-"|,.X "|
|00002f60| 68 73 74 2d 22 2c 0a 58 | 20 20 20 20 22 6f 6c 64 |hst-",.X| "old|
|00002f70| 2d 22 0a 58 7d 3b 0a 58 | 23 65 6e 64 69 66 0a 0a |-".X};.X|#endif..|
|00002f80| 58 2f 2a 20 0a 58 20 2a | 20 4d 65 73 73 61 67 65 |X/* .X *| Message|
|00002f90| 73 20 74 6f 20 63 6c 69 | 6e 65 74 20 73 69 64 65 |s to cli|net side|
|00002fa0| 20 63 61 6c 6c 65 64 20 | 77 69 74 68 20 28 4d 55 | called |with (MU|
|00002fb0| 53 54 20 42 45 20 49 4e | 20 53 41 4d 45 20 4f 52 |ST BE IN| SAME OR|
|00002fc0| 44 45 52 20 41 53 20 6d | 73 67 73 5b 5d 29 0a 58 |DER AS m|sgs[]).X|
|00002fd0| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 4d 41 44 | */.X#de|fine MAD|
|00002fe0| 44 09 30 0a 58 23 64 65 | 66 69 6e 65 09 4d 43 41 |D.0.X#de|fine.MCA|
|00002ff0| 4e 43 45 4c 09 31 0a 58 | 23 64 65 66 69 6e 65 09 |NCEL.1.X|#define.|
|00003000| 4d 48 4f 53 54 09 32 0a | 58 23 64 65 66 69 6e 65 |MHOST.2.|X#define|
|00003010| 20 4d 4f 4c 44 09 33 0a | 21 0a 65 63 68 6f 20 6d | MOLD.3.|!.echo m|
|00003020| 73 67 69 64 64 2e 63 20 | 31 3e 26 32 0a 73 65 64 |sgidd.c |1>&2.sed|
|00003030| 20 27 73 2f 5e 58 2f 2f | 27 20 3e 6d 73 67 69 64 | 's/^X//|' >msgid|
|00003040| 64 2e 63 20 3c 3c 27 21 | 27 0a 58 2f 2a 20 6d 73 |d.c <<'!|'.X/* ms|
|00003050| 67 69 64 64 20 2d 2d 20 | 6d 65 73 73 61 67 65 20 |gidd -- |message |
|00003060| 49 44 20 64 61 65 6d 6f | 6e 0a 58 20 2a 20 76 69 |ID daemo|n.X * vi|
|00003070| 78 20 32 34 6d 61 79 39 | 30 20 5b 77 72 69 74 74 |x 24may9|0 [writt|
|00003080| 65 6e 5d 0a 58 20 2a 0a | 58 20 2a 20 77 69 74 68 |en].X *.|X * with|
|00003090| 20 6d 6f 64 73 20 6b 65 | 6e 40 73 64 64 2e 68 70 | mods ke|n@sdd.hp|
|000030a0| 2e 63 6f 6d 20 30 31 6a | 75 6c 39 30 0a 58 20 2a |.com 01j|ul90.X *|
|000030b0| 20 73 70 65 65 64 75 70 | 73 20 62 79 20 47 65 6f | speedup|s by Geo|
|000030c0| 66 66 20 43 6f 6c 6c 79 | 65 72 2c 20 32 36 20 4a |ff Colly|er, 26 J|
|000030d0| 75 6c 79 20 31 39 39 32 | 0a 58 20 2a 0a 58 20 2a |uly 1992|.X *.X *|
|000030e0| 20 24 48 65 61 64 65 72 | 3a 20 6d 73 67 69 64 64 | $Header|: msgidd|
|000030f0| 2e 63 2c 76 20 31 2e 38 | 20 39 31 2f 30 35 2f 32 |.c,v 1.8| 91/05/2|
|00003100| 31 20 31 39 3a 34 37 3a | 34 38 20 76 69 78 69 65 |1 19:47:|48 vixie|
|00003110| 20 4c 6f 63 6b 65 64 20 | 24 0a 58 20 2a 2f 0a 0a | Locked |$.X */..|
|00003120| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |X#includ|e <stdio|
|00003130| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 63 |.h>.X#in|clude <c|
|00003140| 74 79 70 65 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |type.h>.|X#includ|
|00003150| 65 20 3c 73 69 67 6e 61 | 6c 2e 68 3e 0a 58 23 69 |e <signa|l.h>.X#i|
|00003160| 6e 63 6c 75 64 65 20 3c | 65 72 72 6e 6f 2e 68 3e |nclude <|errno.h>|
|00003170| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 79 73 6c |.X#inclu|de <sysl|
|00003180| 6f 67 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |og.h>.X#|include |
|00003190| 3c 73 79 73 2f 74 79 70 | 65 73 2e 68 3e 0a 58 23 |<sys/typ|es.h>.X#|
|000031a0| 69 6e 63 6c 75 64 65 20 | 3c 73 79 73 2f 73 6f 63 |include |<sys/soc|
|000031b0| 6b 65 74 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |ket.h>.X|#include|
|000031c0| 20 3c 73 79 73 2f 75 6e | 2e 68 3e 0a 58 23 69 6e | <sys/un|.h>.X#in|
|000031d0| 63 6c 75 64 65 20 3c 73 | 79 73 2f 74 69 6d 65 2e |clude <s|ys/time.|
|000031e0| 68 3e 0a 58 23 69 66 64 | 65 66 20 68 70 75 78 0a |h>.X#ifd|ef hpux.|
|000031f0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 70 |X#includ|e <sys/p|
|00003200| 61 72 61 6d 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |aram.h>.|X#includ|
|00003210| 65 20 3c 6c 69 62 42 53 | 44 2e 68 3e 0a 58 23 65 |e <libBS|D.h>.X#e|
|00003220| 6e 64 69 66 0a 58 23 64 | 65 66 69 6e 65 20 4e 45 |ndif.X#d|efine NE|
|00003230| 45 44 4d 53 47 53 0a 58 | 23 69 6e 63 6c 75 64 65 |EDMSGS.X|#include|
|00003240| 20 22 6d 73 67 69 64 2e | 68 22 0a 0a 58 23 64 65 | "msgid.|h"..X#de|
|00003250| 66 69 6e 65 20 41 53 53 | 45 52 54 28 65 2c 20 6d |fine ASS|ERT(e, m|
|00003260| 29 20 69 66 20 28 21 28 | 65 29 29 20 7b 66 70 75 |) if (!(|e)) {fpu|
|00003270| 74 73 28 22 61 73 73 65 | 72 74 20 66 61 69 6c 65 |ts("asse|rt faile|
|00003280| 64 2e 2e 2e 20 22 2c 20 | 73 74 64 65 72 72 29 3b |d... ", |stderr);|
|00003290| 5c 0a 58 09 09 09 09 70 | 65 72 72 6f 72 28 6d 29 |\.X....p|error(m)|
|000032a0| 3b 20 65 78 69 74 28 31 | 29 3b 7d 0a 0a 58 23 64 |; exit(1|);}..X#d|
|000032b0| 65 66 69 6e 65 20 53 54 | 52 45 51 28 73 31 2c 20 |efine ST|REQ(s1, |
|000032c0| 73 32 29 09 09 28 2a 28 | 73 31 29 20 3d 3d 20 2a |s2)..(*(|s1) == *|
|000032d0| 28 73 32 29 20 26 26 20 | 73 74 72 63 6d 70 28 73 |(s2) && |strcmp(s|
|000032e0| 31 2c 20 73 32 29 20 3d | 3d 20 30 29 0a 58 23 64 |1, s2) =|= 0).X#d|
|000032f0| 65 66 69 6e 65 20 53 54 | 52 4e 5f 45 51 28 73 31 |efine ST|RN_EQ(s1|
|00003300| 2c 20 73 32 2c 20 6e 29 | 09 28 2a 28 73 31 29 20 |, s2, n)|.(*(s1) |
|00003310| 3d 3d 20 2a 28 73 32 29 | 20 26 26 20 73 74 72 6e |== *(s2)| && strn|
|00003320| 63 6d 70 28 73 31 2c 20 | 73 32 2c 20 6e 29 20 3d |cmp(s1, |s2, n) =|
|00003330| 3d 20 30 29 0a 0a 58 23 | 64 65 66 69 6e 65 20 46 |= 0)..X#|define F|
|00003340| 4c 41 47 53 5f 52 45 53 | 45 54 4c 4f 47 09 30 78 |LAGS_RES|ETLOG.0x|
|00003350| 30 32 0a 58 23 64 65 66 | 69 6e 65 20 46 4c 41 47 |02.X#def|ine FLAG|
|00003360| 53 5f 46 4c 55 53 48 4c | 4f 47 09 30 78 30 34 0a |S_FLUSHL|OG.0x04.|
|00003370| 58 23 64 65 66 69 6e 65 | 20 4d 41 58 5f 41 47 45 |X#define| MAX_AGE|
|00003380| 09 09 31 30 0a 58 23 64 | 65 66 69 6e 65 20 41 4c |..10.X#d|efine AL|
|00003390| 41 52 4d 5f 54 49 4d 45 | 09 33 30 30 0a 0a 58 23 |ARM_TIME|.300..X#|
|000033a0| 64 65 66 69 6e 65 20 48 | 41 53 48 53 49 5a 45 20 |define H|ASHSIZE |
|000033b0| 31 30 32 34 0a 0a 58 23 | 69 66 20 30 0a 58 23 64 |1024..X#|if 0.X#d|
|000033c0| 65 66 69 6e 65 20 64 70 | 72 69 6e 74 66 20 66 70 |efine dp|rintf fp|
|000033d0| 72 69 6e 74 66 0a 58 23 | 65 6c 73 65 0a 58 23 64 |rintf.X#|else.X#d|
|000033e0| 65 66 69 6e 65 20 64 70 | 72 69 6e 74 66 20 28 76 |efine dp|rintf (v|
|000033f0| 6f 69 64 29 0a 58 23 65 | 6e 64 69 66 0a 0a 63 68 |oid).X#e|ndif..ch|
|00003400| 61 72 20 2a 6d 61 6c 6c | 6f 63 28 29 3b 0a 65 78 |ar *mall|oc();.ex|
|00003410| 74 65 72 6e 20 69 6e 74 | 20 65 72 72 6e 6f 3b 0a |tern int| errno;.|
|00003420| 0a 69 6e 74 20 6c 6f 67 | 20 3d 20 30 2c 20 66 6c |.int log| = 0, fl|
|00003430| 61 67 73 20 3d 20 30 3b | 0a 74 69 6d 65 5f 74 20 |ags = 0;|.time_t |
|00003440| 68 6f 6c 64 5f 74 69 6d | 65 20 3d 20 4d 41 58 5f |hold_tim|e = MAX_|
|00003450| 41 47 45 20 2a 20 36 30 | 3b 0a 63 68 61 72 20 2a |AGE * 60|;.char *|
|00003460| 68 6f 73 74 73 5b 31 30 | 30 5d 2c 20 2a 6c 66 6e |hosts[10|0], *lfn|
|00003470| 2c 20 2a 70 74 69 6d 65 | 28 29 3b 0a 58 46 49 4c |, *ptime|();.XFIL|
|00003480| 45 20 2a 6c 6f 67 66 70 | 20 3d 20 4e 55 4c 4c 3b |E *logfp| = NULL;|
|00003490| 0a 0a 73 74 72 75 63 74 | 20 7b 0a 58 20 20 20 20 |..struct| {.X |
|000034a0| 69 6e 74 20 63 6f 6e 6e | 65 63 74 65 64 3b 0a 58 |int conn|ected;.X|
|000034b0| 20 20 20 20 69 6e 74 20 | 63 6f 6e 6e 65 63 74 73 | int |connects|
|000034c0| 2c 20 64 72 6f 70 73 3b | 0a 58 20 20 20 20 69 6e |, drops;|.X in|
|000034d0| 74 20 6e 65 77 2c 20 64 | 75 70 2c 20 63 61 6e 63 |t new, d|up, canc|
|000034e0| 65 6c 3b 0a 58 20 20 20 | 20 69 6e 74 20 66 72 65 |el;.X | int fre|
|000034f0| 65 64 3b 0a 58 7d 20 73 | 74 61 74 73 3b 0a 0a 73 |ed;.X} s|tats;..s|
|00003500| 74 72 75 63 74 20 65 6c | 20 7b 0a 58 20 20 20 20 |truct el| {.X |
|00003510| 73 74 72 75 63 74 20 65 | 6c 20 2a 6e 65 78 74 3b |struct e|l *next;|
|00003520| 0a 58 20 20 20 20 74 69 | 6d 65 5f 74 20 61 67 65 |.X ti|me_t age|
|00003530| 3b 0a 58 20 20 20 20 69 | 6e 74 20 72 65 66 63 6e |;.X i|nt refcn|
|00003540| 74 3b 0a 58 20 20 20 20 | 63 68 61 72 20 69 64 5b |t;.X |char id[|
|00003550| 31 5d 3b 0a 58 7d 20 2a | 69 64 73 5b 48 41 53 48 |1];.X} *|ids[HASH|
|00003560| 53 49 5a 45 5d 3b 0a 0a | 63 68 61 72 20 2a 6d 6f |SIZE];..|char *mo|
|00003570| 6e 74 68 73 5b 31 32 5d | 20 3d 20 7b 0a 58 20 20 |nths[12]| = {.X |
|00003580| 20 20 22 4a 61 6e 22 2c | 20 22 46 65 62 22 2c 20 | "Jan",| "Feb", |
|00003590| 22 4d 61 72 22 2c 20 22 | 41 70 72 22 2c 20 22 4d |"Mar", "|Apr", "M|
|000035a0| 61 79 22 2c 20 22 4a 75 | 6e 22 2c 0a 58 20 20 20 |ay", "Ju|n",.X |
|000035b0| 20 22 4a 75 6c 22 2c 20 | 22 41 75 67 22 2c 20 22 | "Jul", |"Aug", "|
|000035c0| 53 65 70 22 2c 20 22 4f | 63 74 22 2c 20 22 4e 6f |Sep", "O|ct", "No|
|000035d0| 76 22 2c 20 22 44 65 63 | 22 0a 58 7d 3b 0a 0a 73 |v", "Dec|".X};..s|
|000035e0| 74 61 74 69 63 20 69 6e | 74 20 74 72 61 6e 73 61 |tatic in|t transa|
|000035f0| 63 74 69 6f 6e 28 29 3b | 0a 0a 73 74 61 74 69 63 |ction();|..static|
|00003600| 20 75 6e 73 69 67 6e 65 | 64 0a 6d 6b 68 61 73 68 | unsigne|d.mkhash|
|00003610| 28 73 29 0a 72 65 67 69 | 73 74 65 72 20 75 6e 73 |(s).regi|ster uns|
|00003620| 69 67 6e 65 64 20 63 68 | 61 72 20 2a 73 3b 0a 58 |igned ch|ar *s;.X|
|00003630| 7b 0a 58 09 72 65 67 69 | 73 74 65 72 20 75 6e 73 |{.X.regi|ster uns|
|00003640| 69 67 6e 65 64 20 68 61 | 73 68 20 3d 20 30 3b 0a |igned ha|sh = 0;.|
|00003650| 58 09 72 65 67 69 73 74 | 65 72 20 75 6e 73 69 67 |X.regist|er unsig|
|00003660| 6e 65 64 20 63 68 61 72 | 20 63 3b 0a 0a 58 09 77 |ned char| c;..X.w|
|00003670| 68 69 6c 65 20 28 28 63 | 20 3d 20 2a 73 2b 2b 29 |hile ((c| = *s++)|
|00003680| 20 21 3d 20 27 5c 30 27 | 29 0a 58 09 09 68 61 73 | != '\0'|).X..has|
|00003690| 68 20 2b 3d 20 63 3b 0a | 58 09 72 65 74 75 72 6e |h += c;.|X.return|
|000036a0| 20 68 61 73 68 3b 0a 58 | 7d 0a 0a 73 74 61 74 69 | hash;.X|}..stati|
|000036b0| 63 20 63 68 61 72 20 2a | 0a 73 74 72 64 75 70 28 |c char *|.strdup(|
|000036c0| 78 29 0a 63 68 61 72 20 | 2a 78 3b 0a 58 7b 0a 58 |x).char |*x;.X{.X|
|000036d0| 09 72 65 67 69 73 74 65 | 72 20 63 68 61 72 20 2a |.registe|r char *|
|000036e0| 79 20 3d 20 6d 61 6c 6c | 6f 63 28 73 74 72 6c 65 |y = mall|oc(strle|
|000036f0| 6e 28 78 29 20 2b 20 31 | 29 3b 0a 0a 58 09 69 66 |n(x) + 1|);..X.if|
|00003700| 20 28 79 29 0a 58 09 09 | 73 74 72 63 70 79 28 79 | (y).X..|strcpy(y|
|00003710| 2c 20 78 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 79 |, x);.X.|return y|
|00003720| 3b 0a 58 7d 0a 0a 73 74 | 61 74 69 63 20 76 6f 69 |;.X}..st|atic voi|
|00003730| 64 0a 73 61 76 65 70 69 | 64 20 28 29 0a 58 7b 0a |d.savepi|d ().X{.|
|00003740| 58 20 20 46 49 4c 45 20 | 2a 70 69 64 66 70 20 3b |X FILE |*pidfp ;|
|00003750| 0a 0a 58 20 20 69 66 20 | 28 28 70 69 64 66 70 20 |..X if |((pidfp |
|00003760| 3d 20 66 6f 70 65 6e 20 | 28 50 49 44 46 49 4c 45 |= fopen |(PIDFILE|
|00003770| 2c 22 77 22 29 29 20 3d | 3d 20 4e 55 4c 4c 29 0a |,"w")) =|= NULL).|
|00003780| 58 20 20 20 20 72 65 74 | 75 72 6e 20 3b 0a 0a 58 |X ret|urn ;..X|
|00003790| 20 20 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 | (void)| fprintf|
|000037a0| 20 28 70 69 64 66 70 2c | 22 25 64 5c 6e 22 2c 67 | (pidfp,|"%d\n",g|
|000037b0| 65 74 70 69 64 28 29 29 | 20 3b 0a 58 20 20 28 76 |etpid())| ;.X (v|
|000037c0| 6f 69 64 29 20 66 63 6c | 6f 73 65 20 28 70 69 64 |oid) fcl|ose (pid|
|000037d0| 66 70 29 20 3b 0a 58 7d | 0a 0a 63 68 61 72 20 2a |fp) ;.X}|..char *|
|000037e0| 0a 70 74 69 6d 65 28 6e | 6f 77 29 0a 58 20 20 20 |.ptime(n|ow).X |
|000037f0| 20 74 69 6d 65 5f 74 20 | 6e 6f 77 3b 0a 58 7b 0a | time_t |now;.X{.|
|00003800| 58 20 20 20 20 73 74 61 | 74 69 63 20 63 68 61 72 |X sta|tic char|
|00003810| 20 62 75 66 5b 35 30 5d | 3b 0a 58 20 20 20 20 73 | buf[50]|;.X s|
|00003820| 74 72 75 63 74 20 74 6d | 20 2a 74 6d 70 3b 0a 0a |truct tm| *tmp;..|
|00003830| 58 20 20 20 20 74 6d 70 | 20 3d 20 6c 6f 63 61 6c |X tmp| = local|
|00003840| 74 69 6d 65 28 26 6e 6f | 77 29 3b 0a 58 20 20 20 |time(&no|w);.X |
|00003850| 20 28 76 6f 69 64 29 20 | 73 70 72 69 6e 74 66 28 | (void) |sprintf(|
|00003860| 62 75 66 2c 20 22 25 73 | 20 25 32 64 20 25 30 32 |buf, "%s| %2d %02|
|00003870| 64 3a 25 30 32 64 3a 25 | 30 32 64 22 2c 20 0a 58 |d:%02d:%|02d", .X|
|00003880| 09 09 20 20 20 6d 6f 6e | 74 68 73 5b 74 6d 70 2d |.. mon|ths[tmp-|
|00003890| 3e 74 6d 5f 6d 6f 6e 5d | 2c 20 74 6d 70 2d 3e 74 |>tm_mon]|, tmp->t|
|000038a0| 6d 5f 6d 64 61 79 2c 20 | 74 6d 70 2d 3e 74 6d 5f |m_mday, |tmp->tm_|
|000038b0| 68 6f 75 72 2c 20 0a 58 | 09 09 20 20 20 74 6d 70 |hour, .X|.. tmp|
|000038c0| 2d 3e 74 6d 5f 6d 69 6e | 2c 20 74 6d 70 2d 3e 74 |->tm_min|, tmp->t|
|000038d0| 6d 5f 73 65 63 29 3b 0a | 58 20 20 20 20 72 65 74 |m_sec);.|X ret|
|000038e0| 75 72 6e 20 28 62 75 66 | 29 3b 0a 58 7d 0a 0a 73 |urn (buf|);.X}..s|
|000038f0| 74 61 74 69 63 20 76 6f | 69 64 20 0a 75 73 61 67 |tatic vo|id .usag|
|00003900| 65 28 6d 65 29 20 0a 58 | 20 20 20 20 63 68 61 72 |e(me) .X| char|
|00003910| 20 2a 6d 65 3b 0a 58 7b | 0a 58 20 20 20 20 28 76 | *me;.X{|.X (v|
|00003920| 6f 69 64 29 20 66 70 72 | 69 6e 74 66 28 73 74 64 |oid) fpr|intf(std|
|00003930| 65 72 72 2c 20 22 55 73 | 61 67 65 3a 20 25 73 20 |err, "Us|age: %s |
|00003940| 5b 6f 70 74 69 6f 6e 73 | 5d 5c 6e 22 2c 20 6d 65 |[options|]\n", me|
|00003950| 29 3b 0a 58 20 20 20 20 | 28 76 6f 69 64 29 20 66 |);.X |(void) f|
|00003960| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00003970| 4f 70 74 69 6f 6e 73 3a | 20 2d 73 20 3c 75 6e 69 |Options:| -s <uni|
|00003980| 78 20 64 6f 6d 61 69 6e | 20 73 6f 63 6b 65 74 6e |x domain| socketn|
|00003990| 61 6d 65 3e 20 5b 25 73 | 5d 5c 6e 22 2c 0a 58 09 |ame> [%s|]\n",.X.|
|000039a0| 09 20 20 20 53 4f 43 4b | 4e 41 4d 45 29 3b 0a 58 |. SOCK|NAME);.X|
|000039b0| 20 20 20 20 28 76 6f 69 | 64 29 20 66 70 72 69 6e | (voi|d) fprin|
|000039c0| 74 66 28 73 74 64 65 72 | 72 2c 20 22 20 20 20 20 |tf(stder|r, " |
|000039d0| 20 20 20 20 20 2d 6c 20 | 3c 6c 6f 67 20 66 69 6c | -l |<log fil|
|000039e0| 65 20 6e 61 6d 65 3e 5c | 6e 22 29 3b 0a 58 20 20 |e name>\|n");.X |
|000039f0| 20 20 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 | (void)| fprintf|
|00003a00| 28 73 74 64 65 72 72 2c | 20 22 20 20 20 20 20 20 |(stderr,| " |
|00003a10| 20 20 20 2d 68 20 3c 68 | 6f 6c 64 20 74 69 6d 65 | -h <h|old time|
|00003a20| 20 69 6e 20 6d 69 6e 75 | 74 65 73 3e 5c 6e 22 29 | in minu|tes>\n")|
|00003a30| 3b 0a 58 20 20 20 20 65 | 78 69 74 28 31 29 3b 0a |;.X e|xit(1);.|
|00003a40| 58 7d 0a 0a 73 74 61 74 | 69 63 20 76 6f 69 64 0a |X}..stat|ic void.|
|00003a50| 6f 70 65 6e 6c 6f 67 66 | 69 6c 65 28 29 0a 58 7b |openlogf|ile().X{|
|00003a60| 0a 58 20 20 20 20 69 66 | 20 28 6c 6f 67 66 70 29 |.X if| (logfp)|
|00003a70| 0a 58 09 28 76 6f 69 64 | 29 20 66 63 6c 6f 73 65 |.X.(void|) fclose|
|00003a80| 28 6c 6f 67 66 70 29 3b | 0a 58 20 20 20 20 69 66 |(logfp);|.X if|
|00003a90| 20 28 6c 6f 67 20 26 26 | 20 28 6c 6f 67 66 70 20 | (log &&| (logfp |
|00003aa0| 3d 20 66 6f 70 65 6e 28 | 6c 66 6e 2c 20 22 61 2b |= fopen(|lfn, "a+|
|00003ab0| 22 29 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |")) == N|ULL) {.X|
|00003ac0| 09 73 79 73 6c 6f 67 28 | 4c 4f 47 5f 45 52 52 2c |.syslog(|LOG_ERR,|
|00003ad0| 20 22 55 6e 61 62 6c 65 | 20 74 6f 20 6f 70 65 6e | "Unable| to open|
|00003ae0| 20 25 73 3a 20 25 6d 22 | 2c 20 6c 66 6e 29 3b 0a | %s: %m"|, lfn);.|
|00003af0| 58 09 6c 6f 67 20 3d 20 | 30 3b 0a 58 09 6c 6f 67 |X.log = |0;.X.log|
|00003b00| 66 70 20 3d 20 4e 55 4c | 4c 3b 0a 58 20 20 20 20 |fp = NUL|L;.X |
|00003b10| 7d 0a 58 7d 0a 0a 73 74 | 61 74 69 63 20 76 6f 69 |}.X}..st|atic voi|
|00003b20| 64 0a 62 79 65 28 29 0a | 58 7b 0a 58 20 20 20 20 |d.bye().|X{.X |
|00003b30| 69 66 20 28 6c 6f 67 29 | 0a 58 09 28 76 6f 69 64 |if (log)|.X.(void|
|00003b40| 29 20 66 63 6c 6f 73 65 | 28 6c 6f 67 66 70 29 3b |) fclose|(logfp);|
|00003b50| 0a 58 20 20 20 20 64 70 | 72 69 6e 74 66 28 73 74 |.X dp|rintf(st|
|00003b60| 64 65 72 72 2c 22 42 79 | 65 20 21 21 5c 6e 22 29 |derr,"By|e !!\n")|
|00003b70| 3b 0a 58 20 20 20 20 65 | 78 69 74 28 30 29 3b 0a |;.X e|xit(0);.|
|00003b80| 58 7d 0a 0a 73 74 61 74 | 69 63 20 76 6f 69 64 0a |X}..stat|ic void.|
|00003b90| 72 65 73 65 74 6c 6f 67 | 28 29 20 7b 0a 58 20 20 |resetlog|() {.X |
|00003ba0| 20 20 66 6c 61 67 73 20 | 7c 3d 20 46 4c 41 47 53 | flags ||= FLAGS|
|00003bb0| 5f 52 45 53 45 54 4c 4f | 47 3b 0a 58 7d 0a 0a 73 |_RESETLO|G;.X}..s|
|00003bc0| 74 61 74 69 63 20 76 6f | 69 64 20 0a 70 73 74 61 |tatic vo|id .psta|
|00003bd0| 74 73 28 29 20 0a 58 7b | 0a 58 20 20 20 20 63 68 |ts() .X{|.X ch|
|00003be0| 61 72 20 6d 73 67 62 75 | 66 5b 31 30 32 34 5d 3b |ar msgbu|f[1024];|
|00003bf0| 0a 0a 58 20 20 20 20 69 | 66 20 28 6c 6f 67 29 0a |..X i|f (log).|
|00003c00| 58 09 66 6c 61 67 73 20 | 7c 3d 20 46 4c 41 47 53 |X.flags ||= FLAGS|
|00003c10| 5f 46 4c 55 53 48 4c 4f | 47 3b 0a 58 20 20 20 20 |_FLUSHLO|G;.X |
|00003c20| 73 70 72 69 6e 74 66 28 | 6d 73 67 62 75 66 2c 20 |sprintf(|msgbuf, |
|00003c30| 22 73 74 61 74 73 3a 20 | 25 64 20 63 6f 6e 6e 65 |"stats: |%d conne|
|00003c40| 63 74 65 64 2c 20 25 64 | 20 63 6f 6e 6e 65 63 74 |cted, %d| connect|
|00003c50| 73 2c 20 25 64 20 64 72 | 6f 70 73 2c 20 25 64 20 |s, %d dr|ops, %d |
|00003c60| 64 75 70 73 2c 20 25 64 | 20 6e 65 77 2c 20 25 64 |dups, %d| new, %d|
|00003c70| 20 63 61 6e 63 65 6c 2c | 20 25 64 20 66 72 65 65 | cancel,| %d free|
|00003c80| 64 5c 6e 22 2c 0a 58 09 | 20 20 20 20 73 74 61 74 |d\n",.X.| stat|
|00003c90| 73 2e 63 6f 6e 6e 65 63 | 74 65 64 2c 20 73 74 61 |s.connec|ted, sta|
|00003ca0| 74 73 2e 63 6f 6e 6e 65 | 63 74 73 2c 20 73 74 61 |ts.conne|cts, sta|
|00003cb0| 74 73 2e 64 72 6f 70 73 | 2c 20 73 74 61 74 73 2e |ts.drops|, stats.|
|00003cc0| 64 75 70 2c 20 73 74 61 | 74 73 2e 6e 65 77 2c 0a |dup, sta|ts.new,.|
|00003cd0| 58 09 20 20 20 20 73 74 | 61 74 73 2e 63 61 6e 63 |X. st|ats.canc|
|00003ce0| 65 6c 2c 20 73 74 61 74 | 73 2e 66 72 65 65 64 29 |el, stat|s.freed)|
|00003cf0| 3b 0a 58 20 20 20 20 64 | 70 72 69 6e 74 66 28 73 |;.X d|printf(s|
|00003d00| 74 64 65 72 72 2c 20 22 | 25 73 5c 6e 22 2c 20 6d |tderr, "|%s\n", m|
|00003d10| 73 67 62 75 66 29 3b 0a | 58 20 20 20 20 73 79 73 |sgbuf);.|X sys|
|00003d20| 6c 6f 67 28 4c 4f 47 5f | 49 4e 46 4f 2c 20 6d 73 |log(LOG_|INFO, ms|
|00003d30| 67 62 75 66 29 3b 0a 58 | 20 20 20 20 73 74 61 74 |gbuf);.X| stat|
|00003d40| 73 2e 63 6f 6e 6e 65 63 | 74 73 20 3d 20 73 74 61 |s.connec|ts = sta|
|00003d50| 74 73 2e 64 72 6f 70 73 | 20 3d 20 73 74 61 74 73 |ts.drops| = stats|
|00003d60| 2e 6e 65 77 20 3d 20 73 | 74 61 74 73 2e 63 61 6e |.new = s|tats.can|
|00003d70| 63 65 6c 20 3d 20 73 74 | 61 74 73 2e 64 75 70 20 |cel = st|ats.dup |
|00003d80| 3d 0a 58 09 73 74 61 74 | 73 2e 66 72 65 65 64 20 |=.X.stat|s.freed |
|00003d90| 3d 20 30 3b 0a 58 20 20 | 20 20 61 6c 61 72 6d 28 |= 0;.X | alarm(|
|00003da0| 41 4c 41 52 4d 5f 54 49 | 4d 45 29 3b 0a 58 7d 0a |ALARM_TI|ME);.X}.|
|00003db0| 0a 69 6e 74 20 6f 6e 70 | 69 70 65 28 29 3b 0a 0a |.int onp|ipe();..|
|00003dc0| 6d 61 69 6e 28 61 72 67 | 63 2c 20 61 72 67 76 29 |main(arg|c, argv)|
|00003dd0| 0a 58 20 20 20 20 69 6e | 74 20 61 72 67 63 3b 0a |.X in|t argc;.|
|00003de0| 58 20 20 20 20 63 68 61 | 72 20 2a 61 72 67 76 5b |X cha|r *argv[|
|00003df0| 5d 3b 0a 58 7b 0a 58 20 | 20 20 20 72 65 67 69 73 |];.X{.X | regis|
|00003e00| 74 65 72 20 63 68 61 72 | 20 2a 73 6e 20 3d 20 53 |ter char| *sn = S|
|00003e10| 4f 43 4b 4e 41 4d 45 3b | 0a 58 20 20 20 20 72 65 |OCKNAME;|.X re|
|00003e20| 67 69 73 74 65 72 20 69 | 6e 74 20 73 3b 0a 58 20 |gister i|nt s;.X |
|00003e30| 20 20 20 69 6e 74 20 68 | 69 67 68 65 73 74 5f 66 | int h|ighest_f|
|00003e40| 64 3b 0a 58 20 20 20 20 | 73 74 72 75 63 74 20 73 |d;.X |struct s|
|00003e50| 6f 63 6b 61 64 64 72 5f | 75 6e 20 6e 2c 20 69 6e |ockaddr_|un n, in|
|00003e60| 3b 0a 58 20 20 20 20 66 | 64 5f 73 65 74 20 63 6c |;.X f|d_set cl|
|00003e70| 69 65 6e 74 73 3b 0a 58 | 20 20 20 20 65 78 74 65 |ients;.X| exte|
|00003e80| 72 6e 20 63 68 61 72 20 | 2a 6f 70 74 61 72 67 3b |rn char |*optarg;|
|00003e90| 0a 58 20 20 20 20 65 78 | 74 65 72 6e 20 69 6e 74 |.X ex|tern int|
|00003ea0| 20 6f 70 74 69 6e 64 3b | 0a 0a 58 20 20 20 20 77 | optind;|..X w|
|00003eb0| 68 69 6c 65 20 28 28 73 | 20 3d 20 67 65 74 6f 70 |hile ((s| = getop|
|00003ec0| 74 28 61 72 67 63 2c 20 | 61 72 67 76 2c 20 22 6c |t(argc, |argv, "l|
|00003ed0| 3a 68 3a 73 3a 22 29 29 | 20 21 3d 20 45 4f 46 29 |:h:s:"))| != EOF)|
|00003ee0| 0a 58 09 73 77 69 74 63 | 68 28 73 29 20 7b 0a 58 |.X.switc|h(s) {.X|
|00003ef0| 09 20 20 20 20 63 61 73 | 65 20 27 68 27 3a 0a 58 |. cas|e 'h':.X|
|00003f00| 09 09 68 6f 6c 64 5f 74 | 69 6d 65 20 3d 20 36 30 |..hold_t|ime = 60|
|00003f10| 20 2a 20 61 74 6f 69 28 | 6f 70 74 61 72 67 29 3b | * atoi(|optarg);|
|00003f20| 0a 58 09 09 69 66 20 28 | 68 6f 6c 64 5f 74 69 6d |.X..if (|hold_tim|
|00003f30| 65 20 3c 3d 20 30 20 7c | 7c 20 68 6f 6c 64 5f 74 |e <= 0 ||| hold_t|
|00003f40| 69 6d 65 20 3e 20 28 32 | 34 20 2a 20 33 36 30 30 |ime > (2|4 * 3600|
|00003f50| 29 29 0a 58 09 09 20 20 | 20 20 75 73 61 67 65 28 |)).X.. | usage(|
|00003f60| 61 72 67 76 5b 30 5d 29 | 3b 09 0a 58 09 09 62 72 |argv[0])|;..X..br|
|00003f70| 65 61 6b 3b 0a 58 09 20 | 20 20 20 63 61 73 65 20 |eak;.X. | case |
|00003f80| 27 73 27 3a 0a 58 09 09 | 73 6e 20 3d 20 73 74 72 |'s':.X..|sn = str|
|00003f90| 64 75 70 28 6f 70 74 61 | 72 67 29 3b 0a 58 09 09 |dup(opta|rg);.X..|
|00003fa0| 62 72 65 61 6b 3b 0a 58 | 09 20 20 20 20 63 61 73 |break;.X|. cas|
|00003fb0| 65 20 27 6c 27 3a 0a 58 | 09 09 6c 6f 67 2b 2b 3b |e 'l':.X|..log++;|
|00003fc0| 0a 58 09 09 6c 66 6e 20 | 3d 20 73 74 72 64 75 70 |.X..lfn |= strdup|
|00003fd0| 28 6f 70 74 61 72 67 29 | 3b 0a 58 09 09 62 72 65 |(optarg)|;.X..bre|
|00003fe0| 61 6b 3b 0a 58 09 20 20 | 20 20 64 65 66 61 75 6c |ak;.X. | defaul|
|00003ff0| 74 3a 0a 58 09 09 75 73 | 61 67 65 28 61 72 67 76 |t:.X..us|age(argv|
|00004000| 5b 30 5d 29 3b 09 0a 58 | 09 09 62 72 65 61 6b 3b |[0]);..X|..break;|
|00004010| 0a 58 09 7d 0a 0a 58 20 | 20 20 20 69 66 20 28 6f |.X.}..X | if (o|
|00004020| 70 74 69 6e 64 20 21 3d | 20 61 72 67 63 29 0a 58 |ptind !=| argc).X|
|00004030| 09 75 73 61 67 65 28 61 | 72 67 76 5b 30 5d 29 3b |.usage(a|rgv[0]);|
|00004040| 0a 58 20 20 20 20 0a 58 | 20 20 20 20 69 66 20 28 |.X .X| if (|
|00004050| 6c 6f 67 29 20 7b 0a 58 | 09 6f 70 65 6e 6c 6f 67 |log) {.X|.openlog|
|00004060| 66 69 6c 65 28 29 3b 0a | 58 09 69 66 20 28 21 6c |file();.|X.if (!l|
|00004070| 6f 67 29 20 7b 0a 58 09 | 20 20 20 20 28 76 6f 69 |og) {.X.| (voi|
|00004080| 64 29 20 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |d) fprin|tf(stder|
|00004090| 72 2c 20 22 25 73 3a 20 | 55 6e 61 62 6c 65 20 74 |r, "%s: |Unable t|
|000040a0| 6f 20 6f 70 65 6e 20 6c | 6f 67 20 66 69 6c 65 20 |o open l|og file |
|000040b0| 28 25 73 29 5c 6e 22 2c | 20 0a 58 09 09 09 20 20 |(%s)\n",| .X... |
|000040c0| 20 61 72 67 76 5b 30 5d | 2c 20 6c 66 6e 29 3b 0a | argv[0]|, lfn);.|
|000040d0| 58 09 20 20 20 20 65 78 | 69 74 28 31 29 3b 0a 58 |X. ex|it(1);.X|
|000040e0| 09 7d 0a 58 20 20 20 20 | 7d 0a 0a 58 20 20 20 20 |.}.X |}..X |
|000040f0| 73 61 76 65 70 69 64 20 | 28 29 20 3b 0a 0a 58 23 |savepid |() ;..X#|
|00004100| 69 66 64 65 66 20 4c 4f | 47 5f 44 41 45 4d 4f 4e |ifdef LO|G_DAEMON|
|00004110| 0a 58 20 20 20 20 6f 70 | 65 6e 6c 6f 67 28 22 6d |.X op|enlog("m|
|00004120| 73 67 69 64 64 22 2c 20 | 4c 4f 47 5f 50 49 44 2c |sgidd", |LOG_PID,|
|00004130| 20 4c 4f 47 5f 44 41 45 | 4d 4f 4e 29 3b 0a 58 23 | LOG_DAE|MON);.X#|
|00004140| 65 6c 73 65 0a 58 20 20 | 20 20 6f 70 65 6e 6c 6f |else.X | openlo|
|00004150| 67 28 22 6d 73 67 69 64 | 64 22 2c 20 4c 4f 47 5f |g("msgid|d", LOG_|
|00004160| 50 49 44 29 3b 0a 58 23 | 65 6e 64 69 66 0a 0a 58 |PID);.X#|endif..X|
|00004170| 20 20 20 20 73 20 3d 20 | 73 6f 63 6b 65 74 28 50 | s = |socket(P|
|00004180| 46 5f 55 4e 49 58 2c 20 | 53 4f 43 4b 5f 53 54 52 |F_UNIX, |SOCK_STR|
|00004190| 45 41 4d 2c 20 30 29 3b | 0a 58 20 20 20 20 41 53 |EAM, 0);|.X AS|
|000041a0| 53 45 52 54 28 73 3e 3d | 30 2c 20 22 73 6f 63 6b |SERT(s>=|0, "sock|
|000041b0| 65 74 22 29 3b 0a 58 20 | 20 20 20 68 69 67 68 65 |et");.X | highe|
|000041c0| 73 74 5f 66 64 20 3d 20 | 73 3b 0a 0a 58 20 20 20 |st_fd = |s;..X |
|000041d0| 20 6e 2e 73 75 6e 5f 66 | 61 6d 69 6c 79 20 3d 20 | n.sun_f|amily = |
|000041e0| 41 46 5f 55 4e 49 58 3b | 0a 58 20 20 20 20 28 76 |AF_UNIX;|.X (v|
|000041f0| 6f 69 64 29 20 73 74 72 | 63 70 79 28 6e 2e 73 75 |oid) str|cpy(n.su|
|00004200| 6e 5f 70 61 74 68 2c 20 | 73 6e 29 3b 0a 0a 58 20 |n_path, |sn);..X |
|00004210| 20 20 20 28 76 6f 69 64 | 29 20 75 6e 6c 69 6e 6b | (void|) unlink|
|00004220| 28 73 6e 29 3b 0a 58 20 | 20 20 20 41 53 53 45 52 |(sn);.X | ASSER|
|00004230| 54 28 30 3c 3d 62 69 6e | 64 28 73 2c 20 26 6e 2c |T(0<=bin|d(s, &n,|
|00004240| 20 73 74 72 6c 65 6e 28 | 6e 2e 73 75 6e 5f 70 61 | strlen(|n.sun_pa|
|00004250| 74 68 29 20 2b 73 69 7a | 65 6f 66 20 6e 2e 73 75 |th) +siz|eof n.su|
|00004260| 6e 5f 66 61 6d 69 6c 79 | 29 2c 6e 2e 73 75 6e 5f |n_family|),n.sun_|
|00004270| 70 61 74 68 29 3b 0a 0a | 58 20 20 20 20 46 44 5f |path);..|X FD_|
|00004280| 5a 45 52 4f 28 26 63 6c | 69 65 6e 74 73 29 3b 0a |ZERO(&cl|ients);.|
|00004290| 58 20 20 20 20 6c 69 73 | 74 65 6e 28 73 2c 20 35 |X lis|ten(s, 5|
|000042a0| 29 3b 0a 0a 58 20 20 20 | 20 69 66 20 28 73 69 67 |);..X | if (sig|
|000042b0| 6e 61 6c 28 53 49 47 48 | 55 50 2c 20 53 49 47 5f |nal(SIGH|UP, SIG_|
|000042c0| 49 47 4e 29 20 21 3d 20 | 53 49 47 5f 49 47 4e 29 |IGN) != |SIG_IGN)|
|000042d0| 0a 58 09 73 69 67 6e 61 | 6c 28 53 49 47 48 55 50 |.X.signa|l(SIGHUP|
|000042e0| 2c 20 72 65 73 65 74 6c | 6f 67 29 3b 0a 58 20 20 |, resetl|og);.X |
|000042f0| 20 20 69 66 20 28 73 69 | 67 6e 61 6c 28 53 49 47 | if (si|gnal(SIG|
|00004300| 49 4e 54 2c 20 53 49 47 | 5f 49 47 4e 29 20 21 3d |INT, SIG|_IGN) !=|
|00004310| 20 53 49 47 5f 49 47 4e | 29 0a 58 09 73 69 67 6e | SIG_IGN|).X.sign|
|00004320| 61 6c 28 53 49 47 49 4e | 54 2c 20 62 79 65 29 3b |al(SIGIN|T, bye);|
|00004330| 0a 58 20 20 20 20 73 69 | 67 6e 61 6c 28 53 49 47 |.X si|gnal(SIG|
|00004340| 55 53 52 31 2c 20 62 79 | 65 29 3b 09 09 2f 2a 20 |USR1, by|e);../* |
|00004350| 66 6f 72 20 70 72 6f 66 | 69 6c 69 6e 67 2c 20 65 |for prof|iling, e|
|00004360| 74 63 2e 20 2a 2f 0a 58 | 20 20 20 20 73 69 67 6e |tc. */.X| sign|
|00004370| 61 6c 28 53 49 47 41 4c | 52 4d 2c 20 70 73 74 61 |al(SIGAL|RM, psta|
|00004380| 74 73 29 3b 0a 58 20 20 | 20 20 73 69 67 6e 61 6c |ts);.X | signal|
|00004390| 28 53 49 47 50 49 50 45 | 2c 20 6f 6e 70 69 70 65 |(SIGPIPE|, onpipe|
|000043a0| 29 3b 0a 58 20 20 20 20 | 61 6c 61 72 6d 28 41 4c |);.X |alarm(AL|
|000043b0| 41 52 4d 5f 54 49 4d 45 | 29 3b 0a 0a 58 20 20 20 |ARM_TIME|);..X |
|000043c0| 20 66 6f 72 20 28 3b 3b | 29 20 7b 0a 58 09 72 65 | for (;;|) {.X.re|
|000043d0| 67 69 73 74 65 72 20 69 | 6e 74 20 6e 66 6f 75 6e |gister i|nt nfoun|
|000043e0| 64 2c 20 66 64 3b 0a 58 | 09 66 64 5f 73 65 74 20 |d, fd;.X|.fd_set |
|000043f0| 72 65 61 64 66 64 73 3b | 0a 0a 58 09 69 66 20 28 |readfds;|..X.if (|
|00004400| 66 6c 61 67 73 29 20 7b | 0a 58 09 20 20 20 20 69 |flags) {|.X. i|
|00004410| 66 20 28 66 6c 61 67 73 | 20 26 20 46 4c 41 47 53 |f (flags| & FLAGS|
|00004420| 5f 46 4c 55 53 48 4c 4f | 47 29 0a 58 09 09 28 76 |_FLUSHLO|G).X..(v|
|00004430| 6f 69 64 29 20 66 66 6c | 75 73 68 28 6c 6f 67 66 |oid) ffl|ush(logf|
|00004440| 70 29 3b 0a 58 09 20 20 | 20 20 69 66 20 28 66 6c |p);.X. | if (fl|
|00004450| 61 67 73 20 26 20 46 4c | 41 47 53 5f 52 45 53 45 |ags & FL|AGS_RESE|
|00004460| 54 4c 4f 47 29 0a 58 09 | 09 6f 70 65 6e 6c 6f 67 |TLOG).X.|.openlog|
|00004470| 66 69 6c 65 28 29 3b 0a | 58 09 20 20 20 20 66 6c |file();.|X. fl|
|00004480| 61 67 73 20 3d 20 30 3b | 0a 58 09 7d 0a 58 09 72 |ags = 0;|.X.}.X.r|
|00004490| 65 61 64 66 64 73 20 3d | 20 63 6c 69 65 6e 74 73 |eadfds =| clients|
|000044a0| 3b 09 2f 2a 20 77 65 20 | 77 61 6e 74 20 74 6f 20 |;./* we |want to |
|000044b0| 73 65 6c 65 63 74 20 74 | 68 65 20 63 6c 69 65 6e |select t|he clien|
|000044c0| 74 73 2e 2e 2e 20 2a 2f | 0a 58 09 46 44 5f 53 45 |ts... */|.X.FD_SE|
|000044d0| 54 28 73 2c 20 26 72 65 | 61 64 66 64 73 29 3b 09 |T(s, &re|adfds);.|
|000044e0| 2f 2a 20 2e 2e 2e 61 6e | 64 20 74 68 65 20 6d 61 |/* ...an|d the ma|
|000044f0| 69 6e 20 73 65 72 76 65 | 72 20 73 6f 63 6b 65 74 |in serve|r socket|
|00004500| 2e 20 2a 2f 0a 58 09 6e | 66 6f 75 6e 64 20 3d 20 |. */.X.n|found = |
|00004510| 73 65 6c 65 63 74 28 68 | 69 67 68 65 73 74 5f 66 |select(h|ighest_f|
|00004520| 64 2b 31 2c 20 26 72 65 | 61 64 66 64 73 2c 20 4e |d+1, &re|adfds, N|
|00004530| 55 4c 4c 2c 20 4e 55 4c | 4c 2c 20 4e 55 4c 4c 29 |ULL, NUL|L, NULL)|
|00004540| 3b 0a 58 09 69 66 20 28 | 6e 66 6f 75 6e 64 20 3c |;.X.if (|nfound <|
|00004550| 20 30 20 26 26 20 65 72 | 72 6e 6f 20 3d 3d 20 45 | 0 && er|rno == E|
|00004560| 49 4e 54 52 29 0a 58 09 | 20 20 20 20 63 6f 6e 74 |INTR).X.| cont|
|00004570| 69 6e 75 65 3b 0a 58 09 | 41 53 53 45 52 54 28 30 |inue;.X.|ASSERT(0|
|00004580| 3c 3d 6e 66 6f 75 6e 64 | 2c 20 22 73 65 6c 65 63 |<=nfound|, "selec|
|00004590| 74 22 29 3b 0a 58 09 66 | 6f 72 20 28 66 64 20 3d |t");.X.f|or (fd =|
|000045a0| 20 30 3b 20 66 64 20 3c | 3d 20 68 69 67 68 65 73 | 0; fd <|= highes|
|000045b0| 74 5f 66 64 3b 20 66 64 | 2b 2b 29 20 7b 0a 58 09 |t_fd; fd|++) {.X.|
|000045c0| 20 20 20 20 69 66 20 28 | 46 44 5f 49 53 53 45 54 | if (|FD_ISSET|
|000045d0| 28 66 64 2c 20 26 72 65 | 61 64 66 64 73 29 29 20 |(fd, &re|adfds)) |
|000045e0| 7b 0a 58 09 09 69 66 20 | 28 66 64 20 3d 3d 20 73 |{.X..if |(fd == s|
|000045f0| 29 20 7b 0a 58 09 09 20 | 20 20 20 69 6e 74 20 66 |) {.X.. | int f|
|00004600| 72 6f 6d 6c 65 6e 20 3d | 20 73 69 7a 65 6f 66 28 |romlen =| sizeof(|
|00004610| 69 6e 29 3b 0a 0a 58 09 | 09 20 20 20 20 69 66 20 |in);..X.|. if |
|00004620| 28 28 66 64 20 3d 20 61 | 63 63 65 70 74 28 73 2c |((fd = a|ccept(s,|
|00004630| 20 26 69 6e 2c 20 26 66 | 72 6f 6d 6c 65 6e 29 29 | &in, &f|romlen))|
|00004640| 20 3d 3d 20 2d 31 29 20 | 7b 0a 58 09 09 09 73 79 | == -1) |{.X...sy|
|00004650| 73 6c 6f 67 28 4c 4f 47 | 5f 45 52 52 2c 20 22 41 |slog(LOG|_ERR, "A|
|00004660| 63 63 65 70 74 20 66 61 | 69 6c 65 64 3a 20 25 6d |ccept fa|iled: %m|
|00004670| 22 29 3b 0a 58 09 09 20 | 20 20 20 7d 20 65 6c 73 |");.X.. | } els|
|00004680| 65 20 7b 0a 58 09 09 09 | 46 44 5f 53 45 54 28 66 |e {.X...|FD_SET(f|
|00004690| 64 2c 20 26 63 6c 69 65 | 6e 74 73 29 3b 0a 58 09 |d, &clie|nts);.X.|
|000046a0| 09 09 69 66 20 28 66 64 | 20 3e 20 68 69 67 68 65 |..if (fd| > highe|
|000046b0| 73 74 5f 66 64 29 0a 58 | 09 09 09 20 20 20 20 68 |st_fd).X|... h|
|000046c0| 69 67 68 65 73 74 5f 66 | 64 20 3d 20 66 64 3b 0a |ighest_f|d = fd;.|
|000046d0| 58 09 09 09 73 74 61 74 | 73 2e 63 6f 6e 6e 65 63 |X...stat|s.connec|
|000046e0| 74 73 2b 2b 3b 0a 58 09 | 09 09 73 74 61 74 73 2e |ts++;.X.|..stats.|
|000046f0| 63 6f 6e 6e 65 63 74 65 | 64 2b 2b 3b 0a 58 09 09 |connecte|d++;.X..|
|00004700| 20 20 20 20 7d 0a 58 09 | 09 7d 20 65 6c 73 65 20 | }.X.|.} else |
|00004710| 69 66 20 28 46 44 5f 49 | 53 53 45 54 28 66 64 2c |if (FD_I|SSET(fd,|
|00004720| 20 26 63 6c 69 65 6e 74 | 73 29 29 20 7b 0a 58 09 | &client|s)) {.X.|
|00004730| 09 20 20 20 20 69 66 20 | 28 2d 31 20 3d 3d 20 74 |. if |(-1 == t|
|00004740| 72 61 6e 73 61 63 74 69 | 6f 6e 28 66 64 29 29 20 |ransacti|on(fd)) |
|00004750| 7b 0a 58 09 09 09 63 6c | 6f 73 65 28 66 64 29 3b |{.X...cl|ose(fd);|
|00004760| 0a 58 09 09 09 46 44 5f | 43 4c 52 28 66 64 2c 20 |.X...FD_|CLR(fd, |
|00004770| 26 63 6c 69 65 6e 74 73 | 29 3b 0a 58 09 09 09 73 |&clients|);.X...s|
|00004780| 74 61 74 73 2e 63 6f 6e | 6e 65 63 74 65 64 2d 2d |tats.con|nected--|
|00004790| 3b 0a 58 09 09 09 73 74 | 61 74 73 2e 64 72 6f 70 |;.X...st|ats.drop|
|000047a0| 73 2b 2b 3b 0a 58 09 09 | 09 69 66 20 28 68 6f 73 |s++;.X..|.if (hos|
|000047b0| 74 73 5b 66 64 5d 29 20 | 7b 0a 58 09 09 09 20 20 |ts[fd]) |{.X... |
|000047c0| 20 20 69 66 20 28 6c 6f | 67 29 20 7b 0a 58 09 09 | if (lo|g) {.X..|
|000047d0| 09 09 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 |..(void)| fprintf|
|000047e0| 28 6c 6f 67 66 70 2c 20 | 22 25 73 20 44 69 73 63 |(logfp, |"%s Disc|
|000047f0| 6f 6e 6e 65 63 74 20 25 | 73 5c 6e 22 2c 20 0a 58 |onnect %|s\n", .X|
|00004800| 09 09 09 09 20 20 20 20 | 70 74 69 6d 65 28 74 69 |.... |ptime(ti|
|00004810| 6d 65 28 28 74 69 6d 65 | 5f 74 20 2a 29 30 29 29 |me((time|_t *)0))|
|00004820| 2c 20 68 6f 73 74 73 5b | 66 64 5d 29 3b 0a 58 09 |, hosts[|fd]);.X.|
|00004830| 09 09 20 20 20 20 7d 0a | 58 09 09 09 20 20 20 20 |.. }.|X... |
|00004840| 64 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |dprintf(|stderr, |
|00004850| 22 44 69 73 63 6f 6e 6e | 65 63 74 28 25 64 2f 25 |"Disconn|ect(%d/%|
|00004860| 73 29 5c 6e 22 2c 0a 58 | 09 09 09 09 66 64 2c 20 |s)\n",.X|....fd, |
|00004870| 68 6f 73 74 73 5b 66 64 | 5d 29 3b 0a 58 09 09 09 |hosts[fd|]);.X...|
|00004880| 20 20 20 20 66 72 65 65 | 28 68 6f 73 74 73 5b 66 | free|(hosts[f|
|00004890| 64 5d 29 3b 0a 58 09 09 | 09 20 20 20 20 68 6f 73 |d]);.X..|. hos|
|000048a0| 74 73 5b 66 64 5d 20 3d | 20 4e 55 4c 4c 3b 0a 58 |ts[fd] =| NULL;.X|
|000048b0| 09 09 20 20 20 20 09 7d | 0a 58 09 09 20 20 20 20 |.. .}|.X.. |
|000048c0| 7d 0a 58 09 09 7d 20 65 | 6c 73 65 20 7b 0a 58 09 |}.X..} e|lse {.X.|
|000048d0| 09 20 20 20 20 64 70 72 | 69 6e 74 66 28 73 74 64 |. dpr|intf(std|
|000048e0| 65 72 72 2c 20 22 42 61 | 64 20 66 64 20 25 64 20 |err, "Ba|d fd %d |
|000048f0| 66 72 6f 6d 20 73 65 6c | 65 63 74 5c 6e 22 2c 20 |from sel|ect\n", |
|00004900| 66 64 29 3b 0a 58 09 09 | 7d 0a 58 09 20 20 20 20 |fd);.X..|}.X. |
|00004910| 7d 0a 58 09 7d 0a 58 20 | 20 20 20 7d 0a 58 7d 0a |}.X.}.X | }.X}.|
|00004920| 0a 69 6e 74 20 73 69 67 | 70 69 70 65 64 3b 0a 0a |.int sig|piped;..|
|00004930| 73 74 61 74 69 63 20 69 | 6e 74 0a 72 65 70 6c 79 |static i|nt.reply|
|00004940| 28 66 64 2c 20 61 6e 73 | 29 0a 58 20 20 20 20 72 |(fd, ans|).X r|
|00004950| 65 67 69 73 74 65 72 20 | 69 6e 74 20 66 64 2c 20 |egister |int fd, |
|00004960| 61 6e 73 3b 0a 58 7b 0a | 58 20 20 20 20 69 6e 74 |ans;.X{.|X int|
|00004970| 20 73 74 61 74 75 73 3b | 0a 0a 58 20 20 20 20 73 | status;|..X s|
|00004980| 69 67 70 69 70 65 64 20 | 3d 20 30 3b 0a 58 20 20 |igpiped |= 0;.X |
|00004990| 20 20 77 68 69 6c 65 20 | 28 28 73 74 61 74 75 73 | while |((status|
|000049a0| 20 3d 20 77 72 69 74 65 | 28 66 64 2c 20 28 61 6e | = write|(fd, (an|
|000049b0| 73 20 3f 20 22 5c 30 30 | 31 22 20 3a 20 22 5c 30 |s ? "\00|1" : "\0|
|000049c0| 30 30 22 29 2c 20 31 29 | 29 20 3c 20 30 0a 58 09 |00"), 1)|) < 0.X.|
|000049d0| 26 26 20 65 72 72 6e 6f | 20 3d 3d 20 45 49 4e 54 |&& errno| == EINT|
|000049e0| 52 20 26 26 20 21 73 69 | 67 70 69 70 65 64 29 0a |R && !si|gpiped).|
|000049f0| 58 09 3b 0a 58 20 20 20 | 20 69 66 20 28 73 74 61 |X.;.X | if (sta|
|00004a00| 74 75 73 20 3c 20 30 29 | 20 7b 0a 58 09 69 66 20 |tus < 0)| {.X.if |
|00004a10| 28 6c 6f 67 29 20 7b 0a | 58 09 20 20 20 20 72 65 |(log) {.|X. re|
|00004a20| 67 69 73 74 65 72 20 74 | 69 6d 65 5f 74 20 6e 6f |gister t|ime_t no|
|00004a30| 77 20 3d 20 74 69 6d 65 | 28 28 6c 6f 6e 67 20 2a |w = time|((long *|
|00004a40| 29 30 29 3b 0a 0a 58 09 | 20 20 20 20 66 70 72 69 |)0);..X.| fpri|
|00004a50| 6e 74 66 28 6c 6f 67 66 | 70 2c 20 22 25 73 20 77 |ntf(logf|p, "%s w|
|00004a60| 72 69 74 65 20 66 61 69 | 6c 65 64 20 28 66 64 20 |rite fai|led (fd |
|00004a70| 25 64 29 5c 6e 22 2c 20 | 70 74 69 6d 65 28 6e 6f |%d)\n", |ptime(no|
|00004a80| 77 29 2c 20 66 64 29 3b | 0a 58 09 7d 0a 58 09 73 |w), fd);|.X.}.X.s|
|00004a90| 79 73 6c 6f 67 28 4c 4f | 47 5f 45 52 52 2c 20 22 |yslog(LO|G_ERR, "|
|00004aa0| 77 72 69 74 65 20 66 61 | 69 6c 65 64 2c 20 63 6c |write fa|iled, cl|
|00004ab0| 6f 73 69 6e 67 20 63 6f | 6e 6e 65 63 74 69 6f 6e |osing co|nnection|
|00004ac0| 3a 20 25 6d 22 29 3b 0a | 58 09 72 65 74 75 72 6e |: %m");.|X.return|
|00004ad0| 20 2d 31 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 | -1;.X | }.X |
|00004ae0| 20 72 65 74 75 72 6e 20 | 28 30 29 3b 0a 58 7d 0a | return |(0);.X}.|
|00004af0| 0a 73 74 61 74 69 63 20 | 76 6f 69 64 0a 63 61 6e |.static |void.can|
|00004b00| 63 65 6c 28 66 64 2c 20 | 62 75 66 70 2c 20 6e 6f |cel(fd, |bufp, no|
|00004b10| 77 29 0a 58 20 20 20 20 | 72 65 67 69 73 74 65 72 |w).X |register|
|00004b20| 20 69 6e 74 20 66 64 3b | 0a 58 20 20 20 20 72 65 | int fd;|.X re|
|00004b30| 67 69 73 74 65 72 20 63 | 68 61 72 20 2a 62 75 66 |gister c|har *buf|
|00004b40| 70 3b 0a 58 20 20 20 20 | 74 69 6d 65 5f 74 20 6e |p;.X |time_t n|
|00004b50| 6f 77 3b 0a 58 7b 0a 58 | 20 20 20 20 72 65 67 69 |ow;.X{.X| regi|
|00004b60| 73 74 65 72 20 73 74 72 | 75 63 74 20 65 6c 20 2a |ster str|uct el *|
|00004b70| 69 2c 20 2a 70 3b 0a 58 | 20 20 20 20 72 65 67 69 |i, *p;.X| regi|
|00004b80| 73 74 65 72 20 69 6e 74 | 20 66 6f 75 6e 64 20 3d |ster int| found =|
|00004b90| 20 30 2c 20 68 61 73 68 | 20 3d 20 6d 6b 68 61 73 | 0, hash| = mkhas|
|00004ba0| 68 28 62 75 66 70 29 20 | 25 20 48 41 53 48 53 49 |h(bufp) |% HASHSI|
|00004bb0| 5a 45 3b 0a 0a 58 20 20 | 20 20 66 6f 72 20 28 69 |ZE;..X | for (i|
|00004bc0| 20 3d 20 69 64 73 5b 68 | 61 73 68 5d 2c 20 70 20 | = ids[h|ash], p |
|00004bd0| 3d 20 4e 55 4c 4c 3b 20 | 69 3b 20 70 20 3d 20 69 |= NULL; |i; p = i|
|00004be0| 2c 20 69 20 3d 20 69 2d | 3e 6e 65 78 74 29 0a 58 |, i = i-|>next).X|
|00004bf0| 09 69 66 20 28 53 54 52 | 45 51 28 69 2d 3e 69 64 |.if (STR|EQ(i->id|
|00004c00| 2c 20 62 75 66 70 29 29 | 20 7b 0a 58 09 20 20 20 |, bufp))| {.X. |
|00004c10| 20 69 66 20 28 70 20 3d | 3d 20 4e 55 4c 4c 29 0a | if (p =|= NULL).|
|00004c20| 58 09 09 69 64 73 5b 68 | 61 73 68 5d 20 3d 20 69 |X..ids[h|ash] = i|
|00004c30| 2d 3e 6e 65 78 74 3b 0a | 58 09 20 20 20 20 65 6c |->next;.|X. el|
|00004c40| 73 65 0a 58 09 09 70 2d | 3e 6e 65 78 74 20 3d 20 |se.X..p-|>next = |
|00004c50| 69 2d 3e 6e 65 78 74 3b | 0a 58 09 20 20 20 20 69 |i->next;|.X. i|
|00004c60| 66 20 28 6c 6f 67 29 0a | 58 09 09 28 76 6f 69 64 |f (log).|X..(void|
|00004c70| 29 20 66 70 72 69 6e 74 | 66 28 6c 6f 67 66 70 2c |) fprint|f(logfp,|
|00004c80| 20 22 25 73 20 43 61 6e | 63 65 6c 20 25 73 20 25 | "%s Can|cel %s %|
|00004c90| 73 5c 6e 22 2c 20 0a 58 | 09 09 09 20 20 20 20 20 |s\n", .X|... |
|00004ca0| 20 20 70 74 69 6d 65 28 | 6e 6f 77 29 2c 20 68 6f | ptime(|now), ho|
|00004cb0| 73 74 73 5b 66 64 5d 20 | 3f 20 68 6f 73 74 73 5b |sts[fd] |? hosts[|
|00004cc0| 66 64 5d 20 3a 20 22 22 | 2c 20 69 2d 3e 69 64 29 |fd] : ""|, i->id)|
|00004cd0| 3b 0a 58 09 20 20 20 20 | 66 72 65 65 28 69 29 3b |;.X. |free(i);|
|00004ce0| 0a 58 09 20 20 20 20 66 | 6f 75 6e 64 2b 2b 3b 0a |.X. f|ound++;.|
|00004cf0| 58 09 20 20 20 20 73 74 | 61 74 73 2e 63 61 6e 63 |X. st|ats.canc|
|00004d00| 65 6c 2b 2b 3b 0a 58 09 | 20 20 20 20 64 70 72 69 |el++;.X.| dpri|
|00004d10| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 43 61 6e |ntf(stde|rr, "Can|
|00004d20| 63 65 6c 28 25 64 2f 25 | 73 29 3a 20 60 25 73 27 |cel(%d/%|s): `%s'|
|00004d30| 5c 6e 22 2c 20 66 64 2c | 20 68 6f 73 74 73 5b 66 |\n", fd,| hosts[f|
|00004d40| 64 5d 2c 20 62 75 66 70 | 29 3b 0a 58 09 20 20 20 |d], bufp|);.X. |
|00004d50| 20 62 72 65 61 6b 3b 0a | 58 09 7d 0a 58 20 20 20 | break;.|X.}.X |
|00004d60| 20 69 66 20 28 21 66 6f | 75 6e 64 29 20 7b 0a 58 | if (!fo|und) {.X|
|00004d70| 09 64 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.dprintf|(stderr,|
|00004d80| 20 22 42 61 64 2d 63 61 | 6e 63 65 6c 28 25 64 2f | "Bad-ca|ncel(%d/|
|00004d90| 25 73 29 3a 20 60 25 73 | 27 5c 6e 22 2c 20 66 64 |%s): `%s|'\n", fd|
|00004da0| 2c 20 68 6f 73 74 73 5b | 66 64 5d 2c 20 62 75 66 |, hosts[|fd], buf|
|00004db0| 70 29 3b 0a 58 09 73 79 | 73 6c 6f 67 28 4c 4f 47 |p);.X.sy|slog(LOG|
|00004dc0| 5f 45 52 52 2c 20 22 43 | 61 6e 63 65 6c 2c 20 25 |_ERR, "C|ancel, %|
|00004dd0| 73 20 6e 6f 74 20 66 6f | 75 6e 64 22 2c 20 62 75 |s not fo|und", bu|
|00004de0| 66 70 29 3b 0a 58 09 69 | 66 20 28 6c 6f 67 29 0a |fp);.X.i|f (log).|
|00004df0| 58 09 20 20 20 20 28 76 | 6f 69 64 29 20 66 70 72 |X. (v|oid) fpr|
|00004e00| 69 6e 74 66 28 6c 6f 67 | 66 70 2c 20 22 25 73 20 |intf(log|fp, "%s |
|00004e10| 45 72 72 6f 72 20 63 61 | 6e 63 65 6c 20 25 73 20 |Error ca|ncel %s |
|00004e20| 25 73 5c 6e 22 2c 20 0a | 58 09 09 09 20 20 20 70 |%s\n", .|X... p|
|00004e30| 74 69 6d 65 28 6e 6f 77 | 29 2c 20 68 6f 73 74 73 |time(now|), hosts|
|00004e40| 5b 66 64 5d 20 3f 20 68 | 6f 73 74 73 5b 66 64 5d |[fd] ? h|osts[fd]|
|00004e50| 20 3a 20 22 22 2c 20 69 | 2d 3e 69 64 29 3b 0a 58 | : "", i|->id);.X|
|00004e60| 20 20 20 20 7d 0a 58 7d | 0a 0a 73 74 61 74 69 63 | }.X}|..static|
|00004e70| 20 76 6f 69 64 0a 61 64 | 64 28 66 64 2c 20 62 75 | void.ad|d(fd, bu|
|00004e80| 66 70 2c 20 6e 2c 20 6e | 6f 77 29 0a 58 20 20 20 |fp, n, n|ow).X |
|00004e90| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 66 64 | registe|r int fd|
|00004ea0| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00004eb0| 63 68 61 72 20 2a 62 75 | 66 70 3b 0a 58 20 20 20 |char *bu|fp;.X |
|00004ec0| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 6e 3b | registe|r int n;|
|00004ed0| 0a 58 20 20 20 20 74 69 | 6d 65 5f 74 20 6e 6f 77 |.X ti|me_t now|
|00004ee0| 3b 0a 58 7b 0a 58 20 20 | 20 20 72 65 67 69 73 74 |;.X{.X | regist|
|00004ef0| 65 72 20 73 74 72 75 63 | 74 20 65 6c 20 2a 69 3b |er struc|t el *i;|
|00004f00| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 69 |.X re|gister i|
|00004f10| 6e 74 20 68 61 73 68 20 | 3d 20 6d 6b 68 61 73 68 |nt hash |= mkhash|
|00004f20| 28 62 75 66 70 29 20 25 | 20 48 41 53 48 53 49 5a |(bufp) %| HASHSIZ|
|00004f30| 45 3b 0a 0a 58 20 20 20 | 20 2f 2a 20 74 68 69 73 |E;..X | /* this|
|00004f40| 20 6d 61 6c 6c 6f 63 20 | 69 6e 63 6c 75 64 65 73 | malloc |includes|
|00004f50| 20 74 68 65 20 69 64 5b | 31 5d 20 61 72 72 61 79 | the id[|1] array|
|00004f60| 2c 20 77 68 69 63 68 20 | 6d 65 61 6e 73 0a 58 20 |, which |means.X |
|00004f70| 20 20 20 20 2a 20 74 68 | 61 74 20 74 68 65 72 65 | * th|at there|
|00004f80| 27 73 20 61 6c 72 65 61 | 64 79 20 72 6f 6f 6d 20 |'s alrea|dy room |
|00004f90| 66 6f 72 20 73 74 72 63 | 70 79 27 73 20 6e 75 6c |for strc|py's nul|
|00004fa0| 6c 0a 58 20 20 20 20 20 | 2a 2f 0a 58 20 20 20 20 |l.X |*/.X |
|00004fb0| 69 20 3d 20 28 73 74 72 | 75 63 74 20 65 6c 20 2a |i = (str|uct el *|
|00004fc0| 29 20 6d 61 6c 6c 6f 63 | 28 73 69 7a 65 6f 66 28 |) malloc|(sizeof(|
|00004fd0| 73 74 72 75 63 74 20 65 | 6c 29 20 2b 20 6e 29 3b |struct e|l) + n);|
|00004fe0| 0a 58 20 20 20 20 69 66 | 20 28 69 20 3d 3d 20 4e |.X if| (i == N|
|00004ff0| 55 4c 4c 29 0a 58 09 72 | 65 74 75 72 6e 3b 0a 58 |ULL).X.r|eturn;.X|
|00005000| 20 20 20 20 69 2d 3e 61 | 67 65 20 3d 20 6e 6f 77 | i->a|ge = now|
|00005010| 3b 0a 58 20 20 20 20 28 | 76 6f 69 64 29 20 73 74 |;.X (|void) st|
|00005020| 72 63 70 79 28 69 2d 3e | 69 64 2c 20 62 75 66 70 |rcpy(i->|id, bufp|
|00005030| 29 3b 0a 58 20 20 20 20 | 69 66 20 28 6c 6f 67 29 |);.X |if (log)|
|00005040| 20 7b 0a 58 09 69 2d 3e | 72 65 66 63 6e 74 20 3d | {.X.i->|refcnt =|
|00005050| 20 31 3b 0a 58 09 28 76 | 6f 69 64 29 20 66 70 72 | 1;.X.(v|oid) fpr|
|00005060| 69 6e 74 66 28 6c 6f 67 | 66 70 2c 20 22 25 73 20 |intf(log|fp, "%s |
|00005070| 41 64 64 20 25 73 20 25 | 73 5c 6e 22 2c 20 70 74 |Add %s %|s\n", pt|
|00005080| 69 6d 65 28 6e 6f 77 29 | 2c 0a 58 09 09 09 09 68 |ime(now)|,.X....h|
|00005090| 6f 73 74 73 5b 66 64 5d | 20 3f 20 68 6f 73 74 73 |osts[fd]| ? hosts|
|000050a0| 5b 66 64 5d 20 3a 20 22 | 22 2c 20 62 75 66 70 29 |[fd] : "|", bufp)|
|000050b0| 3b 0a 58 20 20 20 20 7d | 0a 58 20 20 20 20 69 2d |;.X }|.X i-|
|000050c0| 3e 6e 65 78 74 20 3d 20 | 69 64 73 5b 68 61 73 68 |>next = |ids[hash|
|000050d0| 5d 3b 0a 58 20 20 20 20 | 69 64 73 5b 68 61 73 68 |];.X |ids[hash|
|000050e0| 5d 20 3d 20 69 3b 0a 58 | 20 20 20 20 73 74 61 74 |] = i;.X| stat|
|000050f0| 73 2e 6e 65 77 2b 2b 3b | 0a 58 20 20 20 20 64 70 |s.new++;|.X dp|
|00005100| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 41 |rintf(st|derr, "A|
|00005110| 64 64 28 25 64 2f 25 73 | 29 3a 20 60 25 73 27 5c |dd(%d/%s|): `%s'\|
|00005120| 6e 22 2c 20 66 64 2c 20 | 68 6f 73 74 73 5b 66 64 |n", fd, |hosts[fd|
|00005130| 5d 2c 20 62 75 66 70 29 | 3b 0a 58 7d 0a 0a 73 74 |], bufp)|;.X}..st|
|00005140| 61 74 69 63 20 69 6e 74 | 0a 73 65 61 72 63 68 28 |atic int|.search(|
|00005150| 66 64 2c 20 62 75 66 70 | 2c 20 6e 6f 77 29 0a 58 |fd, bufp|, now).X|
|00005160| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 | regi|ster int|
|00005170| 20 66 64 3b 0a 58 20 20 | 20 20 63 68 61 72 20 2a | fd;.X | char *|
|00005180| 62 75 66 70 3b 09 09 09 | 2f 2a 20 6e 6f 20 6c 65 |bufp;...|/* no le|
|00005190| 61 64 69 6e 67 20 27 3c | 27 20 2a 2f 0a 58 20 20 |ading '<|' */.X |
|000051a0| 20 20 74 69 6d 65 5f 74 | 20 6e 6f 77 3b 0a 58 7b | time_t| now;.X{|
|000051b0| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 73 |.X re|gister s|
|000051c0| 74 72 75 63 74 20 65 6c | 20 2a 69 2c 20 2a 70 3b |truct el| *i, *p;|
|000051d0| 0a 58 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |.X re|gister c|
|000051e0| 68 61 72 20 62 75 66 63 | 20 3d 20 2a 62 75 66 70 |har bufc| = *bufp|
|000051f0| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00005200| 69 6e 74 20 68 61 73 68 | 20 3d 20 6d 6b 68 61 73 |int hash| = mkhas|
|00005210| 68 28 62 75 66 70 29 20 | 25 20 48 41 53 48 53 49 |h(bufp) |% HASHSI|
|00005220| 5a 45 3b 0a 58 20 20 20 | 20 69 6e 74 20 66 6f 75 |ZE;.X | int fou|
|00005230| 6e 64 20 3d 20 30 2c 20 | 73 65 61 72 63 68 65 64 |nd = 0, |searched|
|00005240| 20 3d 20 30 3b 0a 0a 58 | 20 20 20 20 2f 2a 20 0a | = 0;..X| /* .|
|00005250| 58 20 20 20 20 20 2a 20 | 73 65 61 72 63 68 20 74 |X * |search t|
|00005260| 68 65 20 61 70 70 72 6f | 70 72 69 61 74 65 20 6c |he appro|priate l|
|00005270| 69 73 74 2e 0a 58 20 20 | 20 20 20 2a 2f 0a 58 20 |ist..X | */.X |
|00005280| 20 20 20 66 6f 72 20 28 | 69 20 3d 20 69 64 73 5b | for (|i = ids[|
|00005290| 68 61 73 68 5d 2c 20 70 | 20 3d 20 4e 55 4c 4c 3b |hash], p| = NULL;|
|000052a0| 20 69 3b 20 70 20 3d 20 | 69 2c 20 69 20 3d 20 69 | i; p = |i, i = i|
|000052b0| 2d 3e 6e 65 78 74 29 20 | 7b 0a 58 09 2f 2a 0a 58 |->next) |{.X./*.X|
|000052c0| 09 20 2a 20 69 66 20 74 | 6f 6f 20 6f 6c 64 2c 20 |. * if t|oo old, |
|000052d0| 65 76 65 72 79 74 68 69 | 6e 67 20 66 72 6f 6d 20 |everythi|ng from |
|000052e0| 68 65 72 65 20 74 6f 20 | 74 68 65 20 65 6e 64 0a |here to |the end.|
|000052f0| 58 09 20 2a 20 63 61 6e | 20 62 65 20 6e 75 6b 65 |X. * can| be nuke|
|00005300| 64 20 28 77 65 20 61 6c | 77 61 79 73 20 61 64 64 |d (we al|ways add|
|00005310| 20 61 74 20 74 68 65 20 | 74 6f 70 29 2e 0a 58 09 | at the |top)..X.|
|00005320| 20 2a 2f 0a 58 09 69 66 | 20 28 28 6e 6f 77 20 2d | */.X.if| ((now -|
|00005330| 20 69 2d 3e 61 67 65 29 | 20 3e 20 68 6f 6c 64 5f | i->age)| > hold_|
|00005340| 74 69 6d 65 29 20 7b 0a | 58 09 20 20 20 20 77 68 |time) {.|X. wh|
|00005350| 69 6c 65 20 28 69 29 20 | 7b 0a 58 09 09 72 65 67 |ile (i) |{.X..reg|
|00005360| 69 73 74 65 72 20 73 74 | 72 75 63 74 20 65 6c 20 |ister st|ruct el |
|00005370| 2a 6e 20 3d 20 69 2d 3e | 6e 65 78 74 3b 0a 0a 58 |*n = i->|next;..X|
|00005380| 09 09 69 66 20 28 70 29 | 0a 58 09 09 20 20 20 20 |..if (p)|.X.. |
|00005390| 70 2d 3e 6e 65 78 74 20 | 3d 20 6e 3b 0a 58 09 09 |p->next |= n;.X..|
|000053a0| 65 6c 73 65 0a 58 09 09 | 20 20 20 20 69 64 73 5b |else.X..| ids[|
|000053b0| 68 61 73 68 5d 20 3d 20 | 6e 3b 0a 58 09 09 66 72 |hash] = |n;.X..fr|
|000053c0| 65 65 28 28 63 68 61 72 | 20 2a 29 69 29 3b 0a 58 |ee((char| *)i);.X|
|000053d0| 09 09 69 20 3d 20 6e 3b | 0a 58 09 09 73 74 61 74 |..i = n;|.X..stat|
|000053e0| 73 2e 66 72 65 65 64 2b | 2b 3b 0a 58 09 20 20 20 |s.freed+|+;.X. |
|000053f0| 20 7d 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a | }.X. | break;.|
|00005400| 58 09 7d 0a 0a 58 09 73 | 65 61 72 63 68 65 64 2b |X.}..X.s|earched+|
|00005410| 2b 3b 0a 0a 58 09 69 66 | 20 28 53 54 52 45 51 28 |+;..X.if| (STREQ(|
|00005420| 69 2d 3e 69 64 2c 20 62 | 75 66 70 29 29 20 7b 0a |i->id, b|ufp)) {.|
|00005430| 58 09 20 20 20 20 69 66 | 20 28 6c 6f 67 29 20 7b |X. if| (log) {|
|00005440| 0a 58 09 09 69 2d 3e 72 | 65 66 63 6e 74 2b 2b 3b |.X..i->r|efcnt++;|
|00005450| 0a 58 09 09 28 76 6f 69 | 64 29 20 66 70 72 69 6e |.X..(voi|d) fprin|
|00005460| 74 66 28 6c 6f 67 66 70 | 2c 20 22 25 73 20 4c 6f |tf(logfp|, "%s Lo|
|00005470| 73 65 20 25 73 20 25 64 | 20 25 6c 64 20 25 73 5c |se %s %d| %ld %s\|
|00005480| 6e 22 2c 20 0a 58 09 09 | 09 20 20 20 70 74 69 6d |n", .X..|. ptim|
|00005490| 65 28 6e 6f 77 29 2c 20 | 68 6f 73 74 73 5b 66 64 |e(now), |hosts[fd|
|000054a0| 5d 20 3f 20 68 6f 73 74 | 73 5b 66 64 5d 20 3a 20 |] ? host|s[fd] : |
|000054b0| 22 22 2c 20 69 2d 3e 72 | 65 66 63 6e 74 2c 20 0a |"", i->r|efcnt, .|
|000054c0| 58 09 09 09 20 20 20 20 | 20 20 20 28 6e 6f 77 20 |X... | (now |
|000054d0| 2d 20 69 2d 3e 61 67 65 | 29 2c 20 69 2d 3e 69 64 |- i->age|), i->id|
|000054e0| 29 3b 0a 58 09 20 20 20 | 20 7d 0a 58 09 20 20 20 |);.X. | }.X. |
|000054f0| 20 66 6f 75 6e 64 2b 2b | 3b 0a 58 09 20 20 20 20 | found++|;.X. |
|00005500| 73 74 61 74 73 2e 64 75 | 70 2b 2b 3b 0a 58 09 20 |stats.du|p++;.X. |
|00005510| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 7d 0a 58 20 | break|;.X.}.X |
|00005520| 20 20 20 7d 0a 0a 58 20 | 20 20 20 64 70 72 69 6e | }..X | dprin|
|00005530| 74 66 28 73 74 64 65 72 | 72 2c 20 22 53 65 61 72 |tf(stder|r, "Sear|
|00005540| 63 68 28 25 64 2f 25 73 | 29 3a 20 25 73 28 25 64 |ch(%d/%s|): %s(%d|
|00005550| 29 20 60 25 73 27 5c 6e | 22 2c 0a 58 09 20 20 20 |) `%s'\n|",.X. |
|00005560| 20 66 64 2c 20 68 6f 73 | 74 73 5b 66 64 5d 2c 20 | fd, hos|ts[fd], |
|00005570| 28 66 6f 75 6e 64 20 3f | 20 22 64 75 70 22 20 3a |(found ?| "dup" :|
|00005580| 20 22 6e 65 77 22 29 2c | 20 73 65 61 72 63 68 65 | "new"),| searche|
|00005590| 64 2c 20 62 75 66 70 29 | 3b 0a 58 20 20 20 20 72 |d, bufp)|;.X r|
|000055a0| 65 74 75 72 6e 20 28 66 | 6f 75 6e 64 29 3b 0a 58 |eturn (f|ound);.X|
|000055b0| 7d 0a 0a 58 2f 2a 20 72 | 65 74 75 72 6e 73 3a 20 |}..X/* r|eturns: |
|000055c0| 2d 31 20 3d 3d 20 63 6c | 69 65 6e 74 20 69 73 20 |-1 == cl|ient is |
|000055d0| 67 6f 6e 65 2c 20 63 6c | 6f 73 65 20 74 68 69 73 |gone, cl|ose this|
|000055e0| 20 66 64 20 70 6c 65 61 | 73 65 0a 58 20 2a 20 20 | fd plea|se.X * |
|000055f0| 20 20 20 20 20 20 20 20 | 20 30 20 3d 3d 20 73 75 | | 0 == su|
|00005600| 63 63 65 73 73 0a 58 20 | 2a 2f 0a 73 74 61 74 69 |ccess.X |*/.stati|
|00005610| 63 20 69 6e 74 0a 74 72 | 61 6e 73 61 63 74 69 6f |c int.tr|ansactio|
|00005620| 6e 28 66 64 29 0a 58 20 | 20 20 20 72 65 67 69 73 |n(fd).X | regis|
|00005630| 74 65 72 20 66 64 3b 0a | 58 7b 0a 58 20 20 20 20 |ter fd;.|X{.X |
|00005640| 63 68 61 72 20 62 75 66 | 5b 31 30 32 33 5d 3b 0a |char buf|[1023];.|
|00005650| 58 20 20 20 20 72 65 67 | 69 73 74 65 72 20 69 6e |X reg|ister in|
|00005660| 74 20 6e 3b 0a 58 20 20 | 20 20 72 65 67 69 73 74 |t n;.X | regist|
|00005670| 65 72 20 63 68 61 72 20 | 2a 62 75 66 70 2c 20 2a |er char |*bufp, *|
|00005680| 63 6d 64 70 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |cmdp;.X | regis|
|00005690| 74 65 72 20 74 69 6d 65 | 5f 74 20 6e 6f 77 20 3d |ter time|_t now =|
|000056a0| 20 74 69 6d 65 28 28 6c | 6f 6e 67 20 2a 29 30 29 | time((l|ong *)0)|
|000056b0| 3b 0a 0a 58 20 20 20 20 | 2f 2a 20 72 65 61 64 20 |;..X |/* read |
|000056c0| 74 68 65 20 72 65 71 75 | 65 73 74 2e 20 20 7a 65 |the requ|est. ze|
|000056d0| 72 6f 2d 6c 65 6e 67 74 | 68 20 72 65 61 64 20 6d |ro-lengt|h read m|
|000056e0| 65 61 6e 73 20 63 6f 6e | 6e 65 63 74 69 6f 6e 20 |eans con|nection |
|000056f0| 69 73 20 67 6f 6e 65 2e | 0a 58 20 20 20 20 20 2a |is gone.|.X *|
|00005700| 2f 0a 58 20 20 20 20 64 | 6f 20 7b 0a 58 09 6e 20 |/.X d|o {.X.n |
|00005710| 3d 20 72 65 61 64 28 66 | 64 2c 20 62 75 66 2c 20 |= read(f|d, buf, |
|00005720| 73 69 7a 65 6f 66 28 62 | 75 66 29 29 3b 0a 58 09 |sizeof(b|uf));.X.|
|00005730| 69 66 20 28 6e 20 3d 3d | 20 30 29 0a 58 09 20 20 |if (n ==| 0).X. |
|00005740| 20 20 72 65 74 75 72 6e | 20 2d 31 3b 0a 58 20 20 | return| -1;.X |
|00005750| 20 20 7d 20 77 68 69 6c | 65 20 28 6e 20 3c 20 30 | } whil|e (n < 0|
|00005760| 20 26 26 20 65 72 72 6e | 6f 20 3d 3d 20 45 49 4e | && errn|o == EIN|
|00005770| 54 52 29 3b 0a 58 20 20 | 20 20 41 53 53 45 52 54 |TR);.X | ASSERT|
|00005780| 28 6e 3e 30 2c 20 22 72 | 65 61 64 22 29 3b 0a 0a |(n>0, "r|ead");..|
|00005790| 58 20 20 20 20 69 66 20 | 28 68 6f 73 74 73 5b 66 |X if |(hosts[f|
|000057a0| 64 5d 29 20 7b 0a 58 09 | 64 70 72 69 6e 74 66 28 |d]) {.X.|dprintf(|
|000057b0| 73 74 64 65 72 72 2c 20 | 22 50 61 72 73 65 28 25 |stderr, |"Parse(%|
|000057c0| 64 2f 25 73 29 3a 20 60 | 25 73 27 5c 6e 22 2c 20 |d/%s): `|%s'\n", |
|000057d0| 66 64 2c 20 68 6f 73 74 | 73 5b 66 64 5d 2c 20 62 |fd, host|s[fd], b|
|000057e0| 75 66 29 3b 0a 58 20 20 | 20 20 7d 0a 0a 58 20 20 |uf);.X | }..X |
|000057f0| 20 20 2f 2a 20 53 65 70 | 61 72 61 74 65 20 63 6d | /* Sep|arate cm|
|00005800| 64 20 66 72 6f 6d 20 69 | 64 20 0a 58 20 20 20 20 |d from i|d .X |
|00005810| 20 2a 2f 0a 58 20 20 20 | 20 63 6d 64 70 20 3d 20 | */.X | cmdp = |
|00005820| 62 75 66 3b 0a 58 20 20 | 20 20 62 75 66 70 20 3d |buf;.X | bufp =|
|00005830| 20 62 75 66 20 2b 20 34 | 3b 0a 58 20 20 20 20 6e | buf + 4|;.X n|
|00005840| 20 2d 3d 20 34 3b 0a 0a | 58 20 20 20 20 2f 2a 20 | -= 4;..|X /* |
|00005850| 66 69 6e 64 20 74 68 65 | 20 66 69 72 73 74 20 75 |find the| first u|
|00005860| 73 65 66 75 6c 20 63 68 | 61 72 61 63 74 65 72 2c |seful ch|aracter,|
|00005870| 20 73 61 76 69 6e 67 20 | 69 74 20 61 6e 64 20 69 | saving |it and i|
|00005880| 74 73 20 61 64 64 72 65 | 73 73 2e 0a 58 20 20 20 |ts addre|ss..X |
|00005890| 20 20 2a 2f 0a 58 20 20 | 20 20 69 66 20 28 2a 62 | */.X | if (*b|
|000058a0| 75 66 70 20 3d 3d 20 27 | 3c 27 29 20 7b 0a 58 09 |ufp == '|<') {.X.|
|000058b0| 62 75 66 70 2b 2b 3b 0a | 58 09 6e 2d 2d 3b 0a 58 |bufp++;.|X.n--;.X|
|000058c0| 20 20 20 20 7d 0a 0a 58 | 20 20 20 20 2f 2a 20 72 | }..X| /* r|
|000058d0| 69 70 20 6f 75 74 20 75 | 73 65 6c 65 73 73 20 63 |ip out u|seless c|
|000058e0| 68 61 72 61 63 74 65 72 | 73 20 61 74 20 65 6e 64 |haracter|s at end|
|000058f0| 2c 20 72 65 6d 65 6d 62 | 65 72 69 6e 67 20 72 65 |, rememb|ering re|
|00005900| 61 6c 20 6c 65 6e 67 74 | 68 2e 0a 58 20 20 20 20 |al lengt|h..X |
|00005910| 20 2a 2f 0a 58 20 20 20 | 20 77 68 69 6c 65 20 28 | */.X | while (|
|00005920| 6e 20 3e 20 30 29 20 7b | 0a 58 09 72 65 67 69 73 |n > 0) {|.X.regis|
|00005930| 74 65 72 20 78 20 3d 20 | 6e 20 2d 20 31 3b 0a 58 |ter x = |n - 1;.X|
|00005940| 09 72 65 67 69 73 74 65 | 72 20 63 68 20 3d 20 62 |.registe|r ch = b|
|00005950| 75 66 70 5b 78 5d 3b 0a | 0a 58 09 69 66 20 28 63 |ufp[x];.|.X.if (c|
|00005960| 68 20 3d 3d 20 27 5c 6e | 27 20 7c 7c 20 63 68 20 |h == '\n|' || ch |
|00005970| 3d 3d 20 27 5c 72 27 20 | 7c 7c 20 63 68 20 3d 3d |== '\r' ||| ch ==|
|00005980| 20 27 3e 27 29 0a 58 09 | 20 20 20 20 6e 20 3d 20 | '>').X.| n = |
|00005990| 78 3b 0a 58 09 65 6c 73 | 65 0a 58 09 20 20 20 20 |x;.X.els|e.X. |
|000059a0| 62 72 65 61 6b 3b 0a 58 | 20 20 20 20 7d 0a 58 20 |break;.X| }.X |
|000059b0| 20 20 20 62 75 66 70 5b | 6e 5d 20 3d 20 27 5c 30 | bufp[|n] = '\0|
|000059c0| 27 3b 0a 0a 58 20 20 20 | 20 2f 2a 20 0a 58 20 20 |';..X | /* .X |
|000059d0| 20 20 20 2a 20 57 68 69 | 63 68 20 63 6d 64 20 3f | * Whi|ch cmd ?|
|000059e0| 0a 58 20 20 20 20 20 2a | 2f 0a 58 20 20 20 20 69 |.X *|/.X i|
|000059f0| 66 20 28 53 54 52 4e 5f | 45 51 28 63 6d 64 70 2c |f (STRN_|EQ(cmdp,|
|00005a00| 20 6d 73 67 73 5b 4d 43 | 41 4e 43 45 4c 5d 2c 20 | msgs[MC|ANCEL], |
|00005a10| 34 29 29 20 7b 0a 58 09 | 63 61 6e 63 65 6c 28 66 |4)) {.X.|cancel(f|
|00005a20| 64 2c 20 62 75 66 70 2c | 20 6e 6f 77 29 3b 0a 58 |d, bufp,| now);.X|
|00005a30| 09 72 65 74 75 72 6e 20 | 72 65 70 6c 79 28 66 64 |.return |reply(fd|
|00005a40| 2c 20 30 29 3b 0a 58 20 | 20 20 20 7d 20 65 6c 73 |, 0);.X | } els|
|00005a50| 65 20 69 66 20 28 53 54 | 52 4e 5f 45 51 28 63 6d |e if (ST|RN_EQ(cm|
|00005a60| 64 70 2c 20 6d 73 67 73 | 5b 4d 41 44 44 5d 2c 20 |dp, msgs|[MADD], |
|00005a70| 34 29 29 20 7b 0a 58 09 | 69 66 20 28 73 65 61 72 |4)) {.X.|if (sear|
|00005a80| 63 68 28 66 64 2c 20 62 | 75 66 70 2c 20 6e 6f 77 |ch(fd, b|ufp, now|
|00005a90| 29 29 0a 58 09 20 20 20 | 20 72 65 74 75 72 6e 20 |)).X. | return |
|00005aa0| 72 65 70 6c 79 28 66 64 | 2c 20 31 29 3b 0a 58 09 |reply(fd|, 1);.X.|
|00005ab0| 65 6c 73 65 20 7b 20 0a | 58 09 20 20 20 20 61 64 |else { .|X. ad|
|00005ac0| 64 28 66 64 2c 20 62 75 | 66 70 2c 20 6e 2c 20 6e |d(fd, bu|fp, n, n|
|00005ad0| 6f 77 29 3b 0a 58 09 20 | 20 20 20 72 65 74 75 72 |ow);.X. | retur|
|00005ae0| 6e 20 72 65 70 6c 79 28 | 66 64 2c 20 30 29 3b 0a |n reply(|fd, 0);.|
|00005af0| 58 09 7d 0a 58 20 20 20 | 20 7d 20 65 6c 73 65 20 |X.}.X | } else |
|00005b00| 69 66 20 28 53 54 52 4e | 5f 45 51 28 63 6d 64 70 |if (STRN|_EQ(cmdp|
|00005b10| 2c 20 6d 73 67 73 5b 4d | 4f 4c 44 5d 2c 20 34 29 |, msgs[M|OLD], 4)|
|00005b20| 29 20 7b 0a 58 09 69 66 | 20 28 6c 6f 67 29 0a 58 |) {.X.if| (log).X|
|00005b30| 09 20 20 20 20 28 76 6f | 69 64 29 20 66 70 72 69 |. (vo|id) fpri|
|00005b40| 6e 74 66 28 6c 6f 67 66 | 70 2c 20 22 25 73 20 4f |ntf(logf|p, "%s O|
|00005b50| 6c 64 20 25 73 20 25 73 | 5c 6e 22 2c 20 70 74 69 |ld %s %s|\n", pti|
|00005b60| 6d 65 28 6e 6f 77 29 2c | 20 0a 58 09 09 09 20 20 |me(now),| .X... |
|00005b70| 20 68 6f 73 74 73 5b 66 | 64 5d 20 3f 20 68 6f 73 | hosts[f|d] ? hos|
|00005b80| 74 73 5b 66 64 5d 20 3a | 20 22 22 2c 20 62 75 66 |ts[fd] :| "", buf|
|00005b90| 70 29 3b 0a 58 09 64 70 | 72 69 6e 74 66 28 73 74 |p);.X.dp|rintf(st|
|00005ba0| 64 65 72 72 2c 20 22 4f | 6c 64 28 25 64 2f 25 73 |derr, "O|ld(%d/%s|
|00005bb0| 29 3a 20 60 25 73 27 5c | 6e 22 2c 20 66 64 2c 20 |): `%s'\|n", fd, |
|00005bc0| 68 6f 73 74 73 5b 66 64 | 5d 2c 20 62 75 66 70 29 |hosts[fd|], bufp)|
|00005bd0| 3b 0a 58 09 72 65 74 75 | 72 6e 20 72 65 70 6c 79 |;.X.retu|rn reply|
|00005be0| 28 66 64 2c 20 30 29 3b | 0a 58 20 20 20 20 7d 20 |(fd, 0);|.X } |
|00005bf0| 65 6c 73 65 20 69 66 20 | 28 53 54 52 4e 5f 45 51 |else if |(STRN_EQ|
|00005c00| 28 63 6d 64 70 2c 20 6d | 73 67 73 5b 4d 48 4f 53 |(cmdp, m|sgs[MHOS|
|00005c10| 54 5d 2c 20 34 29 29 20 | 7b 0a 58 09 69 66 20 28 |T], 4)) |{.X.if (|
|00005c20| 68 6f 73 74 73 5b 66 64 | 5d 29 0a 58 09 09 66 72 |hosts[fd|]).X..fr|
|00005c30| 65 65 28 68 6f 73 74 73 | 5b 66 64 5d 29 3b 0a 58 |ee(hosts|[fd]);.X|
|00005c40| 09 68 6f 73 74 73 5b 66 | 64 5d 20 3d 20 73 74 72 |.hosts[f|d] = str|
|00005c50| 64 75 70 28 62 75 66 70 | 29 3b 0a 58 09 69 66 20 |dup(bufp|);.X.if |
|00005c60| 28 6c 6f 67 29 0a 58 09 | 20 20 20 20 28 76 6f 69 |(log).X.| (voi|
|00005c70| 64 29 20 66 70 72 69 6e | 74 66 28 6c 6f 67 66 70 |d) fprin|tf(logfp|
|00005c80| 2c 20 22 25 73 20 43 6f | 6e 6e 65 63 74 20 25 73 |, "%s Co|nnect %s|
|00005c90| 5c 6e 22 2c 20 70 74 69 | 6d 65 28 6e 6f 77 29 2c |\n", pti|me(now),|
|00005ca0| 20 68 6f 73 74 73 5b 66 | 64 5d 29 3b 0a 58 09 64 | hosts[f|d]);.X.d|
|00005cb0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00005cc0| 43 6f 6e 6e 65 63 74 28 | 25 64 2f 25 73 29 5c 6e |Connect(|%d/%s)\n|
|00005cd0| 22 2c 20 66 64 2c 20 68 | 6f 73 74 73 5b 66 64 5d |", fd, h|osts[fd]|
|00005ce0| 29 3b 0a 58 09 72 65 74 | 75 72 6e 20 72 65 70 6c |);.X.ret|urn repl|
|00005cf0| 79 28 66 64 2c 20 30 29 | 3b 0a 58 20 20 20 20 7d |y(fd, 0)|;.X }|
|00005d00| 20 65 6c 73 65 20 7b 0a | 58 09 73 79 73 6c 6f 67 | else {.|X.syslog|
|00005d10| 28 4c 4f 47 5f 45 52 52 | 2c 20 22 55 6e 6b 6e 6f |(LOG_ERR|, "Unkno|
|00005d20| 77 6e 20 63 6f 6d 6d 61 | 6e 64 20 25 73 22 2c 20 |wn comma|nd %s", |
|00005d30| 63 6d 64 70 29 3b 0a 58 | 09 69 66 20 28 6c 6f 67 |cmdp);.X|.if (log|
|00005d40| 29 0a 58 09 20 20 20 20 | 28 76 6f 69 64 29 20 66 |).X. |(void) f|
|00005d50| 70 72 69 6e 74 66 28 6c | 6f 67 66 70 2c 20 22 25 |printf(l|ogfp, "%|
|00005d60| 73 20 45 72 72 6f 72 20 | 25 73 20 75 6e 6b 6e 6f |s Error |%s unkno|
|00005d70| 77 6e 2d 63 6d 64 20 25 | 73 5c 6e 22 2c 20 70 74 |wn-cmd %|s\n", pt|
|00005d80| 69 6d 65 28 6e 6f 77 29 | 2c 20 0a 58 09 09 09 20 |ime(now)|, .X... |
|00005d90| 20 20 68 6f 73 74 73 5b | 66 64 5d 2c 20 63 6d 64 | hosts[|fd], cmd|
|00005da0| 70 29 3b 0a 58 09 64 70 | 72 69 6e 74 66 28 73 74 |p);.X.dp|rintf(st|
|00005db0| 64 65 72 72 2c 20 22 45 | 72 72 6f 72 28 25 64 2f |derr, "E|rror(%d/|
|00005dc0| 25 73 29 20 75 6e 6b 6e | 6f 77 6e 2d 63 6d 64 20 |%s) unkn|own-cmd |
|00005dd0| 25 73 5c 6e 22 2c 20 66 | 64 2c 20 68 6f 73 74 73 |%s\n", f|d, hosts|
|00005de0| 5b 66 64 5d 2c 20 63 6d | 64 70 29 3b 0a 58 09 72 |[fd], cm|dp);.X.r|
|00005df0| 65 74 75 72 6e 20 72 65 | 70 6c 79 28 66 64 2c 20 |eturn re|ply(fd, |
|00005e00| 30 29 3b 0a 58 20 20 20 | 20 7d 0a 58 23 69 66 64 |0);.X | }.X#ifd|
|00005e10| 65 66 20 6c 69 6e 74 0a | 58 20 20 20 20 2f 2a 4e |ef lint.|X /*N|
|00005e20| 4f 54 52 45 41 43 48 45 | 44 2a 2f 0a 58 20 20 20 |OTREACHE|D*/.X |
|00005e30| 20 72 65 74 75 72 6e 20 | 28 30 29 3b 0a 58 23 65 | return |(0);.X#e|
|00005e40| 6e 64 69 66 0a 58 7d 0a | 0a 6f 6e 70 69 70 65 28 |ndif.X}.|.onpipe(|
|00005e50| 29 0a 58 7b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |).X{.X.r|egister |
|00005e60| 74 69 6d 65 5f 74 20 6e | 6f 77 20 3d 20 74 69 6d |time_t n|ow = tim|
|00005e70| 65 28 28 6c 6f 6e 67 20 | 2a 29 30 29 3b 0a 0a 58 |e((long |*)0);..X|
|00005e80| 09 69 66 20 28 6c 6f 67 | 29 0a 58 09 09 66 70 72 |.if (log|).X..fpr|
|00005e90| 69 6e 74 66 28 6c 6f 67 | 66 70 2c 20 22 25 73 20 |intf(log|fp, "%s |
|00005ea0| 47 6f 74 20 53 49 47 50 | 49 50 45 5c 6e 22 2c 20 |Got SIGP|IPE\n", |
|00005eb0| 70 74 69 6d 65 28 6e 6f | 77 29 29 3b 0a 58 09 73 |ptime(no|w));.X.s|
|00005ec0| 69 67 70 69 70 65 64 2b | 2b 3b 0a 58 7d 0a 21 0a |igpiped+|+;.X}.!.|
+--------+-------------------------+-------------------------+--------+--------+