home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume30 / tin / part08 < prev    next >
SHell self-extracting ARchive  |  1992-05-20  |  53.6 KB

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

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

You can browse this item here: part08

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 69 61 69 6e | 25 61 6e 6c 34 33 33 2e |om: iain|%anl433.|
|00000030| 75 75 63 70 40 67 65 72 | 6d 61 6e 79 2e 65 75 2e |uucp@ger|many.eu.|
|00000040| 6e 65 74 20 28 49 61 69 | 6e 20 4a 2e 20 4c 65 61 |net (Iai|n J. Lea|
|00000050| 29 0a 53 75 62 6a 65 63 | 74 3a 20 20 76 33 30 69 |).Subjec|t: v30i|
|00000060| 30 30 38 3a 20 20 74 69 | 6e 20 2d 20 74 68 72 65 |008: ti|n - thre|
|00000070| 61 64 65 64 20 66 75 6c | 6c 20 73 63 72 65 65 6e |aded ful|l screen|
|00000080| 20 6e 65 77 73 72 65 61 | 64 65 72 2c 20 50 61 72 | newsrea|der, Par|
|00000090| 74 30 38 2f 31 34 0a 4d | 65 73 73 61 67 65 2d 49 |t08/14.M|essage-I|
|000000a0| 44 3a 20 3c 31 39 39 32 | 4d 61 79 32 30 2e 31 37 |D: <1992|May20.17|
|000000b0| 32 37 30 38 2e 32 39 36 | 34 37 40 73 70 61 72 6b |2708.296|47@spark|
|000000c0| 79 2e 69 6d 64 2e 73 74 | 65 72 6c 69 6e 67 2e 63 |y.imd.st|erling.c|
|000000d0| 6f 6d 3e 0a 58 2d 4d 64 | 34 2d 53 69 67 6e 61 74 |om>.X-Md|4-Signat|
|000000e0| 75 72 65 3a 20 31 66 30 | 38 64 61 61 64 63 64 35 |ure: 1f0|8daadcd5|
|000000f0| 64 35 37 39 31 36 63 33 | 35 36 39 38 64 62 65 65 |d57916c3|5698dbee|
|00000100| 64 64 61 37 30 0a 44 61 | 74 65 3a 20 57 65 64 2c |dda70.Da|te: Wed,|
|00000110| 20 32 30 20 4d 61 79 20 | 31 39 39 32 20 31 37 3a | 20 May |1992 17:|
|00000120| 32 37 3a 30 38 20 47 4d | 54 0a 41 70 70 72 6f 76 |27:08 GM|T.Approv|
|00000130| 65 64 3a 20 6b 65 6e 74 | 40 73 70 61 72 6b 79 2e |ed: kent|@sparky.|
|00000140| 69 6d 64 2e 73 74 65 72 | 6c 69 6e 67 2e 63 6f 6d |imd.ster|ling.com|
|00000150| 0a 0a 53 75 62 6d 69 74 | 74 65 64 2d 62 79 3a 20 |..Submit|ted-by: |
|00000160| 69 61 69 6e 25 61 6e 6c | 34 33 33 2e 75 75 63 70 |iain%anl|433.uucp|
|00000170| 40 67 65 72 6d 61 6e 79 | 2e 65 75 2e 6e 65 74 20 |@germany|.eu.net |
|00000180| 28 49 61 69 6e 20 4a 2e | 20 4c 65 61 29 0a 50 6f |(Iain J.| Lea).Po|
|00000190| 73 74 69 6e 67 2d 6e 75 | 6d 62 65 72 3a 20 56 6f |sting-nu|mber: Vo|
|000001a0| 6c 75 6d 65 20 33 30 2c | 20 49 73 73 75 65 20 38 |lume 30,| Issue 8|
|000001b0| 0a 41 72 63 68 69 76 65 | 2d 6e 61 6d 65 3a 20 74 |.Archive|-name: t|
|000001c0| 69 6e 2f 70 61 72 74 30 | 38 0a 45 6e 76 69 72 6f |in/part0|8.Enviro|
|000001d0| 6e 6d 65 6e 74 3a 20 42 | 53 44 2c 20 53 43 4f 2c |nment: B|SD, SCO,|
|000001e0| 20 49 53 43 2c 20 53 55 | 4e 4f 53 2c 20 53 59 53 | ISC, SU|NOS, SYS|
|000001f0| 56 52 33 2c 20 53 59 53 | 56 52 34 2c 20 55 4c 54 |VR3, SYS|VR4, ULT|
|00000200| 52 49 58 2c 20 58 45 4e | 49 58 0a 53 75 70 65 72 |RIX, XEN|IX.Super|
|00000210| 73 65 64 65 73 3a 20 74 | 69 6e 3a 20 56 6f 6c 75 |sedes: t|in: Volu|
|00000220| 6d 65 20 32 39 2c 20 49 | 73 73 75 65 20 31 39 2d |me 29, I|ssue 19-|
|00000230| 33 30 0a 0a 23 21 20 2f | 62 69 6e 2f 73 68 0a 23 |30..#! /|bin/sh.#|
|00000240| 20 54 68 69 73 20 69 73 | 20 61 20 73 68 65 6c 6c | This is| a shell|
|00000250| 20 61 72 63 68 69 76 65 | 2e 20 20 52 65 6d 6f 76 | archive|. Remov|
|00000260| 65 20 61 6e 79 74 68 69 | 6e 67 20 62 65 66 6f 72 |e anythi|ng befor|
|00000270| 65 20 74 68 69 73 20 6c | 69 6e 65 2c 20 74 68 65 |e this l|ine, the|
|00000280| 6e 20 66 65 65 64 20 69 | 74 0a 23 20 69 6e 74 6f |n feed i|t.# into|
|00000290| 20 61 20 73 68 65 6c 6c | 20 76 69 61 20 22 73 68 | a shell| via "sh|
|000002a0| 20 66 69 6c 65 22 20 6f | 72 20 73 69 6d 69 6c 61 | file" o|r simila|
|000002b0| 72 2e 20 20 54 6f 20 6f | 76 65 72 77 72 69 74 65 |r. To o|verwrite|
|000002c0| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 73 2c | existin|g files,|
|000002d0| 0a 23 20 74 79 70 65 20 | 22 73 68 20 66 69 6c 65 |.# type |"sh file|
|000002e0| 20 2d 63 22 2e 0a 23 20 | 54 68 65 20 74 6f 6f 6c | -c"..# |The tool|
|000002f0| 20 74 68 61 74 20 67 65 | 6e 65 72 61 74 65 64 20 | that ge|nerated |
|00000300| 74 68 69 73 20 61 70 70 | 65 61 72 65 64 20 69 6e |this app|eared in|
|00000310| 20 74 68 65 20 63 6f 6d | 70 2e 73 6f 75 72 63 65 | the com|p.source|
|00000320| 73 2e 75 6e 69 78 20 6e | 65 77 73 67 72 6f 75 70 |s.unix n|ewsgroup|
|00000330| 3b 0a 23 20 73 65 6e 64 | 20 6d 61 69 6c 20 74 6f |;.# send| mail to|
|00000340| 20 63 6f 6d 70 2d 73 6f | 75 72 63 65 73 2d 75 6e | comp-so|urces-un|
|00000350| 69 78 40 75 75 6e 65 74 | 2e 75 75 2e 6e 65 74 20 |ix@uunet|.uu.net |
|00000360| 69 66 20 79 6f 75 20 77 | 61 6e 74 20 74 68 61 74 |if you w|ant that|
|00000370| 20 74 6f 6f 6c 2e 0a 23 | 20 43 6f 6e 74 65 6e 74 | tool..#| Content|
|00000380| 73 3a 20 20 54 4f 44 4f | 20 61 72 74 2e 63 20 6c |s: TODO| art.c l|
|00000390| 61 6e 67 2e 63 0a 23 20 | 57 72 61 70 70 65 64 20 |ang.c.# |Wrapped |
|000003a0| 62 79 20 6b 65 6e 74 40 | 73 70 61 72 6b 79 20 6f |by kent@|sparky o|
|000003b0| 6e 20 54 75 65 20 4d 61 | 79 20 31 39 20 31 33 3a |n Tue Ma|y 19 13:|
|000003c0| 33 38 3a 30 34 20 31 39 | 39 32 0a 50 41 54 48 3d |38:04 19|92.PATH=|
|000003d0| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|000003e0| 73 72 2f 75 63 62 20 3b | 20 65 78 70 6f 72 74 20 |sr/ucb ;| export |
|000003f0| 50 41 54 48 0a 65 63 68 | 6f 20 49 66 20 74 68 69 |PATH.ech|o If thi|
|00000400| 73 20 61 72 63 68 69 76 | 65 20 69 73 20 63 6f 6d |s archiv|e is com|
|00000410| 70 6c 65 74 65 2c 20 79 | 6f 75 20 77 69 6c 6c 20 |plete, y|ou will |
|00000420| 73 65 65 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |see the |followin|
|00000430| 67 20 6d 65 73 73 61 67 | 65 3a 0a 65 63 68 6f 20 |g messag|e:.echo |
|00000440| 27 20 20 20 20 20 20 20 | 20 20 20 22 73 68 61 72 |' | "shar|
|00000450| 3a 20 45 6e 64 20 6f 66 | 20 61 72 63 68 69 76 65 |: End of| archive|
|00000460| 20 38 20 28 6f 66 20 31 | 34 29 2e 22 27 0a 69 66 | 8 (of 1|4)."'.if|
|00000470| 20 74 65 73 74 20 2d 66 | 20 27 54 4f 44 4f 27 20 | test -f| 'TODO' |
|00000480| 2d 61 20 22 24 7b 31 7d | 22 20 21 3d 20 22 2d 63 |-a "${1}|" != "-c|
|00000490| 22 20 3b 20 74 68 65 6e | 20 0a 20 20 65 63 68 6f |" ; then| . echo|
|000004a0| 20 73 68 61 72 3a 20 57 | 69 6c 6c 20 6e 6f 74 20 | shar: W|ill not |
|000004b0| 63 6c 6f 62 62 65 72 20 | 65 78 69 73 74 69 6e 67 |clobber |existing|
|000004c0| 20 66 69 6c 65 20 5c 22 | 27 54 4f 44 4f 27 5c 22 | file \"|'TODO'\"|
|000004d0| 0a 65 6c 73 65 0a 20 20 | 65 63 68 6f 20 73 68 61 |.else. |echo sha|
|000004e0| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|000004f0| 27 54 4f 44 4f 27 5c 22 | 20 5c 28 34 39 35 38 20 |'TODO'\"| \(4958 |
|00000500| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 20 20 73 |characte|rs\). s|
|00000510| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 54 4f |ed "s/^X|//" >'TO|
|00000520| 44 4f 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |DO' <<'E|ND_OF_FI|
|00000530| 4c 45 27 0a 58 21 21 21 | 20 50 4c 45 41 53 45 20 |LE'.X!!!| PLEASE |
|00000540| 4e 4f 54 45 20 54 48 41 | 54 20 4f 4e 20 43 45 52 |NOTE THA|T ON CER|
|00000550| 54 41 49 4e 20 4d 41 43 | 48 49 4e 45 53 20 28 69 |TAIN MAC|HINES (i|
|00000560| 65 2e 20 6d 6f 73 74 6c | 79 20 52 49 53 43 20 44 |e. mostl|y RISC D|
|00000570| 45 43 2c 48 50 29 20 54 | 49 4e 0a 58 21 21 21 20 |EC,HP) T|IN.X!!! |
|00000580| 57 49 4c 4c 20 53 4f 4d | 45 54 49 4d 45 53 20 43 |WILL SOM|ETIMES C|
|00000590| 52 41 53 48 20 57 49 54 | 48 20 53 49 47 42 55 53 |RASH WIT|H SIGBUS|
|000005a0| 20 6f 72 20 53 49 47 53 | 45 47 56 20 44 55 45 20 | or SIGS|EGV DUE |
|000005b0| 54 4f 20 54 48 45 20 48 | 41 43 4b 20 54 48 41 54 |TO THE H|ACK THAT|
|000005c0| 0a 58 21 21 21 20 49 53 | 20 55 53 45 44 20 49 4e |.X!!! IS| USED IN|
|000005d0| 20 48 41 53 48 49 4e 47 | 20 53 54 52 49 4e 47 53 | HASHING| STRINGS|
|000005e0| 20 49 4e 20 68 61 73 68 | 73 74 72 2e 63 2e 20 53 | IN hash|str.c. S|
|000005f0| 4f 52 52 59 20 42 55 54 | 20 49 20 48 41 56 45 20 |ORRY BUT| I HAVE |
|00000600| 4e 4f 20 54 49 4d 45 0a | 58 21 21 21 20 52 49 47 |NO TIME.|X!!! RIG|
|00000610| 48 54 20 4e 4f 57 20 54 | 4f 20 52 45 49 4d 50 4c |HT NOW T|O REIMPL|
|00000620| 45 4d 45 4e 54 20 54 48 | 49 53 20 50 41 52 54 20 |EMENT TH|IS PART |
|00000630| 4f 46 20 54 49 4e 20 57 | 48 49 43 48 20 49 53 20 |OF TIN W|HICH IS |
|00000640| 41 20 43 41 52 52 59 20 | 4f 56 45 52 0a 58 21 21 |A CARRY |OVER.X!!|
|00000650| 21 20 46 52 4f 4d 20 54 | 41 53 53 20 76 33 2e 32 |! FROM T|ASS v3.2|
|00000660| 20 28 41 6e 79 20 74 61 | 6b 65 72 73 20 3f 29 0a | (Any ta|kers ?).|
|00000670| 58 0a 58 46 49 58 20 46 | 45 41 54 55 52 45 53 20 |X.XFIX F|EATURES |
|00000680| 56 31 2e 78 0a 58 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |V1.x.X--|--------|
|00000690| 2d 2d 2d 2d 2d 2d 2d 0a | 58 0a 58 6f 20 20 46 69 |-------.|X.Xo Fi|
|000006a0| 78 20 73 70 6f 6f 6c 64 | 69 72 73 5b 5d 20 73 6f |x spoold|irs[] so|
|000006b0| 20 69 74 20 61 75 74 6f | 2d 65 78 70 61 6e 64 73 | it auto|-expands|
|000006c0| 20 61 73 20 6e 65 65 64 | 65 64 2e 0a 58 0a 58 6f | as need|ed..X.Xo|
|000006d0| 20 20 46 69 78 20 6e 75 | 6d 20 6f 66 20 68 6f 74 | Fix nu|m of hot|
|000006e0| 20 61 72 74 73 20 69 6e | 20 61 6c 6c 2f 6f 6e 6c | arts in| all/onl|
|000006f0| 79 20 75 6e 72 65 61 64 | 20 6d 6f 64 65 2e 20 43 |y unread| mode. C|
|00000700| 61 6c 63 75 6c 61 74 65 | 20 65 61 63 68 20 74 69 |alculate| each ti|
|00000710| 6d 65 20 27 72 27 0a 58 | 20 20 20 69 73 20 65 78 |me 'r'.X| is ex|
|00000720| 65 63 75 74 65 64 2e 0a | 58 0a 58 6f 20 20 49 6e |ecuted..|X.Xo In|
|00000730| 20 69 6e 65 77 73 2e 63 | 20 61 6c 73 6f 20 61 6c | inews.c| also al|
|00000740| 6c 6f 77 20 72 65 70 6c | 79 5f 74 6f 20 76 61 72 |low repl|y_to var|
|00000750| 20 74 6f 20 62 65 20 75 | 73 65 64 20 69 6e 20 46 | to be u|sed in F|
|00000760| 72 6f 6d 3a 20 66 69 65 | 6c 64 2e 0a 58 0a 58 6f |rom: fie|ld..X.Xo|
|00000770| 20 20 46 69 78 20 2d 53 | 20 6f 70 74 69 6f 6e 20 | Fix -S| option |
|00000780| 74 6f 20 63 72 65 61 74 | 65 20 61 6e 20 61 63 74 |to creat|e an act|
|00000790| 69 76 65 20 66 69 6c 65 | 20 77 68 65 6e 20 6e 65 |ive file| when ne|
|000007a0| 77 20 61 72 74 69 63 6c | 65 73 20 61 72 65 0a 58 |w articl|es are.X|
|000007b0| 20 20 20 73 61 76 65 64 | 20 74 6f 20 3c 73 61 76 | saved| to <sav|
|000007c0| 65 64 69 72 3e 2e 20 41 | 6c 73 6f 20 66 69 78 20 |edir>. A|lso fix |
|000007d0| 2d 52 20 6f 70 74 69 6f | 6e 20 74 6f 20 72 65 61 |-R optio|n to rea|
|000007e0| 64 20 41 43 54 49 56 45 | 20 66 69 6c 65 20 63 72 |d ACTIVE| file cr|
|000007f0| 65 61 74 65 64 0a 58 20 | 20 20 62 79 20 2d 53 20 |eated.X | by -S |
|00000800| 63 6f 6d 6d 61 6e 64 2e | 20 55 73 65 20 6d 69 6e |command.| Use min|
|00000810| 69 6d 61 78 20 63 6f 64 | 65 20 66 72 6f 6d 20 74 |imax cod|e from t|
|00000820| 6f 6e 79 20 74 72 61 76 | 69 73 20 74 6f 20 68 65 |ony trav|is to he|
|00000830| 6c 70 20 69 6e 20 2d 52 | 20 63 6d 64 0a 58 20 20 |lp in -R| cmd.X |
|00000840| 20 6c 69 6e 65 20 6f 70 | 74 69 6f 6e 2e 0a 58 0a | line op|tion..X.|
|00000850| 58 6f 20 20 49 6e 20 46 | 41 51 20 77 68 65 72 65 |Xo In F|AQ where|
|00000860| 20 69 74 20 73 74 61 74 | 65 73 20 6d 61 63 68 69 | it stat|es machi|
|00000870| 6e 65 73 20 74 68 61 74 | 20 74 69 6e 20 72 75 6e |nes that| tin run|
|00000880| 73 20 6f 6e 2c 20 70 75 | 74 20 61 20 6e 6f 74 65 |s on, pu|t a note|
|00000890| 20 61 62 6f 75 74 0a 58 | 20 20 20 70 65 6f 70 6c | about.X| peopl|
|000008a0| 65 2b 6e 65 74 20 61 64 | 64 72 65 73 73 20 74 68 |e+net ad|dress th|
|000008b0| 61 74 20 68 61 76 65 20 | 70 6f 72 74 65 64 20 74 |at have |ported t|
|000008c0| 6f 20 65 67 2e 20 53 69 | 65 6d 65 6e 73 20 4d 58 |o eg. Si|emens MX|
|000008d0| 32 20 62 75 74 20 6e 6f | 74 0a 58 20 20 20 73 75 |2 but no|t.X su|
|000008e0| 70 70 6f 72 74 65 64 20 | 62 79 20 6d 61 69 6e 20 |pported |by main |
|000008f0| 72 65 6c 65 61 73 65 2e | 0a 58 0a 58 6f 20 20 46 |release.|.X.Xo F|
|00000900| 69 78 20 53 65 6e 64 65 | 72 3a 20 50 61 74 68 3a |ix Sende|r: Path:|
|00000910| 20 68 65 61 64 65 72 73 | 20 77 69 74 68 69 6e 20 | headers| within |
|00000920| 4e 4e 54 50 20 69 6e 65 | 77 73 20 69 6e 74 65 72 |NNTP ine|ws inter|
|00000930| 6e 61 6c 6c 79 20 74 6f | 20 74 69 6e 0a 58 20 20 |nally to| tin.X |
|00000940| 20 62 79 20 61 20 23 64 | 65 66 69 6e 65 20 4e 4e | by a #d|efine NN|
|00000950| 54 50 5f 49 4e 45 57 53 | 0a 58 0a 58 6f 20 20 46 |TP_INEWS|.X.Xo F|
|00000960| 69 78 20 53 61 76 65 20 | 69 6e 20 66 65 65 64 2e |ix Save |in feed.|
|00000970| 63 20 72 6f 75 74 69 6e | 65 73 2e 20 0a 58 20 20 |c routin|es. .X |
|00000980| 20 41 6c 73 6f 20 66 69 | 78 20 73 6f 20 53 41 56 | Also fi|x so SAV|
|00000990| 49 4e 47 20 72 6f 75 74 | 69 6e 65 73 20 6a 75 73 |ING rout|ines jus|
|000009a0| 74 20 75 73 65 20 73 61 | 76 65 5f 61 72 74 5f 74 |t use sa|ve_art_t|
|000009b0| 6f 5f 66 69 6c 65 28 29 | 20 61 6e 64 20 70 72 69 |o_file()| and pri|
|000009c0| 6e 74 0a 58 20 20 20 2a | 2a 2a 20 58 20 41 72 74 |nt.X *|** X Art|
|000009d0| 69 63 6c 65 73 20 73 61 | 76 65 64 20 2a 2a 2a 20 |icles sa|ved *** |
|000009e0| 26 20 6e 6f 6e 65 20 6f | 66 20 74 68 65 20 42 53 |& none o|f the BS|
|000009f0| 20 64 6f 6e 65 20 61 74 | 20 74 68 65 20 6d 6f 6d | done at| the mom|
|00000a00| 65 6e 74 0a 58 0a 58 6f | 20 20 46 69 78 20 27 7a |ent.X.Xo| Fix 'z|
|00000a10| 27 20 61 74 20 67 72 6f | 75 70 20 6c 65 76 65 6c |' at gro|up level|
|00000a20| 20 73 6f 20 74 68 61 74 | 20 61 73 20 61 72 74 20 | so that| as art |
|00000a30| 69 73 20 6d 61 72 6b 65 | 64 20 75 6e 72 65 61 64 |is marke|d unread|
|00000a40| 20 69 74 20 69 73 20 61 | 6c 73 6f 20 0a 58 20 20 | it is a|lso .X |
|00000a50| 20 63 68 65 63 6b 65 64 | 20 74 6f 20 73 65 65 20 | checked| to see |
|00000a60| 69 66 20 69 74 20 69 73 | 20 6b 69 6c 6c 65 64 20 |if it is| killed |
|00000a70| 2f 20 68 6f 74 2e 0a 58 | 0a 58 6f 20 20 41 64 64 |/ hot..X|.Xo Add|
|00000a80| 20 6f 70 74 69 6f 6e 20 | 74 6f 20 27 4d 27 20 6d | option |to 'M' m|
|00000a90| 65 6e 75 20 74 6f 20 61 | 6c 6c 6f 77 20 27 43 27 |enu to a|llow 'C'|
|00000aa0| 20 63 6f 6d 6d 61 6e 64 | 20 74 6f 20 72 65 74 75 | command| to retu|
|00000ab0| 72 6e 2f 73 74 61 79 20 | 61 74 0a 58 20 20 20 67 |rn/stay |at.X g|
|00000ac0| 72 6f 75 70 20 6c 65 76 | 65 6c 2e 0a 58 0a 58 6f |roup lev|el..X.Xo|
|00000ad0| 20 20 46 69 78 20 27 63 | 27 20 61 74 20 61 72 74 | Fix 'c|' at art|
|00000ae0| 69 63 6c 65 20 6c 65 76 | 65 6c 20 77 68 65 6e 20 |icle lev|el when |
|00000af0| 77 69 74 68 69 6e 20 74 | 68 72 65 61 64 20 6c 65 |within t|hread le|
|00000b00| 76 65 6c 3f 0a 58 0a 58 | 6f 20 20 46 69 78 20 2d |vel?.X.X|o Fix -|
|00000b10| 6e 20 6f 70 74 69 6f 6e | 20 74 6f 20 68 61 73 68 |n option| to hash|
|00000b20| 20 74 68 65 20 67 72 6f | 75 70 73 20 72 65 61 64 | the gro|ups read|
|00000b30| 20 69 6e 20 66 72 6f 6d | 20 7e 2f 2e 74 69 6e 2f | in from| ~/.tin/|
|00000b40| 61 63 74 69 76 65 20 61 | 6e 64 0a 58 20 20 20 6d |active a|nd.X m|
|00000b50| 61 72 6b 20 61 63 74 69 | 76 65 5b 5d 2e 66 6c 61 |ark acti|ve[].fla|
|00000b60| 67 20 61 73 20 54 52 55 | 45 2e 20 74 68 65 6e 20 |g as TRU|E. then |
|00000b70| 66 69 6e 64 20 66 6c 61 | 67 3d 46 41 4c 53 45 20 |find fla|g=FALSE |
|00000b80| 61 6e 64 20 61 73 6b 20 | 75 73 65 72 20 69 66 0a |and ask |user if.|
|00000b90| 58 20 20 20 74 68 65 79 | 20 77 61 6e 74 20 74 6f |X they| want to|
|00000ba0| 20 73 75 62 73 63 72 69 | 62 65 20 74 6f 20 67 72 | subscri|be to gr|
|00000bb0| 6f 75 70 2e 20 4f 6e 20 | 78 65 6e 69 78 33 38 36 |oup. On |xenix386|
|00000bc0| 20 74 61 6b 65 73 20 31 | 35 20 73 65 63 6f 6e 64 | takes 1|5 second|
|00000bd0| 73 20 6f 6e 0a 58 20 20 | 20 63 75 72 72 65 6e 74 |s on.X | current|
|00000be0| 20 2d 6e 20 6f 70 74 69 | 6f 6e 2e 20 41 6c 73 6f | -n opti|on. Also|
|00000bf0| 20 6f 66 20 43 4e 45 57 | 53 20 6a 75 73 74 20 64 | of CNEW|S just d|
|00000c00| 6f 20 61 20 63 6f 6d 70 | 61 72 65 20 6f 66 20 61 |o a comp|are of a|
|00000c10| 63 74 69 76 65 2e 74 69 | 6d 65 73 0a 58 20 20 20 |ctive.ti|mes.X |
|00000c20| 55 4e 44 45 52 20 43 4e | 45 57 53 20 55 53 45 20 |UNDER CN|EWS USE |
|00000c30| 61 63 74 69 76 65 2e 74 | 69 6d 65 73 20 46 49 4c |active.t|imes FIL|
|00000c40| 45 20 46 52 4f 4d 20 4e | 4e 54 50 53 45 52 56 45 |E FROM N|NTPSERVE|
|00000c50| 52 0a 58 20 20 20 55 4e | 44 45 52 20 4e 4e 54 50 |R.X UN|DER NNTP|
|00000c60| 20 55 53 45 20 6e 65 77 | 6e 65 77 73 20 43 4f 4d | USE new|news COM|
|00000c70| 4d 41 4e 44 20 46 52 4f | 4d 20 4e 4e 54 50 53 45 |MAND FRO|M NNTPSE|
|00000c80| 52 56 45 52 0a 58 0a 58 | 6f 20 20 41 64 64 20 27 |RVER.X.X|o Add '|
|00000c90| 72 27 20 63 6f 6d 6d 61 | 6e 64 20 74 6f 20 6e 65 |r' comma|nd to ne|
|00000ca0| 77 73 67 72 6f 75 70 20 | 6c 65 76 65 6c 2e 0a 58 |wsgroup |level..X|
|00000cb0| 0a 58 46 49 58 20 46 45 | 41 54 55 52 45 53 20 56 |.XFIX FE|ATURES V|
|00000cc0| 32 2e 30 0a 58 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |2.0.X---|--------|
|00000cd0| 2d 2d 2d 2d 2d 2d 0a 58 | 0a 58 6f 20 20 49 66 20 |------.X|.Xo If |
|00000ce0| 73 61 76 69 6e 67 20 69 | 6e 20 6d 61 69 6c 62 6f |saving i|n mailbo|
|00000cf0| 78 20 66 6f 72 6d 61 74 | 20 61 6e 64 20 6d 61 69 |x format| and mai|
|00000d00| 6c 62 6f 78 20 64 6f 65 | 73 20 6e 6f 74 20 65 78 |lbox doe|s not ex|
|00000d10| 69 73 74 20 71 75 65 72 | 79 20 74 68 65 20 75 73 |ist quer|y the us|
|00000d20| 65 72 3f 0a 58 0a 58 6f | 20 20 49 6e 20 6b 69 6c |er?.X.Xo| In kil|
|00000d30| 6c 2e 63 20 73 68 6f 75 | 6c 64 20 6b 69 6c 6c 5f |l.c shou|ld kill_|
|00000d40| 62 6f 74 68 20 6f 6e 6c | 79 20 6b 69 6c 6c 20 77 |both onl|y kill w|
|00000d50| 68 65 6e 20 73 75 62 6a | 20 26 20 66 72 6f 6d 20 |hen subj| & from |
|00000d60| 61 72 65 20 6d 61 74 63 | 68 65 64 3f 0a 58 0a 58 |are matc|hed?.X.X|
|00000d70| 6f 20 20 41 64 64 20 66 | 69 6c 65 20 7e 2f 2e 74 |o Add f|ile ~/.t|
|00000d80| 69 6e 2f 74 69 6e 68 65 | 61 64 65 72 73 20 66 6f |in/tinhe|aders fo|
|00000d90| 72 20 66 6f 6c 6c 6f 77 | 69 6e 67 20 68 65 61 64 |r follow|ing head|
|00000da0| 65 72 73 20 74 6f 20 62 | 65 20 73 74 6f 72 65 64 |ers to b|e stored|
|00000db0| 3a 0a 58 20 20 20 20 20 | 52 65 70 6c 79 2d 54 6f |:.X |Reply-To|
|00000dc0| 3a 0a 58 20 20 20 20 20 | 4f 72 67 61 6e 69 73 61 |:.X |Organisa|
|00000dd0| 74 69 6f 6e 3a 0a 58 20 | 20 20 20 20 44 69 73 74 |tion:.X | Dist|
|00000de0| 72 69 62 75 74 69 6f 6e | 3a 0a 58 20 0a 58 6f 20 |ribution|:.X .Xo |
|00000df0| 20 4d 61 6b 65 20 62 69 | 6e 61 72 79 20 61 73 20 | Make bi|nary as |
|00000e00| 62 6f 74 68 20 73 74 61 | 6e 64 61 6c 6f 6e 65 20 |both sta|ndalone |
|00000e10| 26 20 4e 4e 54 50 20 61 | 73 20 64 65 66 61 75 6c |& NNTP a|s defaul|
|00000e20| 74 0a 58 0a 58 6f 20 20 | 41 64 64 20 43 74 72 6c |t.X.Xo |Add Ctrl|
|00000e30| 2d 2f 20 43 74 72 6c 2d | 3f 20 74 6f 20 73 65 61 |-/ Ctrl-|? to sea|
|00000e40| 72 63 68 20 74 68 65 20 | 77 68 6f 6c 65 20 6f 66 |rch the |whole of|
|00000e50| 20 61 6e 20 61 72 74 69 | 63 6c 65 20 28 53 75 62 | an arti|cle (Sub|
|00000e60| 6a 2c 46 72 6f 6d 20 26 | 20 42 6f 64 79 29 0a 58 |j,From &| Body).X|
|00000e70| 20 20 20 61 74 20 47 72 | 6f 75 70 20 26 20 50 61 | at Gr|oup & Pa|
|00000e80| 67 65 20 6c 65 76 65 6c | 0a 58 0a 58 6f 20 20 41 |ge level|.X.Xo A|
|00000e90| 64 64 20 65 6c 6d 20 6c | 69 6b 65 20 6d 69 6e 69 |dd elm l|ike mini|
|00000ea0| 2d 6d 65 6e 75 20 74 6f | 20 74 69 6e 20 66 6f 72 |-menu to| tin for|
|00000eb0| 20 66 69 72 73 74 20 74 | 69 6d 65 20 75 73 65 72 | first t|ime user|
|00000ec0| 73 2e 0a 58 0a 58 6f 20 | 20 41 64 64 20 6f 70 74 |s..X.Xo | Add opt|
|00000ed0| 69 6f 6e 20 74 6f 20 27 | 4d 27 20 6d 65 6e 75 20 |ion to '|M' menu |
|00000ee0| 74 6f 20 61 6c 6c 6f 77 | 20 75 6e 6c 69 6e 6b 69 |to allow| unlinki|
|00000ef0| 6e 67 2f 6e 6f 74 20 6f | 66 20 7e 2f 2e 61 72 74 |ng/not o|f ~/.art|
|00000f00| 69 63 6c 65 0a 58 20 20 | 20 61 66 74 65 72 20 70 |icle.X | after p|
|00000f10| 6f 73 74 69 6e 67 20 61 | 6e 20 61 72 74 69 63 6c |osting a|n articl|
|00000f20| 65 2e 0a 58 0a 58 6f 20 | 20 41 64 64 20 68 61 73 |e..X.Xo | Add has|
|00000f30| 68 69 6e 67 20 74 6f 20 | 73 70 65 65 64 75 70 20 |hing to |speedup |
|00000f40| 76 61 6c 69 64 5f 61 72 | 74 28 29 20 69 6e 20 62 |valid_ar|t() in b|
|00000f50| 69 67 20 67 72 6f 75 70 | 73 2e 20 4d 61 6b 65 20 |ig group|s. Make |
|00000f60| 69 74 20 63 6f 6d 70 69 | 6c 65 0a 58 20 20 20 6f |it compi|le.X o|
|00000f70| 70 74 69 6f 6e 20 73 6f | 20 74 69 6e 20 69 73 20 |ption so| tin is |
|00000f80| 73 74 69 6c 6c 20 75 73 | 61 62 6c 65 20 6f 6e 20 |still us|able on |
|00000f90| 4d 69 6e 69 78 2f 73 6d | 61 6c 6c 20 6d 65 6d 6f |Minix/sm|all memo|
|00000fa0| 72 79 20 6d 61 63 68 69 | 6e 65 73 2e 0a 58 20 20 |ry machi|nes..X |
|00000fb0| 20 2d 44 53 4d 41 4c 4c | 5f 4d 45 4d 4f 52 59 5f | -DSMALL|_MEMORY_|
|00000fc0| 4d 41 43 48 49 4e 45 0a | 58 0a 58 6f 20 20 41 64 |MACHINE.|X.Xo Ad|
|00000fd0| 64 20 61 75 74 6f 2d 61 | 6c 69 61 73 69 6e 67 20 |d auto-a|liasing |
|00000fe0| 6f 66 20 70 65 6f 70 6c | 65 73 20 6d 61 69 6c 20 |of peopl|es mail |
|00000ff0| 61 64 64 72 65 73 73 65 | 73 20 74 6f 20 6d 61 69 |addresse|s to mai|
|00001000| 6c 20 61 6c 69 61 73 65 | 73 20 66 69 6c 65 2e 0a |l aliase|s file..|
|00001010| 58 0a 58 6f 20 20 41 64 | 64 20 58 72 65 66 20 68 |X.Xo Ad|d Xref h|
|00001020| 61 6e 64 6c 69 6e 67 20 | 6f 66 20 61 72 74 69 63 |andling |of artic|
|00001030| 6c 65 73 20 73 6f 20 74 | 68 61 74 20 72 65 61 64 |les so t|hat read|
|00001040| 20 6f 6e 65 73 20 61 72 | 65 20 6d 61 72 6b 65 64 | ones ar|e marked|
|00001050| 20 72 65 61 64 20 69 6e | 20 0a 58 20 20 20 6f 74 | read in| .X ot|
|00001060| 68 65 72 20 67 72 6f 75 | 70 73 2e 20 55 73 65 20 |her grou|ps. Use |
|00001070| 75 70 64 61 74 65 5f 67 | 72 6f 75 70 28 29 20 74 |update_g|roup() t|
|00001080| 6f 20 64 6f 20 69 74 3f | 0a 58 20 20 20 4e 65 65 |o do it?|.X Nee|
|00001090| 64 73 20 74 6f 20 68 61 | 6e 64 6c 65 20 27 63 27 |ds to ha|ndle 'c'|
|000010a0| 20 27 43 27 20 27 6b 27 | 20 27 4b 27 20 63 6f 6d | 'C' 'k'| 'K' com|
|000010b0| 6d 61 6e 64 73 2e 20 50 | 65 72 68 61 70 73 20 69 |mands. P|erhaps i|
|000010c0| 74 20 73 68 6f 75 6c 64 | 20 62 65 20 61 6e 0a 58 |t should| be an.X|
|000010d0| 20 20 20 6f 70 74 69 6f | 6e 20 73 6f 20 74 68 61 | optio|n so tha|
|000010e0| 74 20 70 65 72 66 6f 72 | 6d 61 6e 63 65 20 69 73 |t perfor|mance is|
|000010f0| 20 6e 6f 74 20 69 6d 70 | 61 69 72 65 64 2e 20 28 | not imp|aired. (|
|00001100| 4a 49 4d 29 2e 0a 58 0a | 58 6f 20 20 41 64 64 20 |JIM)..X.|Xo Add |
|00001110| 5e 47 20 63 6f 6d 6d 61 | 6e 64 20 74 6f 20 73 6b |^G comma|nd to sk|
|00001120| 69 70 20 74 6f 20 6e 65 | 78 74 20 53 75 62 6a 65 |ip to ne|xt Subje|
|00001130| 63 74 3a 20 69 6e 20 64 | 69 67 65 73 74 73 2e 0a |ct: in d|igests..|
|00001140| 58 0a 58 6f 20 20 54 72 | 79 20 63 6f 6d 70 69 6c |X.Xo Tr|y compil|
|00001150| 69 6e 67 20 77 69 74 68 | 20 2d 44 5f 50 4f 53 49 |ing with| -D_POSI|
|00001160| 58 5f 53 4f 55 52 43 45 | 0a 58 0a 58 6f 20 20 41 |X_SOURCE|.X.Xo A|
|00001170| 64 64 20 66 69 6c 65 6e | 61 6d 65 20 26 20 67 72 |dd filen|ame & gr|
|00001180| 6f 75 70 6e 61 6d 65 20 | 63 6f 6d 70 6c 65 74 69 |oupname |completi|
|00001190| 6f 6e 2e 0a 58 0a 58 6f | 20 20 46 69 78 20 75 75 |on..X.Xo| Fix uu|
|000011a0| 73 63 72 61 6d 20 63 6f | 64 65 20 69 6e 20 75 75 |scram co|de in uu|
|000011b0| 64 65 63 6f 64 65 2e 0a | 58 0a 58 6f 20 20 46 69 |decode..|X.Xo Fi|
|000011c0| 78 20 63 6f 64 65 20 74 | 6f 20 73 6f 72 74 20 61 |x code t|o sort a|
|000011d0| 72 74 73 2e 20 41 74 20 | 70 61 67 65 20 6c 65 76 |rts. At |page lev|
|000011e0| 65 6c 20 66 75 6e 6e 79 | 20 74 68 69 6e 67 73 20 |el funny| things |
|000011f0| 68 61 70 70 65 6e 2e 0a | 58 0a 58 41 44 44 20 46 |happen..|X.XADD F|
|00001200| 45 41 54 55 52 45 53 0a | 58 2d 2d 2d 2d 2d 2d 2d |EATURES.|X-------|
|00001210| 2d 2d 2d 2d 2d 0a 58 0a | 58 6f 20 20 41 64 64 20 |-----.X.|Xo Add |
|00001220| 2d 50 20 3c 70 61 74 74 | 65 72 6e 3e 20 6f 72 20 |-P <patt|ern> or |
|00001230| 2d 50 20 3c 66 69 6c 65 | 3e 20 74 6f 20 73 65 61 |-P <file|> to sea|
|00001240| 72 63 68 20 66 6f 72 20 | 69 6e 20 6e 65 77 20 6e |rch for |in new n|
|00001250| 65 77 73 20 61 6e 64 20 | 74 6f 0a 58 20 20 20 6e |ews and |to.X n|
|00001260| 6f 74 69 66 79 20 75 73 | 65 72 20 62 79 20 6d 61 |otify us|er by ma|
|00001270| 69 6c 2e 20 53 68 6f 75 | 6c 64 20 75 6e 64 65 72 |il. Shou|ld under|
|00001280| 73 74 61 6e 64 20 27 73 | 75 62 6a 65 63 74 3d 74 |stand 's|ubject=t|
|00001290| 65 78 74 27 20 27 66 72 | 6f 6d 3d 74 65 78 74 27 |ext' 'fr|om=text'|
|000012a0| 0a 58 20 20 20 27 62 6f | 64 79 3d 74 65 78 74 27 |.X 'bo|dy=text'|
|000012b0| 20 61 6e 64 20 2e 41 4e | 44 2e 20 26 26 20 2e 4f | and .AN|D. && .O|
|000012c0| 52 2e 20 7c 7c 20 66 6f | 72 20 66 69 6c 74 65 72 |R. || fo|r filter|
|000012d0| 69 6e 67 20 70 75 72 70 | 6f 73 65 73 2e 0a 58 0a |ing purp|oses..X.|
|000012e0| 58 6f 20 20 41 64 64 20 | 65 6c 6d 20 73 74 79 6c |Xo Add |elm styl|
|000012f0| 65 20 70 72 69 6e 74 20 | 63 6f 6d 6d 61 6e 64 20 |e print |command |
|00001300| 77 69 74 68 20 25 73 20 | 69 6e 20 69 74 20 66 6f |with %s |in it fo|
|00001310| 72 20 70 72 69 6e 74 69 | 6e 67 20 69 6e 20 27 4d |r printi|ng in 'M|
|00001320| 27 2e 0a 58 0a 58 6f 20 | 20 41 64 64 20 27 43 27 |'..X.Xo | Add 'C'|
|00001330| 20 63 6f 6d 6d 61 6e 64 | 20 61 74 20 67 72 6f 75 | command| at grou|
|00001340| 70 20 6c 65 76 65 6c 20 | 74 6f 20 63 61 74 63 68 |p level |to catch|
|00001350| 75 70 20 70 72 65 73 65 | 6e 74 20 67 72 6f 75 70 |up prese|nt group|
|00001360| 20 61 6e 64 0a 58 20 20 | 20 65 6e 74 65 72 20 6e | and.X | enter n|
|00001370| 65 78 74 20 67 72 6f 75 | 70 20 77 69 74 68 20 75 |ext grou|p with u|
|00001380| 6e 72 65 61 64 20 6e 65 | 77 73 20 69 6e 20 69 74 |nread ne|ws in it|
|00001390| 2e 0a 58 0a 58 6f 20 20 | 53 6f 72 74 20 2e 6e 65 |..X.Xo |Sort .ne|
|000013a0| 77 73 72 63 20 61 63 63 | 6f 72 64 69 6e 67 20 74 |wsrc acc|ording t|
|000013b0| 6f 20 70 72 65 66 65 72 | 65 6e 63 65 2e 20 28 73 |o prefer|ence. (s|
|000013c0| 6f 72 74 20 61 63 74 69 | 76 65 20 66 69 6c 65 20 |ort acti|ve file |
|000013d0| 61 73 20 69 74 20 69 73 | 20 72 65 61 64 29 0a 58 |as it is| read).X|
|000013e0| 0a 58 6f 20 20 41 64 64 | 20 74 69 6d 65 20 70 65 |.Xo Add| time pe|
|000013f0| 72 69 6f 64 20 74 6f 20 | 6b 69 6c 6c 69 6e 67 20 |riod to |killing |
|00001400| 61 72 74 69 63 6c 65 73 | 0a 58 0a 58 4f 54 48 45 |articles|.X.XOTHE|
|00001410| 52 20 53 54 55 46 46 0a | 58 2d 2d 2d 2d 2d 2d 2d |R STUFF.|X-------|
|00001420| 2d 2d 2d 2d 0a 58 6f 20 | 20 41 64 64 20 72 65 62 |----.Xo | Add reb|
|00001430| 69 6e 64 61 62 6c 65 20 | 6b 65 79 6d 61 70 73 20 |indable |keymaps |
|00001440| 61 6e 64 20 70 72 6f 76 | 69 64 65 20 64 69 66 66 |and prov|ide diff|
|00001450| 65 72 65 6e 74 20 74 65 | 72 6d 69 6e 61 6c 20 6b |erent te|rminal k|
|00001460| 65 79 6d 61 70 73 0a 58 | 20 20 20 28 69 65 2e 20 |eymaps.X| (ie. |
|00001470| 6b 65 79 6d 61 70 2e 61 | 6e 73 69 2c 20 6b 65 79 |keymap.a|nsi, key|
|00001480| 6d 61 70 2e 77 79 35 30 | 20 65 74 63 2e 29 0a 58 |map.wy50| etc.).X|
|00001490| 0a 58 6f 20 20 41 64 64 | 20 56 69 72 74 75 61 6c |.Xo Add| Virtual|
|000014a0| 20 6e 65 77 73 67 72 6f | 75 70 73 20 28 63 6f 6d | newsgro|ups (com|
|000014b0| 62 69 6e 61 74 69 6f 6e | 20 6f 66 20 6e 65 77 73 |bination| of news|
|000014c0| 67 72 6f 75 70 73 20 69 | 65 2e 20 76 69 72 74 75 |groups i|e. virtu|
|000014d0| 61 6c 2e 69 62 6d 0a 58 | 20 20 20 63 6f 6e 73 69 |al.ibm.X| consi|
|000014e0| 73 74 73 20 6f 66 20 63 | 6f 6d 70 2e 73 79 73 2e |sts of c|omp.sys.|
|000014f0| 69 62 6d 2e 2a 20 67 72 | 6f 75 70 73 29 2e 0a 58 |ibm.* gr|oups)..X|
|00001500| 0a 58 6f 20 20 41 64 64 | 20 74 68 72 65 61 64 69 |.Xo Add| threadi|
|00001510| 6e 67 20 6f 6e 20 52 65 | 66 65 72 65 6e 63 65 73 |ng on Re|ferences|
|00001520| 20 6c 69 6b 65 20 74 72 | 6e 20 77 69 74 68 20 6d | like tr|n with m|
|00001530| 74 68 72 65 61 64 73 20 | 64 61 74 61 62 61 73 65 |threads |database|
|00001540| 2e 0a 58 0a 58 6f 20 20 | 41 64 64 20 66 75 6c 6c |..X.Xo |Add full|
|00001550| 20 63 75 72 73 65 73 20 | 73 75 70 70 6f 72 74 20 | curses |support |
|00001560| 69 6e 73 74 65 61 64 20 | 6f 66 20 75 73 69 6e 67 |instead |of using|
|00001570| 20 70 72 69 6e 74 66 28 | 29 27 73 20 6f 72 20 6a | printf(|)'s or j|
|00001580| 6f 65 74 74 79 2e 0a 58 | 0a 58 6f 20 20 53 75 62 |oetty..X|.Xo Sub|
|00001590| 20 61 6c 6c 20 6e 6f 74 | 20 65 6d 70 74 79 20 67 | all not| empty g|
|000015a0| 72 6f 75 70 73 20 62 79 | 20 6c 6f 6f 6b 69 6e 67 |roups by| looking|
|000015b0| 20 61 74 20 6d 69 6e 20 | 6d 61 78 20 76 61 6c 75 | at min |max valu|
|000015c0| 65 73 20 69 6e 20 61 63 | 74 69 76 65 20 61 72 72 |es in ac|tive arr|
|000015d0| 61 79 0a 58 20 20 20 61 | 6e 64 20 55 6e 73 75 62 |ay.X a|nd Unsub|
|000015e0| 20 61 6c 6c 20 65 6d 70 | 74 79 20 67 72 6f 75 70 | all emp|ty group|
|000015f0| 73 20 62 79 20 6c 6f 6f | 6b 69 6e 67 20 61 74 20 |s by loo|king at |
|00001600| 6d 69 6e 20 6d 61 78 20 | 76 61 6c 75 65 73 20 69 |min max |values i|
|00001610| 6e 20 61 63 74 69 76 65 | 20 0a 58 20 20 20 61 72 |n active| .X ar|
|00001620| 72 61 79 2e 20 68 61 76 | 65 20 61 20 63 6f 6d 6d |ray. hav|e a comm|
|00001630| 61 6e 64 20 74 6f 20 64 | 6f 20 74 68 69 73 20 69 |and to d|o this i|
|00001640| 6e 20 61 20 74 6f 67 67 | 6c 65 20 65 66 66 65 63 |n a togg|le effec|
|00001650| 74 2e 0a 58 0a 58 6f 20 | 20 52 75 6e 20 74 65 73 |t..X.Xo | Run tes|
|00001660| 74 73 20 6f 66 20 6d 79 | 5f 73 74 72 6e 63 70 79 |ts of my|_strncpy|
|00001670| 28 29 20 61 6e 64 20 73 | 79 73 74 65 6d 20 73 74 |() and s|ystem st|
|00001680| 72 6e 63 70 79 28 29 0a | 58 0a 58 6f 20 20 43 68 |rncpy().|X.Xo Ch|
|00001690| 61 6e 67 65 20 64 65 66 | 61 75 6c 74 73 20 6f 6e |ange def|aults on|
|000016a0| 20 61 20 70 65 72 20 67 | 72 6f 75 70 20 62 61 73 | a per g|roup bas|
|000016b0| 69 73 0a 58 47 72 6f 75 | 70 20 20 20 20 20 20 20 |is.XGrou|p |
|000016c0| 20 43 6f 6e 6e 65 63 74 | 20 20 20 52 65 61 64 20 | Connect| Read |
|000016d0| 20 20 20 54 68 72 65 61 | 64 20 20 20 20 53 61 76 | Threa|d Sav|
|000016e0| 65 20 20 53 61 76 65 64 | 69 72 20 20 4d 61 69 6c |e Saved|ir Mail|
|000016f0| 64 69 72 20 20 53 69 67 | 66 69 6c 65 20 20 20 20 |dir Sig|file |
|00001700| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00001710| 20 20 20 20 20 20 20 20 | 20 55 6e 72 65 61 64 20 | | Unread |
|00001720| 20 55 6e 74 68 72 65 61 | 64 20 20 4d 61 69 6c 20 | Unthrea|d Mail |
|00001730| 20 50 72 6f 63 54 79 70 | 20 20 4d 61 69 6c 62 6f | ProcTyp| Mailbo|
|00001740| 78 0a 58 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |x.X-----|--------|
|00001750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001770| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001780| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001790| 0a 58 6a 75 6e 6b 20 20 | 20 20 20 20 20 20 20 6c |.Xjunk | l|
|000017a0| 6f 63 61 6c 20 20 20 20 | 20 55 6e 72 65 61 64 20 |ocal | Unread |
|000017b0| 20 54 68 72 65 61 64 20 | 20 20 20 4e 6f 6e 65 20 | Thread | None |
|000017c0| 20 44 65 66 61 75 6c 74 | 20 20 44 65 66 61 75 6c | Default| Defaul|
|000017d0| 74 20 20 44 65 66 61 75 | 6c 74 0a 58 61 6c 74 2e |t Defau|lt.Xalt.|
|000017e0| 73 6f 75 72 63 65 73 20 | 20 31 2e 33 2e 33 2e 33 |sources | 1.3.3.3|
|000017f0| 20 20 20 52 65 61 64 20 | 20 20 20 54 68 72 65 61 | Read | Threa|
|00001800| 64 20 20 20 20 53 61 76 | 65 20 20 24 53 52 43 2f |d Sav|e $SRC/|
|00001810| 61 6c 74 20 44 65 66 61 | 75 6c 74 20 20 7e 2f 2e |alt Defa|ult ~/.|
|00001820| 53 69 67 2d 61 6c 74 0a | 58 0a 58 41 64 64 20 61 |Sig-alt.|X.XAdd a|
|00001830| 20 6d 65 6e 75 20 69 6e | 74 65 72 66 61 63 65 20 | menu in|terface |
|00001840| 74 6f 20 64 65 66 69 6e | 65 20 61 6c 6c 20 74 68 |to defin|e all th|
|00001850| 69 73 2e 20 41 6c 73 6f | 20 61 64 64 20 65 64 69 |is. Also| add edi|
|00001860| 74 20 6d 65 6e 75 20 66 | 6f 72 20 65 6e 74 72 69 |t menu f|or entri|
|00001870| 65 73 20 69 6e 0a 58 6b | 69 6c 6c 20 66 69 6c 65 |es in.Xk|ill file|
|00001880| 2e 0a 58 0a 58 45 61 63 | 68 20 67 72 6f 75 70 20 |..X.XEac|h group |
|00001890| 63 6f 75 6c 64 20 68 61 | 76 65 20 61 20 66 69 65 |could ha|ve a fie|
|000018a0| 6c 64 20 74 6f 20 73 61 | 79 20 77 68 69 63 68 20 |ld to sa|y which |
|000018b0| 4e 4e 54 50 2f 6c 6f 63 | 61 6c 20 63 6f 6e 6e 65 |NNTP/loc|al conne|
|000018c0| 63 74 69 6f 6e 20 74 6f | 20 75 73 65 20 73 6f 0a |ction to| use so.|
|000018d0| 58 61 73 20 74 6f 20 62 | 65 20 61 62 6c 65 20 74 |Xas to b|e able t|
|000018e0| 6f 20 70 6c 75 67 20 69 | 6e 74 6f 20 64 69 66 66 |o plug i|nto diff|
|000018f0| 65 72 65 6e 74 20 4e 4e | 54 50 20 73 65 72 76 65 |erent NN|TP serve|
|00001900| 72 73 20 66 6f 72 20 64 | 69 66 66 65 72 65 6e 74 |rs for d|ifferent|
|00001910| 20 6e 65 77 73 67 72 6f | 75 70 73 0a 45 4e 44 5f | newsgro|ups.END_|
|00001920| 4f 46 5f 46 49 4c 45 0a | 20 20 69 66 20 74 65 73 |OF_FILE.| if tes|
|00001930| 74 20 34 39 35 38 20 2d | 6e 65 20 60 77 63 20 2d |t 4958 -|ne `wc -|
|00001940| 63 20 3c 27 54 4f 44 4f | 27 60 3b 20 74 68 65 6e |c <'TODO|'`; then|
|00001950| 0a 20 20 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |. ech|o shar: |
|00001960| 5c 22 27 54 4f 44 4f 27 | 5c 22 20 75 6e 70 61 63 |\"'TODO'|\" unpac|
|00001970| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00001980| 69 7a 65 21 0a 20 20 66 | 69 0a 20 20 23 20 65 6e |ize!. f|i. # en|
|00001990| 64 20 6f 66 20 27 54 4f | 44 4f 27 0a 66 69 0a 69 |d of 'TO|DO'.fi.i|
|000019a0| 66 20 74 65 73 74 20 2d | 66 20 27 61 72 74 2e 63 |f test -|f 'art.c|
|000019b0| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|000019c0| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|000019d0| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|000019e0| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|000019f0| 6e 67 20 66 69 6c 65 20 | 5c 22 27 61 72 74 2e 63 |ng file |\"'art.c|
|00001a00| 27 5c 22 0a 65 6c 73 65 | 0a 20 20 65 63 68 6f 20 |'\".else|. echo |
|00001a10| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00001a20| 20 5c 22 27 61 72 74 2e | 63 27 5c 22 20 5c 28 32 | \"'art.|c'\" \(2|
|00001a30| 32 38 33 38 20 63 68 61 | 72 61 63 74 65 72 73 5c |2838 cha|racters\|
|00001a40| 29 0a 20 20 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |). sed |"s/^X//"|
|00001a50| 20 3e 27 61 72 74 2e 63 | 27 20 3c 3c 27 45 4e 44 | >'art.c|' <<'END|
|00001a60| 5f 4f 46 5f 46 49 4c 45 | 27 0a 58 2f 2a 0a 58 20 |_OF_FILE|'.X/*.X |
|00001a70| 2a 20 20 50 72 6f 6a 65 | 63 74 20 20 20 3a 20 74 |* Proje|ct : t|
|00001a80| 69 6e 20 2d 20 61 20 74 | 68 72 65 61 64 65 64 20 |in - a t|hreaded |
|00001a90| 4e 65 74 6e 65 77 73 20 | 72 65 61 64 65 72 0a 58 |Netnews |reader.X|
|00001aa0| 20 2a 20 20 4d 6f 64 75 | 6c 65 20 20 20 20 3a 20 | * Modu|le : |
|00001ab0| 61 72 74 2e 63 0a 58 20 | 2a 20 20 41 75 74 68 6f |art.c.X |* Autho|
|00001ac0| 72 20 20 20 20 3a 20 49 | 2e 4c 65 61 20 26 20 52 |r : I|.Lea & R|
|00001ad0| 2e 53 6b 72 65 6e 74 61 | 0a 58 20 2a 20 20 43 72 |.Skrenta|.X * Cr|
|00001ae0| 65 61 74 65 64 20 20 20 | 3a 20 30 31 2d 30 34 2d |eated |: 01-04-|
|00001af0| 39 31 0a 58 20 2a 20 20 | 55 70 64 61 74 65 64 20 |91.X * |Updated |
|00001b00| 20 20 3a 20 31 32 2d 30 | 35 2d 39 32 0a 58 20 2a | : 12-0|5-92.X *|
|00001b10| 20 20 4e 6f 74 65 73 20 | 20 20 20 20 3a 0a 58 20 | Notes | :.X |
|00001b20| 2a 20 20 43 6f 70 79 72 | 69 67 68 74 20 3a 20 28 |* Copyr|ight : (|
|00001b30| 63 29 20 43 6f 70 79 72 | 69 67 68 74 20 31 39 39 |c) Copyr|ight 199|
|00001b40| 31 2d 39 32 20 62 79 20 | 49 61 69 6e 20 4c 65 61 |1-92 by |Iain Lea|
|00001b50| 20 26 20 52 69 63 68 20 | 53 6b 72 65 6e 74 61 0a | & Rich |Skrenta.|
|00001b60| 58 20 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X * | |
|00001b70| 20 59 6f 75 20 6d 61 79 | 20 20 66 72 65 65 6c 79 | You may| freely|
|00001b80| 20 20 63 6f 70 79 20 6f | 72 20 20 72 65 64 69 73 | copy o|r redis|
|00001b90| 74 72 69 62 75 74 65 20 | 20 74 68 69 73 20 73 6f |tribute | this so|
|00001ba0| 66 74 77 61 72 65 2c 0a | 58 20 2a 20 20 20 20 20 |ftware,.|X * |
|00001bb0| 20 20 20 20 20 20 20 20 | 20 73 6f 20 20 6c 6f 6e | | so lon|
|00001bc0| 67 20 61 73 20 74 68 65 | 72 65 20 69 73 20 6e 6f |g as the|re is no|
|00001bd0| 20 70 72 6f 66 69 74 20 | 6d 61 64 65 20 66 72 6f | profit |made fro|
|00001be0| 6d 20 69 74 73 20 75 73 | 65 2c 20 73 61 6c 65 0a |m its us|e, sale.|
|00001bf0| 58 20 2a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X * | |
|00001c00| 20 74 72 61 64 65 20 6f | 72 20 20 72 65 70 72 6f | trade o|r repro|
|00001c10| 64 75 63 74 69 6f 6e 2e | 20 20 59 6f 75 20 6d 61 |duction.| You ma|
|00001c20| 79 20 6e 6f 74 20 63 68 | 61 6e 67 65 20 74 68 69 |y not ch|ange thi|
|00001c30| 73 20 63 6f 70 79 2d 0a | 58 20 2a 20 20 20 20 20 |s copy-.|X * |
|00001c40| 20 20 20 20 20 20 20 20 | 20 72 69 67 68 74 20 6e | | right n|
|00001c50| 6f 74 69 63 65 2c 20 61 | 6e 64 20 69 74 20 6d 75 |otice, a|nd it mu|
|00001c60| 73 74 20 62 65 20 69 6e | 63 6c 75 64 65 64 20 69 |st be in|cluded i|
|00001c70| 6e 20 61 6e 79 20 63 6f | 70 79 20 6d 61 64 65 0a |n any co|py made.|
|00001c80| 58 20 2a 2f 0a 58 0a 58 | 23 69 6e 63 6c 75 64 65 |X */.X.X|#include|
|00001c90| 09 22 74 69 6e 2e 68 22 | 0a 58 0a 58 63 68 61 72 |."tin.h"|.X.Xchar|
|00001ca0| 20 69 6e 64 65 78 5f 66 | 69 6c 65 5b 50 41 54 48 | index_f|ile[PATH|
|00001cb0| 5f 4c 45 4e 5d 3b 0a 58 | 63 68 61 72 20 2a 67 6c |_LEN];.X|char *gl|
|00001cc0| 6f 62 5f 61 72 74 5f 67 | 72 6f 75 70 3b 0a 58 73 |ob_art_g|roup;.Xs|
|00001cd0| 74 61 74 69 63 20 6c 6f | 6e 67 20 6c 61 73 74 5f |tatic lo|ng last_|
|00001ce0| 72 65 61 64 5f 61 72 74 | 69 63 6c 65 3b 0a 58 0a |read_art|icle;.X.|
|00001cf0| 58 0a 58 2f 2a 0a 58 20 | 2a 20 20 43 6f 6e 73 74 |X.X/*.X |* Const|
|00001d00| 72 75 63 74 20 74 68 65 | 20 70 6f 69 6e 74 65 72 |ruct the| pointer|
|00001d10| 73 20 74 6f 20 74 68 65 | 20 62 61 73 65 6e 6f 74 |s to the| basenot|
|00001d20| 65 73 20 6f 66 20 65 61 | 63 68 20 74 68 72 65 61 |es of ea|ch threa|
|00001d30| 64 0a 58 20 2a 20 20 61 | 72 74 73 5b 5d 20 63 6f |d.X * a|rts[] co|
|00001d40| 6e 74 61 69 6e 73 20 65 | 76 65 72 79 20 61 72 74 |ntains e|very art|
|00001d50| 69 63 6c 65 20 69 6e 20 | 74 68 65 20 67 72 6f 75 |icle in |the grou|
|00001d60| 70 2e 20 20 69 6e 74 68 | 72 65 61 64 20 69 73 0a |p. inth|read is.|
|00001d70| 58 20 2a 20 20 73 65 74 | 20 6f 6e 20 65 61 63 68 |X * set| on each|
|00001d80| 20 61 72 74 69 63 6c 65 | 20 74 68 61 74 20 69 73 | article| that is|
|00001d90| 20 61 66 74 65 72 20 74 | 68 65 20 66 69 72 73 74 | after t|he first|
|00001da0| 20 61 72 74 69 63 6c 65 | 20 69 6e 20 74 68 65 0a | article| in the.|
|00001db0| 58 20 2a 20 20 74 68 72 | 65 61 64 2e 20 20 41 72 |X * thr|ead. Ar|
|00001dc0| 74 69 63 6c 65 73 20 77 | 68 69 63 68 20 68 61 76 |ticles w|hich hav|
|00001dd0| 65 20 62 65 65 6e 20 65 | 78 70 69 72 65 64 20 68 |e been e|xpired h|
|00001de0| 61 76 65 20 74 68 65 69 | 72 20 74 68 72 65 61 64 |ave thei|r thread|
|00001df0| 0a 58 20 2a 20 20 73 65 | 74 20 74 6f 20 2d 32 20 |.X * se|t to -2 |
|00001e00| 28 41 52 54 5f 45 58 50 | 49 52 45 44 29 2e 0a 58 |(ART_EXP|IRED)..X|
|00001e10| 20 2a 2f 0a 58 0a 58 76 | 6f 69 64 20 66 69 6e 64 | */.X.Xv|oid find|
|00001e20| 5f 62 61 73 65 20 28 6f | 6e 6c 79 5f 75 6e 72 65 |_base (o|nly_unre|
|00001e30| 61 64 29 0a 58 09 69 6e | 74 20 6f 6e 6c 79 5f 75 |ad).X.in|t only_u|
|00001e40| 6e 72 65 61 64 3b 0a 58 | 7b 0a 58 09 72 65 67 69 |nread;.X|{.X.regi|
|00001e50| 73 74 65 72 20 69 6e 74 | 20 69 3b 0a 58 09 72 65 |ster int| i;.X.re|
|00001e60| 67 69 73 74 65 72 20 69 | 6e 74 20 6a 3b 0a 58 0a |gister i|nt j;.X.|
|00001e70| 58 09 74 6f 70 5f 62 61 | 73 65 20 3d 20 30 3b 0a |X.top_ba|se = 0;.|
|00001e80| 58 0a 58 09 64 65 62 75 | 67 5f 70 72 69 6e 74 5f |X.X.debu|g_print_|
|00001e90| 61 72 74 73 20 28 29 3b | 0a 58 0a 58 09 69 66 20 |arts ();|.X.X.if |
|00001ea0| 28 6f 6e 6c 79 5f 75 6e | 72 65 61 64 29 20 7b 0a |(only_un|read) {.|
|00001eb0| 58 09 09 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 |X..for (|i = 0; i|
|00001ec0| 20 3c 20 74 6f 70 3b 20 | 69 2b 2b 29 20 7b 0a 58 | < top; |i++) {.X|
|00001ed0| 09 09 09 69 66 20 28 49 | 47 4e 4f 52 45 5f 41 52 |...if (I|GNORE_AR|
|00001ee0| 54 28 69 29 20 7c 7c 20 | 61 72 74 73 5b 69 5d 2e |T(i) || |arts[i].|
|00001ef0| 69 6e 74 68 72 65 61 64 | 20 21 3d 20 46 41 4c 53 |inthread| != FALS|
|00001f00| 45 29 20 7b 0a 58 09 09 | 09 09 63 6f 6e 74 69 6e |E) {.X..|..contin|
|00001f10| 75 65 3b 0a 58 09 09 09 | 7d 09 0a 58 09 09 09 69 |ue;.X...|}..X...i|
|00001f20| 66 20 28 74 6f 70 5f 62 | 61 73 65 20 3e 3d 20 6d |f (top_b|ase >= m|
|00001f30| 61 78 5f 61 72 74 29 20 | 7b 0a 58 09 09 09 09 65 |ax_art) |{.X....e|
|00001f40| 78 70 61 6e 64 5f 61 72 | 74 20 28 29 3b 0a 58 09 |xpand_ar|t ();.X.|
|00001f50| 09 09 7d 0a 58 09 09 09 | 69 66 20 28 61 72 74 73 |..}.X...|if (arts|
|00001f60| 5b 69 5d 2e 75 6e 72 65 | 61 64 20 3d 3d 20 41 52 |[i].unre|ad == AR|
|00001f70| 54 5f 55 4e 52 45 41 44 | 29 20 7b 0a 58 09 09 09 |T_UNREAD|) {.X...|
|00001f80| 09 62 61 73 65 5b 74 6f | 70 5f 62 61 73 65 2b 2b |.base[to|p_base++|
|00001f90| 5d 20 3d 20 69 3b 0a 58 | 09 09 09 7d 20 65 6c 73 |] = i;.X|...} els|
|00001fa0| 65 20 7b 0a 58 09 09 09 | 09 66 6f 72 20 28 6a 20 |e {.X...|.for (j |
|00001fb0| 3d 20 69 20 3b 20 6a 20 | 3e 3d 20 30 20 3b 20 6a |= i ; j |>= 0 ; j|
|00001fc0| 20 3d 20 61 72 74 73 5b | 6a 5d 2e 74 68 72 65 61 | = arts[|j].threa|
|00001fd0| 64 29 20 7b 0a 58 09 09 | 09 09 09 69 66 20 28 61 |d) {.X..|...if (a|
|00001fe0| 72 74 73 5b 6a 5d 2e 75 | 6e 72 65 61 64 29 20 7b |rts[j].u|nread) {|
|00001ff0| 0a 58 09 09 09 09 09 09 | 62 61 73 65 5b 74 6f 70 |.X......|base[top|
|00002000| 5f 62 61 73 65 2b 2b 5d | 20 3d 20 69 3b 0a 58 09 |_base++]| = i;.X.|
|00002010| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 09 |.....bre|ak;.X...|
|00002020| 09 09 7d 0a 58 09 09 09 | 09 7d 0a 58 09 09 09 7d |..}.X...|.}.X...}|
|00002030| 0a 58 09 09 7d 0a 58 09 | 7d 20 65 6c 73 65 20 7b |.X..}.X.|} else {|
|00002040| 0a 58 09 09 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 |.X..for |(i = 0; |
|00002050| 69 20 3c 20 74 6f 70 3b | 20 69 2b 2b 29 20 7b 0a |i < top;| i++) {.|
|00002060| 58 09 09 09 69 66 20 28 | 49 47 4e 4f 52 45 5f 41 |X...if (|IGNORE_A|
|00002070| 52 54 28 69 29 20 7c 7c | 20 61 72 74 73 5b 69 5d |RT(i) ||| arts[i]|
|00002080| 2e 69 6e 74 68 72 65 61 | 64 20 21 3d 20 46 41 4c |.inthrea|d != FAL|
|00002090| 53 45 29 20 7b 0a 58 09 | 09 09 09 63 6f 6e 74 69 |SE) {.X.|...conti|
|000020a0| 6e 75 65 3b 0a 58 09 09 | 09 7d 09 0a 58 09 09 09 |nue;.X..|.}..X...|
|000020b0| 69 66 20 28 74 6f 70 5f | 62 61 73 65 20 3e 3d 20 |if (top_|base >= |
|000020c0| 6d 61 78 5f 61 72 74 29 | 20 7b 0a 58 09 09 09 09 |max_art)| {.X....|
|000020d0| 65 78 70 61 6e 64 5f 61 | 72 74 20 28 29 3b 0a 58 |expand_a|rt ();.X|
|000020e0| 09 09 09 7d 0a 58 09 09 | 09 62 61 73 65 5b 74 6f |...}.X..|.base[to|
|000020f0| 70 5f 62 61 73 65 2b 2b | 5d 20 3d 20 69 3b 0a 58 |p_base++|] = i;.X|
|00002100| 09 09 7d 0a 58 09 7d 0a | 58 7d 0a 58 0a 58 2f 2a |..}.X.}.|X}.X.X/*|
|00002110| 20 0a 58 20 2a 20 20 43 | 6f 75 6e 74 20 74 68 65 | .X * C|ount the|
|00002120| 20 6e 75 6d 62 65 72 20 | 6f 66 20 6e 6f 6e 2d 65 | number |of non-e|
|00002130| 78 70 69 72 65 64 20 61 | 72 74 69 63 6c 65 73 20 |xpired a|rticles |
|00002140| 69 6e 20 61 72 74 73 5b | 5d 0a 58 20 2a 2f 0a 58 |in arts[|].X */.X|
|00002150| 0a 58 69 6e 74 20 6e 75 | 6d 5f 6f 66 5f 61 72 74 |.Xint nu|m_of_art|
|00002160| 73 20 28 29 0a 58 7b 0a | 58 09 69 6e 74 20 73 75 |s ().X{.|X.int su|
|00002170| 6d 20 3d 20 30 3b 0a 58 | 09 72 65 67 69 73 74 65 |m = 0;.X|.registe|
|00002180| 72 20 69 6e 74 20 69 3b | 0a 58 0a 58 09 66 6f 72 |r int i;|.X.X.for|
|00002190| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 74 6f 70 | (i = 0;| i < top|
|000021a0| 3b 20 69 2b 2b 29 20 7b | 0a 58 09 09 69 66 20 28 |; i++) {|.X..if (|
|000021b0| 61 72 74 73 5b 69 5d 2e | 74 68 72 65 61 64 20 21 |arts[i].|thread !|
|000021c0| 3d 20 41 52 54 5f 45 58 | 50 49 52 45 44 29 20 7b |= ART_EX|PIRED) {|
|000021d0| 0a 58 09 09 09 73 75 6d | 2b 2b 3b 0a 58 09 09 7d |.X...sum|++;.X..}|
|000021e0| 0a 58 09 7d 0a 58 0a 58 | 09 72 65 74 75 72 6e 20 |.X.}.X.X|.return |
|000021f0| 73 75 6d 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 20 |sum;.X}.|X.X/*.X |
|00002200| 2a 20 20 44 6f 20 77 65 | 20 68 61 76 65 20 61 6e |* Do we| have an|
|00002210| 20 65 6e 74 72 79 20 66 | 6f 72 20 61 72 74 69 63 | entry f|or artic|
|00002220| 6c 65 20 61 72 74 3f 0a | 58 20 2a 2f 0a 58 0a 58 |le art?.|X */.X.X|
|00002230| 69 6e 74 20 76 61 6c 69 | 64 5f 61 72 74 6e 75 6d |int vali|d_artnum|
|00002240| 20 28 61 72 74 29 0a 58 | 09 6c 6f 6e 67 20 61 72 | (art).X|.long ar|
|00002250| 74 3b 0a 58 7b 0a 58 09 | 72 65 67 69 73 74 65 72 |t;.X{.X.|register|
|00002260| 20 69 6e 74 20 69 3b 0a | 58 0a 58 09 66 6f 72 20 | int i;.|X.X.for |
|00002270| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 74 6f 70 3b |(i = 0; |i < top;|
|00002280| 20 69 2b 2b 29 0a 58 09 | 09 69 66 20 28 61 72 74 | i++).X.|.if (art|
|00002290| 73 5b 69 5d 2e 61 72 74 | 6e 75 6d 20 3d 3d 20 61 |s[i].art|num == a|
|000022a0| 72 74 29 0a 58 09 09 09 | 72 65 74 75 72 6e 20 69 |rt).X...|return i|
|000022b0| 3b 0a 58 0a 58 09 72 65 | 74 75 72 6e 20 2d 31 3b |;.X.X.re|turn -1;|
|000022c0| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 20 52 |.X}.X.X/|*.X * R|
|000022d0| 65 74 75 72 6e 20 54 52 | 55 45 20 69 66 20 61 72 |eturn TR|UE if ar|
|000022e0| 74 73 5b 5d 20 63 6f 6e | 74 61 69 6e 73 20 61 6e |ts[] con|tains an|
|000022f0| 79 20 65 78 70 69 72 65 | 64 20 61 72 74 69 63 6c |y expire|d articl|
|00002300| 65 73 0a 58 20 2a 20 20 | 28 61 72 74 69 63 6c 65 |es.X * |(article|
|00002310| 73 20 77 65 20 68 61 76 | 65 20 61 6e 20 65 6e 74 |s we hav|e an ent|
|00002320| 72 79 20 66 6f 72 20 77 | 68 69 63 68 20 64 6f 6e |ry for w|hich don|
|00002330| 27 74 20 68 61 76 65 20 | 61 20 63 6f 72 72 65 73 |'t have |a corres|
|00002340| 70 6f 6e 64 69 6e 67 0a | 58 20 2a 20 20 20 61 72 |ponding.|X * ar|
|00002350| 74 69 63 6c 65 20 66 69 | 6c 65 20 69 6e 20 74 68 |ticle fi|le in th|
|00002360| 65 20 73 70 6f 6f 6c 20 | 64 69 72 65 63 74 6f 72 |e spool |director|
|00002370| 79 29 0a 58 20 2a 2f 0a | 58 0a 58 69 6e 74 20 70 |y).X */.|X.Xint p|
|00002380| 75 72 67 65 5f 6e 65 65 | 64 65 64 20 28 29 0a 58 |urge_nee|ded ().X|
|00002390| 7b 0a 58 09 72 65 67 69 | 73 74 65 72 20 69 6e 74 |{.X.regi|ster int|
|000023a0| 20 69 3b 0a 58 0a 58 09 | 66 6f 72 20 28 69 20 3d | i;.X.X.|for (i =|
|000023b0| 20 30 3b 20 69 20 3c 20 | 74 6f 70 3b 20 69 2b 2b | 0; i < |top; i++|
|000023c0| 29 0a 58 09 09 69 66 20 | 28 61 72 74 73 5b 69 5d |).X..if |(arts[i]|
|000023d0| 2e 74 68 72 65 61 64 20 | 3d 3d 20 41 52 54 5f 45 |.thread |== ART_E|
|000023e0| 58 50 49 52 45 44 29 0a | 58 09 09 09 72 65 74 75 |XPIRED).|X...retu|
|000023f0| 72 6e 20 54 52 55 45 3b | 0a 58 0a 58 09 72 65 74 |rn TRUE;|.X.X.ret|
|00002400| 75 72 6e 20 46 41 4c 53 | 45 3b 0a 58 7d 0a 58 0a |urn FALS|E;.X}.X.|
|00002410| 58 2f 2a 0a 58 20 2a 20 | 20 4d 61 69 6e 20 67 72 |X/*.X * | Main gr|
|00002420| 6f 75 70 20 69 6e 64 65 | 78 69 6e 67 20 72 6f 75 |oup inde|xing rou|
|00002430| 74 69 6e 65 2e 20 20 47 | 72 6f 75 70 20 73 68 6f |tine. G|roup sho|
|00002440| 75 6c 64 20 62 65 20 74 | 68 65 20 6e 61 6d 65 20 |uld be t|he name |
|00002450| 6f 66 20 74 68 65 0a 58 | 20 2a 20 20 6e 65 77 73 |of the.X| * news|
|00002460| 67 72 6f 75 70 2c 20 69 | 2e 65 2e 20 22 63 6f 6d |group, i|.e. "com|
|00002470| 70 2e 75 6e 69 78 2e 61 | 6d 69 67 61 22 2e 20 20 |p.unix.a|miga". |
|00002480| 67 72 6f 75 70 5f 70 61 | 74 68 20 73 68 6f 75 6c |group_pa|th shoul|
|00002490| 64 20 62 65 20 74 68 65 | 0a 58 20 2a 20 20 73 61 |d be the|.X * sa|
|000024a0| 6d 65 20 62 75 74 20 77 | 69 74 68 20 74 68 65 20 |me but w|ith the |
|000024b0| 2e 27 73 20 74 75 72 6e | 65 64 20 69 6e 74 6f 20 |.'s turn|ed into |
|000024c0| 2f 27 73 3a 20 22 63 6f | 6d 70 2f 75 6e 69 78 2f |/'s: "co|mp/unix/|
|000024d0| 61 6d 69 67 61 22 0a 58 | 20 2a 0a 58 20 2a 20 20 |amiga".X| *.X * |
|000024e0| 57 69 6c 6c 20 72 65 61 | 64 20 61 6e 79 20 65 78 |Will rea|d any ex|
|000024f0| 69 73 74 69 6e 67 20 69 | 6e 64 65 78 2c 20 63 72 |isting i|ndex, cr|
|00002500| 65 61 74 65 20 6f 72 20 | 69 6e 63 72 65 6d 65 6e |eate or |incremen|
|00002510| 74 61 6c 6c 79 20 75 70 | 64 61 74 65 0a 58 20 2a |tally up|date.X *|
|00002520| 20 20 74 68 65 20 69 6e | 64 65 78 20 62 79 20 6c | the in|dex by l|
|00002530| 6f 6f 6b 69 6e 67 20 61 | 74 20 74 68 65 20 61 72 |ooking a|t the ar|
|00002540| 74 69 63 6c 65 73 20 69 | 6e 20 74 68 65 20 73 70 |ticles i|n the sp|
|00002550| 6f 6f 6c 20 64 69 72 65 | 63 74 6f 72 79 2c 0a 58 |ool dire|ctory,.X|
|00002560| 20 2a 20 20 61 6e 64 20 | 61 74 74 65 6d 70 74 20 | * and |attempt |
|00002570| 74 6f 20 77 72 69 74 65 | 20 61 20 6e 65 77 20 69 |to write| a new i|
|00002580| 6e 64 65 78 20 69 66 20 | 6e 65 63 65 73 73 61 72 |ndex if |necessar|
|00002590| 79 2e 0a 58 20 2a 2f 0a | 58 0a 58 76 6f 69 64 20 |y..X */.|X.Xvoid |
|000025a0| 69 6e 64 65 78 5f 67 72 | 6f 75 70 20 28 67 72 6f |index_gr|oup (gro|
|000025b0| 75 70 2c 20 67 72 6f 75 | 70 5f 70 61 74 68 29 0a |up, grou|p_path).|
|000025c0| 58 09 63 68 61 72 20 2a | 67 72 6f 75 70 3b 0a 58 |X.char *|group;.X|
|000025d0| 09 63 68 61 72 20 2a 67 | 72 6f 75 70 5f 70 61 74 |.char *g|roup_pat|
|000025e0| 68 3b 0a 58 7b 0a 58 09 | 69 6e 74 20 6b 69 6c 6c |h;.X{.X.|int kill|
|000025f0| 65 64 20 3d 20 46 41 4c | 53 45 3b 0a 58 09 69 6e |ed = FAL|SE;.X.in|
|00002600| 74 20 6d 6f 64 69 66 69 | 65 64 20 3d 20 46 41 4c |t modifi|ed = FAL|
|00002610| 53 45 3b 0a 58 09 67 6c | 6f 62 5f 61 72 74 5f 67 |SE;.X.gl|ob_art_g|
|00002620| 72 6f 75 70 20 3d 20 67 | 72 6f 75 70 3b 0a 58 0a |roup = g|roup;.X.|
|00002630| 58 09 73 65 74 5f 73 69 | 67 6e 61 6c 73 5f 61 72 |X.set_si|gnals_ar|
|00002640| 74 20 28 29 3b 0a 58 09 | 0a 58 09 69 66 20 28 21 |t ();.X.|.X.if (!|
|00002650| 20 75 70 64 61 74 65 29 | 20 7b 0a 58 09 09 73 70 | update)| {.X..sp|
|00002660| 72 69 6e 74 66 20 28 6d | 73 67 2c 20 74 78 74 5f |rintf (m|sg, txt_|
|00002670| 67 72 6f 75 70 2c 20 67 | 72 6f 75 70 29 3b 0a 58 |group, g|roup);.X|
|00002680| 09 09 77 61 69 74 5f 6d | 65 73 73 61 67 65 20 28 |..wait_m|essage (|
|00002690| 6d 73 67 29 3b 0a 58 09 | 7d 0a 58 09 68 61 73 68 |msg);.X.|}.X.hash|
|000026a0| 5f 72 65 63 6c 61 69 6d | 20 28 29 3b 0a 58 09 66 |_reclaim| ();.X.f|
|000026b0| 72 65 65 5f 61 72 74 5f | 61 72 72 61 79 20 28 29 |ree_art_|array ()|
|000026c0| 3b 0a 58 0a 58 09 2f 2a | 0a 58 09 20 2a 20 20 6c |;.X.X./*|.X. * l|
|000026d0| 6f 61 64 20 61 72 74 69 | 63 6c 65 73 20 66 72 6f |oad arti|cles fro|
|000026e0| 6d 20 69 6e 64 65 78 20 | 66 69 6c 65 20 69 66 20 |m index |file if |
|000026f0| 69 74 20 65 78 69 73 74 | 73 0a 58 09 20 2a 2f 0a |it exist|s.X. */.|
|00002700| 58 09 72 65 61 64 5f 69 | 6e 64 65 78 5f 66 69 6c |X.read_i|ndex_fil|
|00002710| 65 20 28 67 72 6f 75 70 | 29 3b 0a 58 0a 58 09 2f |e (group|);.X.X./|
|00002720| 2a 0a 58 09 20 2a 20 20 | 61 64 64 20 61 6e 79 20 |*.X. * |add any |
|00002730| 61 72 74 69 63 6c 65 73 | 20 74 6f 20 61 72 74 73 |articles| to arts|
|00002740| 5b 5d 20 74 68 61 74 20 | 61 72 65 20 6e 65 77 20 |[] that |are new |
|00002750| 6f 72 20 77 65 72 65 20 | 6b 69 6c 6c 65 64 0a 58 |or were |killed.X|
|00002760| 09 20 2a 2f 0a 58 09 6d | 6f 64 69 66 69 65 64 20 |. */.X.m|odified |
|00002770| 3d 20 72 65 61 64 5f 67 | 72 6f 75 70 20 28 67 72 |= read_g|roup (gr|
|00002780| 6f 75 70 2c 20 67 72 6f | 75 70 5f 70 61 74 68 29 |oup, gro|up_path)|
|00002790| 3b 0a 58 0a 58 09 69 66 | 20 28 6d 6f 64 69 66 69 |;.X.X.if| (modifi|
|000027a0| 65 64 20 7c 7c 20 70 75 | 72 67 65 5f 6e 65 65 64 |ed || pu|rge_need|
|000027b0| 65 64 20 28 29 29 20 7b | 0a 58 09 09 77 72 69 74 |ed ()) {|.X..writ|
|000027c0| 65 5f 69 6e 64 65 78 5f | 66 69 6c 65 20 28 67 72 |e_index_|file (gr|
|000027d0| 6f 75 70 29 3b 0a 58 09 | 7d 0a 58 09 72 65 61 64 |oup);.X.|}.X.read|
|000027e0| 5f 6e 65 77 73 72 63 5f | 6c 69 6e 65 20 28 67 72 |_newsrc_|line (gr|
|000027f0| 6f 75 70 29 3b 0a 58 09 | 6b 69 6c 6c 65 64 20 3d |oup);.X.|killed =|
|00002800| 20 6b 69 6c 6c 5f 61 6e | 79 5f 61 72 74 69 63 6c | kill_an|y_articl|
|00002810| 65 73 20 28 67 72 6f 75 | 70 29 3b 20 2f 2a 20 64 |es (grou|p); /* d|
|00002820| 6f 20 61 66 74 65 72 20 | 72 65 61 64 5f 6e 65 77 |o after |read_new|
|00002830| 73 72 63 5f 6c 69 6e 65 | 28 29 20 2a 2f 0a 58 09 |src_line|() */.X.|
|00002840| 6d 61 6b 65 5f 74 68 72 | 65 61 64 73 20 28 46 41 |make_thr|eads (FA|
|00002850| 4c 53 45 29 3b 0a 58 09 | 66 69 6e 64 5f 62 61 73 |LSE);.X.|find_bas|
|00002860| 65 20 28 73 68 6f 77 5f | 6f 6e 6c 79 5f 75 6e 72 |e (show_|only_unr|
|00002870| 65 61 64 29 3b 0a 58 09 | 0a 58 09 69 66 20 28 28 |ead);.X.|.X.if ((|
|00002880| 6d 6f 64 69 66 69 65 64 | 20 7c 7c 20 6b 69 6c 6c |modified| || kill|
|00002890| 65 64 29 20 26 26 20 21 | 20 75 70 64 61 74 65 29 |ed) && !| update)|
|000028a0| 20 7b 0a 58 09 09 63 6c | 65 61 72 5f 6d 65 73 73 | {.X..cl|ear_mess|
|000028b0| 61 67 65 20 28 29 3b 0a | 58 09 7d 0a 58 7d 0a 58 |age ();.|X.}.X}.X|
|000028c0| 0a 58 2f 2a 0a 58 20 2a | 20 20 49 6e 64 65 78 20 |.X/*.X *| Index |
|000028d0| 61 20 67 72 6f 75 70 2e | 20 20 41 73 73 75 6d 65 |a group.| Assume|
|000028e0| 73 20 61 6e 79 20 65 78 | 69 73 74 69 6e 67 20 69 |s any ex|isting i|
|000028f0| 6e 64 65 78 20 68 61 73 | 20 61 6c 72 65 61 64 79 |ndex has| already|
|00002900| 20 62 65 65 6e 0a 58 20 | 2a 20 20 6c 6f 61 64 65 | been.X |* loade|
|00002910| 64 2e 0a 58 20 2a 2f 0a | 58 0a 58 69 6e 74 20 72 |d..X */.|X.Xint r|
|00002920| 65 61 64 5f 67 72 6f 75 | 70 20 28 67 72 6f 75 70 |ead_grou|p (group|
|00002930| 2c 20 67 72 6f 75 70 5f | 70 61 74 68 29 0a 58 09 |, group_|path).X.|
|00002940| 63 68 61 72 20 2a 67 72 | 6f 75 70 3b 0a 58 09 63 |char *gr|oup;.X.c|
|00002950| 68 61 72 20 2a 67 72 6f | 75 70 5f 70 61 74 68 3b |har *gro|up_path;|
|00002960| 0a 58 7b 0a 58 09 46 49 | 4c 45 20 2a 66 70 3b 0a |.X{.X.FI|LE *fp;.|
|00002970| 58 09 69 6e 74 20 63 6f | 75 6e 74 20 3d 20 30 3b |X.int co|unt = 0;|
|00002980| 0a 58 09 69 6e 74 20 6d | 6f 64 69 66 69 65 64 20 |.X.int m|odified |
|00002990| 3d 20 46 41 4c 53 45 3b | 0a 58 09 69 6e 74 20 72 |= FALSE;|.X.int r|
|000029a0| 65 73 70 6e 75 6d 3b 0a | 58 09 6c 6f 6e 67 20 61 |espnum;.|X.long a|
|000029b0| 72 74 3b 0a 58 09 72 65 | 67 69 73 74 65 72 20 69 |rt;.X.re|gister i|
|000029c0| 6e 74 20 69 3b 0a 58 0a | 58 09 73 65 74 75 70 5f |nt i;.X.|X.setup_|
|000029d0| 62 61 73 65 20 28 67 72 | 6f 75 70 2c 20 67 72 6f |base (gr|oup, gro|
|000029e0| 75 70 5f 70 61 74 68 29 | 3b 09 2f 2a 20 6c 6f 61 |up_path)|;./* loa|
|000029f0| 64 20 61 72 74 69 63 6c | 65 20 6e 75 6d 62 65 72 |d articl|e number|
|00002a00| 73 20 69 6e 74 6f 20 62 | 61 73 65 5b 5d 20 2a 2f |s into b|ase[] */|
|00002a10| 0a 58 0a 58 09 66 6f 72 | 20 28 69 20 3d 20 30 3b |.X.X.for| (i = 0;|
|00002a20| 20 69 20 3c 20 74 6f 70 | 5f 62 61 73 65 3b 20 69 | i < top|_base; i|
|00002a30| 2b 2b 29 20 7b 09 2f 2a | 20 66 6f 72 20 65 61 63 |++) {./*| for eac|
|00002a40| 68 20 61 72 74 69 63 6c | 65 20 23 20 2a 2f 0a 58 |h articl|e # */.X|
|00002a50| 09 09 61 72 74 20 3d 20 | 62 61 73 65 5b 69 5d 3b |..art = |base[i];|
|00002a60| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 20 44 6f 20 77 |.X.X/*.X| * Do w|
|00002a70| 65 20 61 6c 72 65 61 64 | 79 20 68 61 76 65 20 74 |e alread|y have t|
|00002a80| 68 69 73 20 61 72 74 69 | 63 6c 65 20 69 6e 20 6f |his arti|cle in o|
|00002a90| 75 72 20 69 6e 64 65 78 | 3f 20 20 43 68 61 6e 67 |ur index|? Chang|
|00002aa0| 65 20 74 68 72 65 61 64 | 20 66 72 6f 6d 0a 58 20 |e thread| from.X |
|00002ab0| 2a 20 20 28 41 52 54 5f | 45 58 50 49 52 45 44 29 |* (ART_|EXPIRED)|
|00002ac0| 20 74 6f 20 28 41 52 54 | 5f 4e 4f 52 4d 41 4c 29 | to (ART|_NORMAL)|
|00002ad0| 20 69 66 20 73 6f 20 61 | 6e 64 20 73 6b 69 70 20 | if so a|nd skip |
|00002ae0| 74 68 65 20 68 65 61 64 | 65 72 20 65 61 74 69 6e |the head|er eatin|
|00002af0| 67 2e 0a 58 20 2a 2f 0a | 58 0a 58 09 09 69 66 20 |g..X */.|X.X..if |
|00002b00| 28 28 72 65 73 70 6e 75 | 6d 20 3d 20 76 61 6c 69 |((respnu|m = vali|
|00002b10| 64 5f 61 72 74 6e 75 6d | 20 28 61 72 74 29 29 20 |d_artnum| (art)) |
|00002b20| 3e 3d 20 30 20 7c 7c 20 | 61 72 74 20 3c 3d 20 6c |>= 0 || |art <= l|
|00002b30| 61 73 74 5f 72 65 61 64 | 5f 61 72 74 69 63 6c 65 |ast_read|_article|
|00002b40| 29 20 7b 0a 58 09 09 09 | 69 66 20 28 72 65 73 70 |) {.X...|if (resp|
|00002b50| 6e 75 6d 20 3e 3d 20 30 | 29 20 7b 0a 58 09 09 09 |num >= 0|) {.X...|
|00002b60| 09 61 72 74 73 5b 72 65 | 73 70 6e 75 6d 5d 2e 74 |.arts[re|spnum].t|
|00002b70| 68 72 65 61 64 20 3d 20 | 41 52 54 5f 4e 4f 52 4d |hread = |ART_NORM|
|00002b80| 41 4c 3b 0a 58 09 09 09 | 09 61 72 74 73 5b 72 65 |AL;.X...|.arts[re|
|00002b90| 73 70 6e 75 6d 5d 2e 75 | 6e 72 65 61 64 20 3d 20 |spnum].u|nread = |
|00002ba0| 41 52 54 5f 55 4e 52 45 | 41 44 3b 0a 58 09 09 09 |ART_UNRE|AD;.X...|
|00002bb0| 7d 09 0a 58 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |}..X...c|ontinue;|
|00002bc0| 0a 58 09 09 7d 0a 58 0a | 58 09 09 69 66 20 28 21 |.X..}.X.|X..if (!|
|00002bd0| 20 6d 6f 64 69 66 69 65 | 64 29 20 7b 0a 58 09 09 | modifie|d) {.X..|
|00002be0| 09 6d 6f 64 69 66 69 65 | 64 20 3d 20 54 52 55 45 |.modifie|d = TRUE|
|00002bf0| 3b 20 20 20 2f 2a 20 77 | 65 27 76 65 20 6d 6f 64 |; /* w|e've mod|
|00002c00| 69 66 69 65 64 20 74 68 | 65 20 69 6e 64 65 78 20 |ified th|e index |
|00002c10| 2a 2f 0a 58 09 09 09 09 | 09 09 09 20 20 20 2f 2a |*/.X....|... /*|
|00002c20| 20 69 74 20 77 69 6c 6c | 20 6e 65 65 64 20 74 6f | it will| need to|
|00002c30| 20 62 65 20 72 65 2d 77 | 72 69 74 74 65 6e 20 2a | be re-w|ritten *|
|00002c40| 2f 0a 58 09 09 7d 0a 58 | 0a 58 09 09 69 66 20 28 |/.X..}.X|.X..if (|
|00002c50| 28 66 70 20 3d 20 6f 70 | 65 6e 5f 68 65 61 64 65 |(fp = op|en_heade|
|00002c60| 72 5f 66 70 20 28 67 72 | 6f 75 70 5f 70 61 74 68 |r_fp (gr|oup_path|
|00002c70| 2c 20 61 72 74 29 29 20 | 3d 3d 20 28 46 49 4c 45 |, art)) |== (FILE|
|00002c80| 20 2a 29 20 30 29 20 7b | 0a 58 09 09 09 63 6f 6e | *) 0) {|.X...con|
|00002c90| 74 69 6e 75 65 3b 0a 58 | 09 09 7d 0a 58 09 09 0a |tinue;.X|..}.X...|
|00002ca0| 58 09 09 2f 2a 0a 58 09 | 09 20 2a 20 20 41 64 64 |X../*.X.|. * Add|
|00002cb0| 20 61 72 74 69 63 6c 65 | 20 74 6f 20 61 72 74 73 | article| to arts|
|00002cc0| 5b 5d 0a 58 09 09 20 2a | 2f 0a 58 09 09 69 66 20 |[].X.. *|/.X..if |
|00002cd0| 28 74 6f 70 20 3e 3d 20 | 6d 61 78 5f 61 72 74 29 |(top >= |max_art)|
|00002ce0| 0a 58 09 09 09 65 78 70 | 61 6e 64 5f 61 72 74 28 |.X...exp|and_art(|
|00002cf0| 29 3b 0a 58 0a 58 09 09 | 61 72 74 73 5b 74 6f 70 |);.X.X..|arts[top|
|00002d00| 5d 2e 61 72 74 6e 75 6d | 20 3d 20 61 72 74 3b 0a |].artnum| = art;.|
|00002d10| 58 09 09 61 72 74 73 5b | 74 6f 70 5d 2e 74 68 72 |X..arts[|top].thr|
|00002d20| 65 61 64 20 3d 20 41 52 | 54 5f 4e 4f 52 4d 41 4c |ead = AR|T_NORMAL|
|00002d30| 3b 0a 58 0a 58 09 09 73 | 65 74 5f 61 72 74 69 63 |;.X.X..s|et_artic|
|00002d40| 6c 65 20 28 26 61 72 74 | 73 5b 74 6f 70 5d 29 3b |le (&art|s[top]);|
|00002d50| 0a 58 0a 58 09 09 69 66 | 20 28 21 20 70 61 72 73 |.X.X..if| (! pars|
|00002d60| 65 5f 68 65 61 64 65 72 | 73 20 28 66 70 2c 20 26 |e_header|s (fp, &|
|00002d70| 61 72 74 73 5b 74 6f 70 | 5d 29 29 20 7b 0a 58 09 |arts[top|])) {.X.|
|00002d80| 09 09 64 65 62 75 67 5f | 6e 6e 74 70 20 28 22 72 |..debug_|nntp ("r|
|00002d90| 65 61 64 5f 67 72 6f 75 | 70 22 2c 20 22 46 41 49 |ead_grou|p", "FAI|
|00002da0| 4c 45 44 20 70 61 72 73 | 65 5f 68 65 61 64 65 72 |LED pars|e_header|
|00002db0| 28 29 22 29 3b 0a 58 09 | 09 09 63 6f 6e 74 69 6e |()");.X.|..contin|
|00002dc0| 75 65 3b 0a 58 09 09 7d | 0a 58 0a 58 09 09 66 63 |ue;.X..}|.X.X..fc|
|00002dd0| 6c 6f 73 65 20 28 66 70 | 29 3b 0a 58 09 09 6c 61 |lose (fp|);.X..la|
|00002de0| 73 74 5f 72 65 61 64 5f | 61 72 74 69 63 6c 65 20 |st_read_|article |
|00002df0| 3d 20 61 72 74 73 5b 74 | 6f 70 5d 2e 61 72 74 6e |= arts[t|op].artn|
|00002e00| 75 6d 3b 09 2f 2a 20 75 | 73 65 64 20 69 66 20 61 |um;./* u|sed if a|
|00002e10| 72 74 73 20 61 72 65 20 | 6b 69 6c 6c 65 64 20 2a |rts are |killed *|
|00002e20| 2f 0a 58 09 09 74 6f 70 | 2b 2b 3b 0a 58 0a 58 09 |/.X..top|++;.X.X.|
|00002e30| 09 69 66 20 28 2b 2b 63 | 6f 75 6e 74 20 25 20 4d |.if (++c|ount % M|
|00002e40| 4f 44 55 4c 4f 5f 43 4f | 55 4e 54 5f 4e 55 4d 20 |ODULO_CO|UNT_NUM |
|00002e50| 3d 3d 20 30 20 26 26 20 | 21 20 75 70 64 61 74 65 |== 0 && |! update|
|00002e60| 29 20 7b 0a 58 23 69 66 | 6e 64 65 66 20 53 4c 4f |) {.X#if|ndef SLO|
|00002e70| 57 5f 53 43 52 45 45 4e | 5f 55 50 44 41 54 45 0a |W_SCREEN|_UPDATE.|
|00002e80| 58 09 09 09 73 70 72 69 | 6e 74 66 20 28 6d 73 67 |X...spri|ntf (msg|
|00002e90| 2c 20 74 78 74 5f 69 6e | 64 65 78 69 6e 67 5f 6e |, txt_in|dexing_n|
|00002ea0| 75 6d 2c 20 67 72 6f 75 | 70 2c 20 63 6f 75 6e 74 |um, grou|p, count|
|00002eb0| 29 3b 0a 58 23 65 6c 73 | 65 0a 58 09 09 09 73 70 |);.X#els|e.X...sp|
|00002ec0| 72 69 6e 74 66 20 28 6d | 73 67 2c 20 74 78 74 5f |rintf (m|sg, txt_|
|00002ed0| 69 6e 64 65 78 69 6e 67 | 2c 20 67 72 6f 75 70 29 |indexing|, group)|
|00002ee0| 3b 0a 58 23 65 6e 64 69 | 66 0a 58 09 09 09 77 61 |;.X#endi|f.X...wa|
|00002ef0| 69 74 5f 6d 65 73 73 61 | 67 65 20 28 6d 73 67 29 |it_messa|ge (msg)|
|00002f00| 3b 0a 58 09 09 7d 0a 58 | 09 7d 0a 58 0a 58 09 72 |;.X..}.X|.}.X.X.r|
|00002f10| 65 74 75 72 6e 20 6d 6f | 64 69 66 69 65 64 3b 0a |eturn mo|dified;.|
|00002f20| 58 7d 0a 58 0a 58 0a 58 | 2f 2a 0a 58 20 2a 20 20 |X}.X.X.X|/*.X * |
|00002f30| 47 6f 20 74 68 72 6f 75 | 67 68 20 74 68 65 20 61 |Go throu|gh the a|
|00002f40| 72 74 69 63 6c 65 73 20 | 69 6e 20 61 72 74 73 5b |rticles |in arts[|
|00002f50| 5d 20 61 6e 64 20 75 73 | 65 20 2e 74 68 72 65 61 |] and us|e .threa|
|00002f60| 64 20 74 6f 20 73 6e 61 | 6b 65 20 74 68 72 65 61 |d to sna|ke threa|
|00002f70| 64 73 0a 58 20 2a 20 20 | 74 68 72 6f 75 67 68 20 |ds.X * |through |
|00002f80| 74 68 65 6d 2e 20 20 55 | 73 65 20 74 68 65 20 73 |them. U|se the s|
|00002f90| 75 62 6a 65 63 74 20 6c | 69 6e 65 20 74 6f 20 63 |ubject l|ine to c|
|00002fa0| 6f 6e 73 74 72 75 63 74 | 20 74 68 72 65 61 64 73 |onstruct| threads|
|00002fb0| 2e 20 20 54 68 65 0a 58 | 20 2a 20 20 66 69 72 73 |. The.X| * firs|
|00002fc0| 74 20 61 72 74 69 63 6c | 65 20 69 6e 20 61 20 74 |t articl|e in a t|
|00002fd0| 68 72 65 61 64 20 73 68 | 6f 75 6c 64 20 68 61 76 |hread sh|ould hav|
|00002fe0| 65 20 2e 69 6e 74 68 72 | 65 61 64 20 73 65 74 20 |e .inthr|ead set |
|00002ff0| 74 6f 20 46 41 4c 53 45 | 2c 20 74 68 65 0a 58 20 |to FALSE|, the.X |
|00003000| 2a 20 20 72 65 73 74 20 | 54 52 55 45 2e 20 20 4f |* rest |TRUE. O|
|00003010| 6e 6c 79 20 64 6f 20 75 | 6e 65 78 70 72 69 72 65 |nly do u|nexprire|
|00003020| 64 20 61 72 74 69 63 6c | 65 73 20 77 65 20 68 61 |d articl|es we ha|
|00003030| 76 65 6e 27 74 20 76 69 | 73 69 74 65 64 20 79 65 |ven't vi|sited ye|
|00003040| 74 0a 58 20 2a 20 20 28 | 61 72 74 73 5b 5d 2e 74 |t.X * (|arts[].t|
|00003050| 68 72 65 61 64 20 3d 3d | 20 2d 31 20 41 52 54 5f |hread ==| -1 ART_|
|00003060| 4e 4f 52 4d 41 4c 29 2e | 0a 58 20 2a 2f 0a 58 0a |NORMAL).|.X */.X.|
|00003070| 58 76 6f 69 64 20 6d 61 | 6b 65 5f 74 68 72 65 61 |Xvoid ma|ke_threa|
|00003080| 64 73 20 28 72 65 74 68 | 72 65 61 64 29 0a 58 09 |ds (reth|read).X.|
|00003090| 69 6e 74 20 72 65 74 68 | 72 65 61 64 3b 0a 58 7b |int reth|read;.X{|
|000030a0| 0a 58 09 65 78 74 65 72 | 6e 20 69 6e 74 20 63 75 |.X.exter|n int cu|
|000030b0| 72 5f 67 72 6f 75 70 6e | 75 6d 3b 0a 58 09 72 65 |r_groupn|um;.X.re|
|000030c0| 67 69 73 74 65 72 20 69 | 6e 74 20 69 3b 0a 58 09 |gister i|nt i;.X.|
|000030d0| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 6a 3b 0a |register| int j;.|
|000030e0| 58 0a 58 09 69 66 20 28 | 21 63 6d 64 5f 6c 69 6e |X.X.if (|!cmd_lin|
|000030f0| 65 29 20 7b 0a 58 09 09 | 69 66 20 28 74 68 72 65 |e) {.X..|if (thre|
|00003100| 61 64 5f 61 72 74 73 29 | 20 7b 0a 58 09 09 09 77 |ad_arts)| {.X...w|
|00003110| 61 69 74 5f 6d 65 73 73 | 61 67 65 20 28 74 78 74 |ait_mess|age (txt|
|00003120| 5f 74 68 72 65 61 64 69 | 6e 67 5f 61 72 74 73 29 |_threadi|ng_arts)|
|00003130| 3b 0a 58 09 09 7d 20 65 | 6c 73 65 20 7b 0a 58 09 |;.X..} e|lse {.X.|
|00003140| 09 09 77 61 69 74 5f 6d | 65 73 73 61 67 65 20 28 |..wait_m|essage (|
|00003150| 74 78 74 5f 75 6e 74 68 | 72 65 61 64 69 6e 67 5f |txt_unth|reading_|
|00003160| 61 72 74 73 29 3b 0a 58 | 09 09 7d 0a 58 09 7d 0a |arts);.X|..}.X.}.|
|00003170| 58 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 20 2e 74 68 |X.X./*.X|. * .th|
|00003180| 72 65 61 64 20 26 20 2e | 69 6e 74 68 72 65 61 64 |read & .|inthread|
|00003190| 20 6e 65 65 64 20 74 6f | 20 62 65 20 72 65 73 65 | need to| be rese|
|000031a0| 74 20 69 66 20 72 65 2d | 74 68 72 65 61 64 69 6e |t if re-|threadin|
|000031b0| 67 20 61 72 74 73 5b 5d | 0a 58 09 20 2a 2f 0a 58 |g arts[]|.X. */.X|
|000031c0| 09 69 66 20 28 72 65 74 | 68 72 65 61 64 20 26 26 |.if (ret|hread &&|
|000031d0| 20 61 63 74 69 76 65 5b | 6d 79 5f 67 72 6f 75 70 | active[|my_group|
|000031e0| 5b 63 75 72 5f 67 72 6f | 75 70 6e 75 6d 5d 5d 2e |[cur_gro|upnum]].|
|000031f0| 61 74 74 72 69 62 75 74 | 65 2e 74 68 72 65 61 64 |attribut|e.thread|
|00003200| 29 20 7b 0a 58 09 09 66 | 6f 72 20 28 69 3d 30 20 |) {.X..f|or (i=0 |
|00003210| 3b 20 69 20 3c 20 74 6f | 70 20 3b 20 69 2b 2b 29 |; i < to|p ; i++)|
|00003220| 20 7b 0a 58 09 09 09 61 | 72 74 73 5b 69 5d 2e 74 | {.X...a|rts[i].t|
|00003230| 68 72 65 61 64 20 3d 20 | 41 52 54 5f 4e 4f 52 4d |hread = |ART_NORM|
|00003240| 41 4c 3b 0a 58 09 09 09 | 61 72 74 73 5b 69 5d 2e |AL;.X...|arts[i].|
|00003250| 69 6e 74 68 72 65 61 64 | 20 3d 20 46 41 4c 53 45 |inthread| = FALSE|
|00003260| 3b 0a 58 09 09 7d 0a 58 | 09 7d 0a 58 0a 58 09 73 |;.X..}.X|.}.X.X.s|
|00003270| 77 69 74 63 68 20 28 73 | 6f 72 74 5f 61 72 74 5f |witch (s|ort_art_|
|00003280| 74 79 70 65 29 20 7b 0a | 58 09 09 63 61 73 65 20 |type) {.|X..case |
|00003290| 53 4f 52 54 5f 42 59 5f | 4e 4f 54 48 49 4e 47 3a |SORT_BY_|NOTHING:|
|000032a0| 09 09 2f 2a 20 64 6f 6e | 27 74 20 73 6f 72 74 20 |../* don|'t sort |
|000032b0| 61 74 20 61 6c 6c 20 2a | 2f 0a 58 09 09 09 71 73 |at all *|/.X...qs|
|000032c0| 6f 72 74 20 28 28 63 68 | 61 72 20 2a 29 20 61 72 |ort ((ch|ar *) ar|
|000032d0| 74 73 2c 20 74 6f 70 2c | 20 73 69 7a 65 6f 66 20 |ts, top,| sizeof |
|000032e0| 28 73 74 72 75 63 74 20 | 61 72 74 69 63 6c 65 5f |(struct |article_|
|000032f0| 74 29 2c 20 61 72 74 6e | 75 6d 5f 63 6f 6d 70 29 |t), artn|um_comp)|
|00003300| 3b 0a 58 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |;.X...br|eak;.X..|
|00003310| 63 61 73 65 20 53 4f 52 | 54 5f 42 59 5f 53 55 42 |case SOR|T_BY_SUB|
|00003320| 4a 5f 44 45 53 43 45 4e | 44 3a 0a 58 09 09 63 61 |J_DESCEN|D:.X..ca|
|00003330| 73 65 20 53 4f 52 54 5f | 42 59 5f 53 55 42 4a 5f |se SORT_|BY_SUBJ_|
|00003340| 41 53 43 45 4e 44 3a 0a | 58 09 09 09 71 73 6f 72 |ASCEND:.|X...qsor|
|00003350| 74 20 28 28 63 68 61 72 | 20 2a 29 20 61 72 74 73 |t ((char| *) arts|
|00003360| 2c 20 74 6f 70 2c 20 73 | 69 7a 65 6f 66 20 28 73 |, top, s|izeof (s|
|00003370| 74 72 75 63 74 20 61 72 | 74 69 63 6c 65 5f 74 29 |truct ar|ticle_t)|
|00003380| 2c 20 73 75 62 6a 5f 63 | 6f 6d 70 29 3b 0a 58 09 |, subj_c|omp);.X.|
|00003390| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 63 61 73 65 |..break;|.X..case|
|000033a0| 20 53 4f 52 54 5f 42 59 | 5f 46 52 4f 4d 5f 44 45 | SORT_BY|_FROM_DE|
|000033b0| 53 43 45 4e 44 3a 0a 58 | 09 09 63 61 73 65 20 53 |SCEND:.X|..case S|
|000033c0| 4f 52 54 5f 42 59 5f 46 | 52 4f 4d 5f 41 53 43 45 |ORT_BY_F|ROM_ASCE|
|000033d0| 4e 44 3a 0a 58 09 09 09 | 71 73 6f 72 74 20 28 28 |ND:.X...|qsort ((|
|000033e0| 63 68 61 72 20 2a 29 20 | 61 72 74 73 2c 20 74 6f |char *) |arts, to|
|000033f0| 70 2c 20 73 69 7a 65 6f | 66 20 28 73 74 72 75 63 |p, sizeo|f (struc|
|00003400| 74 20 61 72 74 69 63 6c | 65 5f 74 29 2c 20 66 72 |t articl|e_t), fr|
|00003410| 6f 6d 5f 63 6f 6d 70 29 | 3b 0a 58 09 09 09 62 72 |om_comp)|;.X...br|
|00003420| 65 61 6b 3b 0a 58 09 09 | 63 61 73 65 20 53 4f 52 |eak;.X..|case SOR|
|00003430| 54 5f 42 59 5f 44 41 54 | 45 5f 44 45 53 43 45 4e |T_BY_DAT|E_DESCEN|
|00003440| 44 3a 0a 58 09 09 63 61 | 73 65 20 53 4f 52 54 5f |D:.X..ca|se SORT_|
|00003450| 42 59 5f 44 41 54 45 5f | 41 53 43 45 4e 44 3a 0a |BY_DATE_|ASCEND:.|
|00003460| 58 09 09 09 71 73 6f 72 | 74 20 28 28 63 68 61 72 |X...qsor|t ((char|
|00003470| 20 2a 29 20 61 72 74 73 | 2c 20 74 6f 70 2c 20 73 | *) arts|, top, s|
|00003480| 69 7a 65 6f 66 20 28 73 | 74 72 75 63 74 20 61 72 |izeof (s|truct ar|
|00003490| 74 69 63 6c 65 5f 74 29 | 2c 20 64 61 74 65 5f 63 |ticle_t)|, date_c|
|000034a0| 6f 6d 70 29 3b 0a 58 09 | 09 09 62 72 65 61 6b 3b |omp);.X.|..break;|
|000034b0| 0a 58 09 09 64 65 66 61 | 75 6c 74 3a 0a 58 09 09 |.X..defa|ult:.X..|
|000034c0| 09 62 72 65 61 6b 3b 0a | 58 09 7d 0a 58 0a 58 09 |.break;.|X.}.X.X.|
|000034d0| 69 66 20 28 74 68 72 65 | 61 64 5f 61 72 74 73 20 |if (thre|ad_arts |
|000034e0| 3d 3d 20 30 20 7c 7c 20 | 61 63 74 69 76 65 5b 6d |== 0 || |active[m|
|000034f0| 79 5f 67 72 6f 75 70 5b | 63 75 72 5f 67 72 6f 75 |y_group[|cur_grou|
|00003500| 70 6e 75 6d 5d 5d 2e 61 | 74 74 72 69 62 75 74 65 |pnum]].a|ttribute|
|00003510| 2e 74 68 72 65 61 64 20 | 3d 3d 20 30 29 20 7b 0a |.thread |== 0) {.|
|00003520| 58 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 7d 0a 58 |X..retur|n;.X.}.X|
|00003530| 0a 58 09 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 |.X.for (|i = 0; i|
|00003540| 20 3c 20 74 6f 70 3b 20 | 69 2b 2b 29 20 7b 0a 58 | < top; |i++) {.X|
|00003550| 09 09 69 66 20 28 61 72 | 74 73 5b 69 5d 2e 74 68 |..if (ar|ts[i].th|
|00003560| 72 65 61 64 20 21 3d 20 | 41 52 54 5f 4e 4f 52 4d |read != |ART_NORM|
|00003570| 41 4c 20 7c 7c 20 49 47 | 4e 4f 52 45 5f 41 52 54 |AL || IG|NORE_ART|
|00003580| 28 69 29 29 20 7b 0a 58 | 09 09 09 63 6f 6e 74 69 |(i)) {.X|...conti|
|00003590| 6e 75 65 3b 0a 58 09 09 | 7d 09 0a 58 09 09 66 6f |nue;.X..|}..X..fo|
|000035a0| 72 20 28 6a 20 3d 20 69 | 2b 31 3b 20 6a 20 3c 20 |r (j = i|+1; j < |
|000035b0| 74 6f 70 3b 20 6a 2b 2b | 29 20 7b 0a 58 09 09 09 |top; j++|) {.X...|
|000035c0| 69 66 20 28 21 20 49 47 | 4e 4f 52 45 5f 41 52 54 |if (! IG|NORE_ART|
|000035d0| 28 6a 29 20 26 26 20 0a | 58 09 09 09 20 20 20 28 |(j) && .|X... (|
|000035e0| 28 61 72 74 73 5b 69 5d | 2e 73 75 62 6a 65 63 74 |(arts[i]|.subject|
|000035f0| 20 3d 3d 20 61 72 74 73 | 5b 6a 5d 2e 73 75 62 6a | == arts|[j].subj|
|00003600| 65 63 74 29 20 7c 7c 0a | 58 09 09 09 20 20 20 28 |ect) ||.|X... (|
|00003610| 28 61 72 74 73 5b 69 5d | 2e 70 61 72 74 20 7c 7c |(arts[i]|.part |||
|00003620| 20 61 72 74 73 5b 69 5d | 2e 70 61 74 63 68 29 20 | arts[i]|.patch) |
|00003630| 26 26 0a 58 09 09 09 20 | 20 20 61 72 74 73 5b 69 |&&.X... | arts[i|
|00003640| 5d 2e 61 72 63 68 69 76 | 65 20 3d 3d 20 61 72 74 |].archiv|e == art|
|00003650| 73 5b 6a 5d 2e 61 72 63 | 68 69 76 65 29 29 29 20 |s[j].arc|hive))) |
|00003660| 7b 0a 58 09 09 09 09 61 | 72 74 73 5b 69 5d 2e 74 |{.X....a|rts[i].t|
|00003670| 68 72 65 61 64 20 3d 20 | 6a 3b 0a 58 09 09 09 09 |hread = |j;.X....|
|00003680| 61 72 74 73 5b 6a 5d 2e | 69 6e 74 68 72 65 61 64 |arts[j].|inthread|
|00003690| 20 3d 20 54 52 55 45 3b | 0a 58 09 09 09 09 62 72 | = TRUE;|.X....br|
|000036a0| 65 61 6b 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |eak;.X..|.}.X..}.|
|000036b0| 58 09 7d 0a 58 7d 0a 58 | 0a 58 0a 58 69 6e 74 20 |X.}.X}.X|.X.Xint |
|000036c0| 70 61 72 73 65 5f 68 65 | 61 64 65 72 73 20 28 66 |parse_he|aders (f|
|000036d0| 70 2c 20 68 29 0a 58 09 | 46 49 4c 45 20 2a 66 70 |p, h).X.|FILE *fp|
|000036e0| 3b 0a 58 09 73 74 72 75 | 63 74 20 61 72 74 69 63 |;.X.stru|ct artic|
|000036f0| 6c 65 5f 74 20 2a 68 3b | 0a 58 7b 0a 58 09 63 68 |le_t *h;|.X{.X.ch|
|00003700| 61 72 20 62 75 66 5b 48 | 45 41 44 45 52 5f 4c 45 |ar buf[H|EADER_LE|
|00003710| 4e 5d 3b 0a 58 09 63 68 | 61 72 20 62 75 66 32 5b |N];.X.ch|ar buf2[|
|00003720| 48 45 41 44 45 52 5f 4c | 45 4e 5d 3b 0a 58 09 63 |HEADER_L|EN];.X.c|
|00003730| 68 61 72 20 61 72 74 5f | 66 72 6f 6d 5f 61 64 64 |har art_|from_add|
|00003740| 72 5b 4c 45 4e 5d 3b 0a | 58 09 63 68 61 72 20 61 |r[LEN];.|X.char a|
|00003750| 72 74 5f 66 75 6c 6c 5f | 6e 61 6d 65 5b 4c 45 4e |rt_full_|name[LEN|
|00003760| 5d 3b 0a 58 09 63 68 61 | 72 20 2a 70 74 72 2c 20 |];.X.cha|r *ptr, |
|00003770| 2a 70 74 72 6c 69 6e 65 | 2c 20 2a 73 3b 0a 58 09 |*ptrline|, *s;.X.|
|00003780| 69 6e 74 20 6e 20 3d 20 | 30 2c 20 6c 65 6e 20 3d |int n = |0, len =|
|00003790| 20 30 2c 20 6c 69 6e 65 | 6e 6f 20 3d 20 30 3b 0a | 0, line|no = 0;.|
|000037a0| 58 09 69 6e 74 20 66 6c | 61 67 3b 0a 58 09 69 6e |X.int fl|ag;.X.in|
|000037b0| 74 20 67 6f 74 5f 73 75 | 62 6a 65 63 74 20 3d 20 |t got_su|bject = |
|000037c0| 46 41 4c 53 45 3b 0a 58 | 09 69 6e 74 20 67 6f 74 |FALSE;.X|.int got|
|000037d0| 5f 66 72 6f 6d 20 3d 20 | 46 41 4c 53 45 3b 0a 58 |_from = |FALSE;.X|
|000037e0| 09 69 6e 74 20 67 6f 74 | 5f 64 61 74 65 20 3d 20 |.int got|_date = |
|000037f0| 46 41 4c 53 45 3b 0a 58 | 09 69 6e 74 20 67 6f 74 |FALSE;.X|.int got|
|00003800| 5f 61 72 63 68 69 76 65 | 20 3d 20 46 41 4c 53 45 |_archive| = FALSE|
|00003810| 3b 0a 58 09 65 78 74 65 | 72 6e 20 69 6e 74 20 65 |;.X.exte|rn int e|
|00003820| 72 72 6e 6f 3b 0a 58 09 | 0a 58 09 62 75 66 5b 48 |rrno;.X.|.X.buf[H|
|00003830| 45 41 44 45 52 5f 4c 45 | 4e 2d 31 5d 20 3d 20 27 |EADER_LE|N-1] = '|
|00003840| 5c 30 27 3b 0a 58 0a 58 | 09 77 68 69 6c 65 20 28 |\0';.X.X|.while (|
|00003850| 66 72 65 61 64 20 28 62 | 75 66 2c 20 73 69 7a 65 |fread (b|uf, size|
|00003860| 6f 66 20 28 62 75 66 29 | 2d 31 2c 20 31 2c 20 66 |of (buf)|-1, 1, f|
|00003870| 70 29 20 21 3d 20 31 20 | 26 26 20 65 72 72 6e 6f |p) != 1 |&& errno|
|00003880| 20 3d 3d 20 45 49 4e 54 | 52 29 0a 58 09 09 3b 09 | == EINT|R).X..;.|
|00003890| 09 2f 2a 20 73 70 69 6e | 20 6f 6e 20 73 69 67 6e |./* spin| on sign|
|000038a0| 61 6c 20 69 6e 74 65 72 | 72 75 70 74 73 20 2a 2f |al inter|rupts */|
|000038b0| 0a 58 0a 58 09 69 66 20 | 28 28 6e 20 3d 20 73 74 |.X.X.if |((n = st|
|000038c0| 72 6c 65 6e 20 28 62 75 | 66 29 29 20 3d 3d 20 30 |rlen (bu|f)) == 0|
|000038d0| 29 20 7b 0a 58 09 09 72 | 65 74 75 72 6e 20 46 41 |) {.X..r|eturn FA|
|000038e0| 4c 53 45 3b 0a 58 09 7d | 0a 58 0a 58 09 62 75 66 |LSE;.X.}|.X.X.buf|
|000038f0| 5b 6e 2d 31 5d 20 3d 20 | 27 5c 30 27 3b 0a 58 0a |[n-1] = |'\0';.X.|
|00003900| 58 09 70 74 72 20 3d 20 | 62 75 66 3b 0a 58 0a 58 |X.ptr = |buf;.X.X|
|00003910| 09 77 68 69 6c 65 20 28 | 31 29 20 7b 0a 58 09 09 |.while (|1) {.X..|
|00003920| 66 6f 72 20 28 70 74 72 | 6c 69 6e 65 20 3d 20 70 |for (ptr|line = p|
|00003930| 74 72 3b 20 2a 70 74 72 | 20 26 26 20 2a 70 74 72 |tr; *ptr| && *ptr|
|00003940| 20 21 3d 20 27 5c 6e 27 | 3b 20 70 74 72 2b 2b 29 | != '\n'|; ptr++)|
|00003950| 20 7b 0a 58 09 09 09 69 | 66 20 28 28 28 2a 70 74 | {.X...i|f (((*pt|
|00003960| 72 29 20 26 20 30 78 46 | 46 29 20 3c 20 27 20 27 |r) & 0xF|F) < ' '|
|00003970| 29 20 7b 0a 58 09 09 09 | 09 2a 70 74 72 20 3d 20 |) {.X...|.*ptr = |
|00003980| 27 20 27 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |' ';.X..|.}.X..}.|
|00003990| 58 09 09 66 6c 61 67 20 | 3d 20 2a 70 74 72 3b 0a |X..flag |= *ptr;.|
|000039a0| 58 09 09 2a 70 74 72 2b | 2b 20 3d 20 27 5c 30 27 |X..*ptr+|+ = '\0'|
|000039b0| 3b 0a 58 09 09 6c 69 6e | 65 6e 6f 2b 2b 3b 0a 58 |;.X..lin|eno++;.X|
|000039c0| 0a 58 09 09 69 66 20 28 | 21 20 67 6f 74 5f 66 72 |.X..if (|! got_fr|
|000039d0| 6f 6d 20 26 26 20 6d 61 | 74 63 68 5f 68 65 61 64 |om && ma|tch_head|
|000039e0| 65 72 20 28 70 74 72 6c | 69 6e 65 2c 20 22 46 72 |er (ptrl|ine, "Fr|
|000039f0| 6f 6d 22 2c 20 62 75 66 | 32 2c 20 48 45 41 44 45 |om", buf|2, HEADE|
|00003a00| 52 5f 4c 45 4e 29 29 20 | 7b 0a 58 09 09 09 70 61 |R_LEN)) |{.X...pa|
|00003a10| 72 73 65 5f 66 72 6f 6d | 20 28 62 75 66 32 2c 20 |rse_from| (buf2, |
|00003a20| 61 72 74 5f 66 72 6f 6d | 5f 61 64 64 72 2c 20 61 |art_from|_addr, a|
|00003a30| 72 74 5f 66 75 6c 6c 5f | 6e 61 6d 65 29 3b 20 0a |rt_full_|name); .|
|00003a40| 58 09 09 09 68 2d 3e 66 | 72 6f 6d 20 3d 20 68 61 |X...h->f|rom = ha|
|00003a50| 73 68 5f 73 74 72 20 28 | 61 72 74 5f 66 72 6f 6d |sh_str (|art_from|
|00003a60| 5f 61 64 64 72 29 3b 0a | 58 09 09 09 68 2d 3e 6e |_addr);.|X...h->n|
|00003a70| 61 6d 65 20 3d 20 68 61 | 73 68 5f 73 74 72 20 28 |ame = ha|sh_str (|
|00003a80| 61 72 74 5f 66 75 6c 6c | 5f 6e 61 6d 65 29 3b 0a |art_full|_name);.|
|00003a90| 58 09 09 09 67 6f 74 5f | 66 72 6f 6d 20 3d 20 54 |X...got_|from = T|
|00003aa0| 52 55 45 3b 0a 58 09 09 | 7d 20 65 6c 73 65 20 69 |RUE;.X..|} else i|
|00003ab0| 66 20 28 21 20 67 6f 74 | 5f 73 75 62 6a 65 63 74 |f (! got|_subject|
|00003ac0| 20 26 26 20 6d 61 74 63 | 68 5f 68 65 61 64 65 72 | && matc|h_header|
|00003ad0| 20 28 70 74 72 6c 69 6e | 65 2c 20 22 53 75 62 6a | (ptrlin|e, "Subj|
|00003ae0| 65 63 74 22 2c 20 62 75 | 66 32 2c 20 48 45 41 44 |ect", bu|f2, HEAD|
|00003af0| 45 52 5f 4c 45 4e 29 29 | 20 7b 0a 58 09 09 09 73 |ER_LEN))| {.X...s|
|00003b00| 20 3d 20 65 61 74 5f 72 | 65 20 28 62 75 66 32 29 | = eat_r|e (buf2)|
|00003b10| 3b 0a 58 09 09 09 68 2d | 3e 73 75 62 6a 65 63 74 |;.X...h-|>subject|
|00003b20| 20 3d 20 68 61 73 68 5f | 73 74 72 20 28 65 61 74 | = hash_|str (eat|
|00003b30| 5f 72 65 20 28 73 29 29 | 3b 0a 58 09 09 09 67 6f |_re (s))|;.X...go|
|00003b40| 74 5f 73 75 62 6a 65 63 | 74 20 3d 20 54 52 55 45 |t_subjec|t = TRUE|
|00003b50| 3b 0a 58 09 09 7d 20 65 | 6c 73 65 20 69 66 20 28 |;.X..} e|lse if (|
|00003b60| 21 20 67 6f 74 5f 64 61 | 74 65 20 26 26 20 6d 61 |! got_da|te && ma|
|00003b70| 74 63 68 5f 68 65 61 64 | 65 72 20 28 70 74 72 6c |tch_head|er (ptrl|
|00003b80| 69 6e 65 2c 20 22 44 61 | 74 65 22 2c 20 62 75 66 |ine, "Da|te", buf|
|00003b90| 32 2c 20 48 45 41 44 45 | 52 5f 4c 45 4e 29 29 20 |2, HEADE|R_LEN)) |
|00003ba0| 7b 0a 58 09 09 09 70 61 | 72 73 65 5f 64 61 74 65 |{.X...pa|rse_date|
|00003bb0| 20 28 62 75 66 32 2c 20 | 68 2d 3e 64 61 74 65 29 | (buf2, |h->date)|
|00003bc0| 3b 0a 58 09 09 09 67 6f | 74 5f 64 61 74 65 20 3d |;.X...go|t_date =|
|00003bd0| 20 54 52 55 45 3b 0a 58 | 09 09 7d 20 65 6c 73 65 | TRUE;.X|..} else|
|00003be0| 20 69 66 20 28 6d 61 74 | 63 68 5f 68 65 61 64 65 | if (mat|ch_heade|
|00003bf0| 72 20 28 70 74 72 6c 69 | 6e 65 2c 20 22 41 72 63 |r (ptrli|ne, "Arc|
|00003c00| 68 69 76 65 2d 6e 61 6d | 65 22 2c 20 62 75 66 32 |hive-nam|e", buf2|
|00003c10| 2c 20 48 45 41 44 45 52 | 5f 4c 45 4e 29 20 7c 7c |, HEADER|_LEN) |||
|00003c20| 0a 58 09 09 09 09 09 6d | 61 74 63 68 5f 68 65 61 |.X.....m|atch_hea|
|00003c30| 64 65 72 20 28 70 74 72 | 6c 69 6e 65 2c 20 22 41 |der (ptr|line, "A|
|00003c40| 72 63 68 69 76 65 2d 4e | 61 6d 65 22 2c 20 62 75 |rchive-N|ame", bu|
|00003c50| 66 32 2c 20 48 45 41 44 | 45 52 5f 4c 45 4e 29 29 |f2, HEAD|ER_LEN))|
|00003c60| 20 7b 0a 58 09 09 09 69 | 66 20 28 28 73 20 3d 20 | {.X...i|f ((s = |
|00003c70| 28 63 68 61 72 20 2a 29 | 20 73 74 72 63 68 72 20 |(char *)| strchr |
|00003c80| 28 62 75 66 32 2c 20 27 | 2f 27 29 29 20 21 3d 20 |(buf2, '|/')) != |
|00003c90| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 09 09 69 66 20 |NULL) {.|X....if |
|00003ca0| 28 73 74 72 6e 63 6d 70 | 20 28 73 2b 31 2c 20 22 |(strncmp| (s+1, "|
|00003cb0| 70 61 72 74 22 2c 20 34 | 29 20 3d 3d 20 30 20 7c |part", 4|) == 0 ||
|00003cc0| 7c 0a 58 09 09 09 09 20 | 20 20 20 73 74 72 6e 63 ||.X.... | strnc|
|00003cd0| 6d 70 20 28 73 2b 31 2c | 20 22 50 61 72 74 22 2c |mp (s+1,| "Part",|
|00003ce0| 20 34 29 20 3d 3d 20 30 | 29 20 7b 0a 58 09 09 09 | 4) == 0|) {.X...|
|00003cf0| 09 09 68 2d 3e 70 61 72 | 74 20 3d 20 73 74 72 5f |..h->par|t = str_|
|00003d00| 64 75 70 20 28 73 2b 35 | 29 3b 0a 58 09 09 09 09 |dup (s+5|);.X....|
|00003d10| 09 6c 65 6e 20 3d 20 28 | 69 6e 74 29 20 73 74 72 |.len = (|int) str|
|00003d20| 6c 65 6e 20 28 68 2d 3e | 70 61 72 74 29 3b 0a 58 |len (h->|part);.X|
|00003d30| 09 09 09 09 09 69 66 20 | 28 68 2d 3e 70 61 72 74 |.....if |(h->part|
|00003d40| 5b 6c 65 6e 2d 31 5d 20 | 3d 3d 20 27 5c 6e 27 29 |[len-1] |== '\n')|
|00003d50| 20 7b 0a 58 09 09 09 09 | 09 09 68 2d 3e 70 61 72 | {.X....|..h->par|
|00003d60| 74 5b 6c 65 6e 2d 31 5d | 20 3d 20 27 5c 30 27 3b |t[len-1]| = '\0';|
|00003d70| 0a 58 09 09 09 09 09 7d | 0a 58 09 09 09 09 7d 20 |.X.....}|.X....} |
|00003d80| 65 6c 73 65 20 7b 0a 58 | 09 09 09 09 09 69 66 20 |else {.X|.....if |
|00003d90| 28 73 74 72 6e 63 6d 70 | 20 28 73 2b 31 2c 22 70 |(strncmp| (s+1,"p|
|00003da0| 61 74 63 68 22 2c 35 29 | 20 3d 3d 20 30 20 7c 7c |atch",5)| == 0 |||
|00003db0| 0a 58 09 09 09 09 09 20 | 20 20 20 73 74 72 6e 63 |.X..... | strnc|
|00003dc0| 6d 70 20 28 73 2b 31 2c | 22 50 61 74 63 68 22 2c |mp (s+1,|"Patch",|
|00003dd0| 35 29 20 3d 3d 20 30 29 | 20 7b 0a 58 09 09 09 09 |5) == 0)| {.X....|
|00003de0| 09 09 68 2d 3e 70 61 74 | 63 68 20 3d 20 73 74 72 |..h->pat|ch = str|
|00003df0| 5f 64 75 70 20 28 73 2b | 36 29 3b 0a 58 09 09 09 |_dup (s+|6);.X...|
|00003e00| 09 09 09 6c 65 6e 20 3d | 20 28 69 6e 74 29 20 73 |...len =| (int) s|
|00003e10| 74 72 6c 65 6e 20 28 68 | 2d 3e 70 61 74 63 68 29 |trlen (h|->patch)|
|00003e20| 3b 0a 58 09 09 09 09 09 | 09 69 66 20 28 68 2d 3e |;.X.....|.if (h->|
|00003e30| 70 61 74 63 68 5b 6c 65 | 6e 2d 31 5d 20 3d 3d 20 |patch[le|n-1] == |
|00003e40| 27 5c 6e 27 29 20 7b 0a | 58 09 09 09 09 09 09 09 |'\n') {.|X.......|
|00003e50| 68 2d 3e 70 61 74 63 68 | 5b 6c 65 6e 2d 31 5d 20 |h->patch|[len-1] |
|00003e60| 3d 20 27 5c 30 27 3b 0a | 58 09 09 09 09 09 09 7d |= '\0';.|X......}|
|00003e70| 0a 58 09 09 09 09 09 7d | 0a 58 09 09 09 09 7d 0a |.X.....}|.X....}.|
|00003e80| 58 09 09 09 09 69 66 20 | 28 68 2d 3e 70 61 72 74 |X....if |(h->part|
|00003e90| 20 7c 7c 20 68 2d 3e 70 | 61 74 63 68 29 20 7b 0a | || h->p|atch) {.|
|00003ea0| 58 09 09 09 09 09 73 20 | 3d 20 62 75 66 32 3b 0a |X.....s |= buf2;.|
|00003eb0| 58 09 09 09 09 09 77 68 | 69 6c 65 20 28 2a 73 20 |X.....wh|ile (*s |
|00003ec0| 26 26 20 2a 73 20 21 3d | 20 27 2f 27 29 0a 58 09 |&& *s !=| '/').X.|
|00003ed0| 09 09 09 09 09 73 2b 2b | 3b 0a 58 09 09 09 09 09 |.....s++|;.X.....|
|00003ee0| 2a 73 20 3d 20 27 5c 30 | 27 3b 09 0a 58 09 09 09 |*s = '\0|';..X...|
|00003ef0| 09 09 73 20 3d 20 62 75 | 66 32 3b 0a 58 09 09 09 |..s = bu|f2;.X...|
|00003f00| 09 09 68 2d 3e 61 72 63 | 68 69 76 65 20 3d 20 68 |..h->arc|hive = h|
|00003f10| 61 73 68 5f 73 74 72 20 | 28 73 29 3b 0a 58 09 09 |ash_str |(s);.X..|
|00003f20| 09 09 09 67 6f 74 5f 61 | 72 63 68 69 76 65 20 3d |...got_a|rchive =|
|00003f30| 20 54 52 55 45 3b 0a 58 | 09 09 09 09 7d 0a 58 09 | TRUE;.X|....}.X.|
|00003f40| 09 09 7d 0a 58 09 09 7d | 0a 58 0a 58 09 09 69 66 |..}.X..}|.X.X..if|
|00003f50| 20 28 21 20 66 6c 61 67 | 20 7c 7c 20 6c 69 6e 65 | (! flag| || line|
|00003f60| 6e 6f 20 3e 20 32 35 20 | 7c 7c 20 67 6f 74 5f 61 |no > 25 ||| got_a|
|00003f70| 72 63 68 69 76 65 29 20 | 7b 0a 58 09 09 09 69 66 |rchive) |{.X...if|
|00003f80| 20 28 67 6f 74 5f 73 75 | 62 6a 65 63 74 20 26 26 | (got_su|bject &&|
|00003f90| 20 67 6f 74 5f 66 72 6f | 6d 20 26 26 20 67 6f 74 | got_fro|m && got|
|00003fa0| 5f 64 61 74 65 29 20 7b | 0a 58 09 09 09 09 64 65 |_date) {|.X....de|
|00003fb0| 62 75 67 5f 70 72 69 6e | 74 5f 68 65 61 64 65 72 |bug_prin|t_header|
|00003fc0| 20 28 68 29 3b 0a 58 09 | 09 09 09 72 65 74 75 72 | (h);.X.|...retur|
|00003fd0| 6e 20 54 52 55 45 3b 0a | 58 09 09 09 7d 20 65 6c |n TRUE;.|X...} el|
|00003fe0| 73 65 20 7b 0a 58 09 09 | 09 09 72 65 74 75 72 6e |se {.X..|..return|
|00003ff0| 20 46 41 4c 53 45 3b 0a | 58 09 09 09 7d 09 0a 58 | FALSE;.|X...}..X|
|00004000| 09 09 7d 0a 58 09 7d 0a | 58 09 2f 2a 20 4e 4f 54 |..}.X.}.|X./* NOT|
|00004010| 52 45 41 43 48 45 44 20 | 2a 2f 0a 58 7d 0a 58 0a |REACHED |*/.X}.X.|
|00004020| 58 2f 2a 20 0a 58 20 2a | 20 20 57 72 69 74 65 20 |X/* .X *| Write |
|00004030| 6f 75 74 20 20 61 6e 20 | 69 6e 64 65 78 20 66 69 |out an |index fi|
|00004040| 6c 65 2e 20 20 57 72 69 | 74 65 20 74 68 65 20 67 |le. Wri|te the g|
|00004050| 72 6f 75 70 20 6e 61 6d | 65 20 66 69 72 73 74 20 |roup nam|e first |
|00004060| 73 6f 20 69 66 0a 58 20 | 2a 20 20 6c 6f 63 61 6c |so if.X |* local|
|00004070| 20 69 6e 64 65 78 69 6e | 67 20 69 73 20 64 6f 6e | indexin|g is don|
|00004080| 65 20 73 6f 20 77 65 20 | 63 61 6e 20 64 69 73 61 |e so we |can disa|
|00004090| 6d 62 69 67 75 61 74 65 | 20 62 65 74 77 65 65 6e |mbiguate| between|
|000040a0| 20 67 72 6f 75 70 0a 58 | 20 2a 20 20 6e 61 6d 65 | group.X| * name|
|000040b0| 20 68 61 73 68 20 63 6f | 6c 6c 69 73 69 6f 6e 73 | hash co|llisions|
|000040c0| 20 62 79 20 6c 6f 6f 6b | 69 6e 67 20 61 74 20 74 | by look|ing at t|
|000040d0| 68 65 20 69 6e 64 65 78 | 20 66 69 6c 65 2e 0a 58 |he index| file..X|
|000040e0| 20 2a 2f 0a 58 0a 58 76 | 6f 69 64 20 77 72 69 74 | */.X.Xv|oid writ|
|000040f0| 65 5f 69 6e 64 65 78 5f | 66 69 6c 65 20 28 67 72 |e_index_|file (gr|
|00004100| 6f 75 70 29 0a 58 09 63 | 68 61 72 20 2a 67 72 6f |oup).X.c|har *gro|
|00004110| 75 70 3b 0a 58 7b 0a 58 | 09 63 68 61 72 20 6e 61 |up;.X{.X|.char na|
|00004120| 6d 5b 4c 45 4e 5d 3b 0a | 58 09 46 49 4c 45 20 2a |m[LEN];.|X.FILE *|
|00004130| 66 70 3b 0a 58 09 69 6e | 74 20 2a 69 70 74 72 3b |fp;.X.in|t *iptr;|
|00004140| 0a 58 09 69 6e 74 20 72 | 65 61 6c 6e 75 6d 3b 0a |.X.int r|ealnum;.|
|00004150| 58 09 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 69 |X.regist|er int i|
|00004160| 3b 0a 58 0a 58 09 73 65 | 74 5f 74 69 6e 5f 75 69 |;.X.X.se|t_tin_ui|
|00004170| 64 5f 67 69 64 28 29 3b | 0a 58 0a 58 20 20 20 20 |d_gid();|.X.X |
|00004180| 20 20 20 20 73 70 72 69 | 6e 74 66 20 28 6e 61 6d | spri|ntf (nam|
|00004190| 2c 20 22 25 73 2e 25 64 | 22 2c 20 69 6e 64 65 78 |, "%s.%d|", index|
|000041a0| 5f 66 69 6c 65 2c 20 70 | 72 6f 63 65 73 73 5f 69 |_file, p|rocess_i|
|000041b0| 64 29 3b 0a 58 09 69 66 | 20 28 28 66 70 20 3d 20 |d);.X.if| ((fp = |
|000041c0| 66 6f 70 65 6e 20 28 6e | 61 6d 2c 20 22 77 22 29 |fopen (n|am, "w")|
|000041d0| 29 20 3d 3d 20 4e 55 4c | 4c 29 20 7b 0a 58 09 09 |) == NUL|L) {.X..|
|000041e0| 70 65 72 72 6f 72 5f 6d | 65 73 73 61 67 65 20 28 |perror_m|essage (|
|000041f0| 74 78 74 5f 63 61 6e 6e | 6f 74 5f 6f 70 65 6e 2c |txt_cann|ot_open,|
|00004200| 20 6e 61 6d 29 3b 0a 58 | 09 09 72 65 74 75 72 6e | nam);.X|..return|
|00004210| 3b 0a 58 09 7d 0a 58 0a | 58 09 2f 2a 0a 58 09 20 |;.X.}.X.|X./*.X. |
|00004220| 2a 20 20 64 75 6d 70 20 | 67 72 6f 75 70 20 68 65 |* dump |group he|
|00004230| 61 64 65 72 20 69 6e 66 | 6f 2e 0a 58 09 20 2a 2f |ader inf|o..X. */|
|00004240| 0a 58 09 69 66 20 28 73 | 6f 72 74 5f 61 72 74 5f |.X.if (s|ort_art_|
|00004250| 74 79 70 65 20 21 3d 20 | 53 4f 52 54 5f 42 59 5f |type != |SORT_BY_|
|00004260| 4e 4f 54 48 49 4e 47 29 | 20 7b 0a 58 09 09 71 73 |NOTHING)| {.X..qs|
|00004270| 6f 72 74 20 28 28 63 68 | 61 72 20 2a 29 20 61 72 |ort ((ch|ar *) ar|
|00004280| 74 73 2c 20 74 6f 70 2c | 20 73 69 7a 65 6f 66 20 |ts, top,| sizeof |
|00004290| 28 73 74 72 75 63 74 20 | 61 72 74 69 63 6c 65 5f |(struct |article_|
|000042a0| 74 29 2c 20 61 72 74 6e | 75 6d 5f 63 6f 6d 70 29 |t), artn|um_comp)|
|000042b0| 3b 0a 58 09 7d 0a 58 09 | 66 70 72 69 6e 74 66 20 |;.X.}.X.|fprintf |
|000042c0| 28 66 70 2c 20 22 25 73 | 5c 6e 22 2c 20 67 72 6f |(fp, "%s|\n", gro|
|000042d0| 75 70 29 3b 0a 58 09 66 | 70 72 69 6e 74 66 20 28 |up);.X.f|printf (|
|000042e0| 66 70 2c 20 22 25 64 5c | 6e 22 2c 20 6e 75 6d 5f |fp, "%d\|n", num_|
|000042f0| 6f 66 5f 61 72 74 73 20 | 28 29 29 3b 0a 58 09 69 |of_arts |());.X.i|
|00004300| 66 20 28 74 6f 70 20 3c | 3d 20 30 29 20 7b 0a 58 |f (top <|= 0) {.X|
|00004310| 09 09 66 70 72 69 6e 74 | 66 20 28 66 70 2c 20 22 |..fprint|f (fp, "|
|00004320| 30 5c 6e 22 29 3b 0a 58 | 09 7d 20 65 6c 73 65 20 |0\n");.X|.} else |
|00004330| 7b 0a 58 09 09 69 66 20 | 28 6c 61 73 74 5f 72 65 |{.X..if |(last_re|
|00004340| 61 64 5f 61 72 74 69 63 | 6c 65 20 3e 20 61 72 74 |ad_artic|le > art|
|00004350| 73 5b 74 6f 70 2d 31 5d | 2e 61 72 74 6e 75 6d 29 |s[top-1]|.artnum)|
|00004360| 20 7b 0a 58 09 09 09 66 | 70 72 69 6e 74 66 20 28 | {.X...f|printf (|
|00004370| 66 70 2c 20 22 25 6c 64 | 5c 6e 22 2c 20 6c 61 73 |fp, "%ld|\n", las|
|00004380| 74 5f 72 65 61 64 5f 61 | 72 74 69 63 6c 65 29 3b |t_read_a|rticle);|
|00004390| 0a 58 09 09 7d 20 65 6c | 73 65 20 7b 0a 58 09 09 |.X..} el|se {.X..|
|000043a0| 09 66 70 72 69 6e 74 66 | 20 28 66 70 2c 20 22 25 |.fprintf| (fp, "%|
|000043b0| 6c 64 5c 6e 22 2c 20 61 | 72 74 73 5b 74 6f 70 2d |ld\n", a|rts[top-|
|000043c0| 31 5d 2e 61 72 74 6e 75 | 6d 29 3b 0a 58 09 09 7d |1].artnu|m);.X..}|
|000043d0| 0a 58 09 7d 0a 58 0a 58 | 09 2f 2a 0a 58 09 20 2a |.X.}.X.X|./*.X. *|
|000043e0| 20 20 64 75 6d 70 20 61 | 72 74 69 63 6c 65 73 0a | dump a|rticles.|
|000043f0| 58 09 20 2a 2f 0a 58 09 | 72 65 61 6c 6e 75 6d 20 |X. */.X.|realnum |
|00004400| 3d 20 30 3b 20 0a 58 09 | 66 6f 72 20 28 69 20 3d |= 0; .X.|for (i =|
|00004410| 20 30 3b 20 69 20 3c 20 | 74 6f 70 3b 20 69 2b 2b | 0; i < |top; i++|
|00004420| 29 20 7b 0a 58 09 09 69 | 66 20 28 61 72 74 73 5b |) {.X..i|f (arts[|
|00004430| 69 5d 2e 74 68 72 65 61 | 64 20 3d 3d 20 41 52 54 |i].threa|d == ART|
|00004440| 5f 45 58 50 49 52 45 44 | 29 20 7b 20 0a 58 09 09 |_EXPIRED|) { .X..|
|00004450| 09 63 6f 6e 74 69 6e 75 | 65 3b 0a 58 09 09 7d 0a |.continu|e;.X..}.|
|00004460| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 09 09 09 |X#ifdef |DEBUG...|
|00004470| 0a 58 09 09 64 65 62 75 | 67 5f 70 72 69 6e 74 5f |.X..debu|g_print_|
|00004480| 68 65 61 64 65 72 20 28 | 26 61 72 74 73 5b 69 5d |header (|&arts[i]|
|00004490| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 09 09 66 70 |);.X#end|if.X..fp|
|000044a0| 72 69 6e 74 66 28 66 70 | 2c 20 22 25 6c 64 5c 6e |rintf(fp|, "%ld\n|
|000044b0| 22 2c 20 61 72 74 73 5b | 69 5d 2e 61 72 74 6e 75 |", arts[|i].artnu|
|000044c0| 6d 29 3b 0a 58 0a 58 09 | 09 69 70 74 72 20 3d 20 |m);.X.X.|.iptr = |
|000044d0| 28 69 6e 74 20 2a 29 20 | 61 72 74 73 5b 69 5d 2e |(int *) |arts[i].|
|000044e0| 73 75 62 6a 65 63 74 3b | 0a 58 09 09 69 70 74 72 |subject;|.X..iptr|
|000044f0| 2d 2d 3b 0a 58 0a 58 09 | 09 69 66 20 28 21 20 61 |--;.X.X.|.if (! a|
|00004500| 72 74 73 5b 69 5d 2e 73 | 75 62 6a 65 63 74 29 20 |rts[i].s|ubject) |
|00004510| 7b 0a 58 09 09 09 66 70 | 72 69 6e 74 66 28 66 70 |{.X...fp|rintf(fp|
|00004520| 2c 20 22 20 5c 6e 22 29 | 3b 0a 58 09 09 7d 20 65 |, " \n")|;.X..} e|
|00004530| 6c 73 65 20 69 66 20 28 | 2a 69 70 74 72 20 3c 20 |lse if (|*iptr < |
|00004540| 30 20 7c 7c 20 2a 69 70 | 74 72 20 3e 20 74 6f 70 |0 || *ip|tr > top|
|00004550| 29 20 7b 0a 58 09 09 09 | 66 70 72 69 6e 74 66 28 |) {.X...|fprintf(|
|00004560| 66 70 2c 20 22 20 25 73 | 5c 6e 22 2c 20 61 72 74 |fp, " %s|\n", art|
|00004570| 73 5b 69 5d 2e 73 75 62 | 6a 65 63 74 29 3b 0a 58 |s[i].sub|ject);.X|
|00004580| 09 09 09 2a 69 70 74 72 | 20 3d 20 72 65 61 6c 6e |...*iptr| = realn|
|00004590| 75 6d 3b 0a 58 09 09 7d | 20 65 6c 73 65 20 69 66 |um;.X..}| else if|
|000045a0| 20 28 2a 69 70 74 72 20 | 3d 3d 20 69 29 20 7b 0a | (*iptr |== i) {.|
|000045b0| 58 09 09 09 66 70 72 69 | 6e 74 66 28 66 70 2c 20 |X...fpri|ntf(fp, |
|000045c0| 22 20 25 73 5c 6e 22 2c | 20 61 72 74 73 5b 69 5d |" %s\n",| arts[i]|
|000045d0| 2e 73 75 62 6a 65 63 74 | 29 3b 0a 58 09 09 7d 20 |.subject|);.X..} |
|000045e0| 65 6c 73 65 20 7b 0a 58 | 09 09 09 66 70 72 69 6e |else {.X|...fprin|
|000045f0| 74 66 28 66 70 2c 20 22 | 25 25 25 64 5c 6e 22 2c |tf(fp, "|%%%d\n",|
|00004600| 20 2a 69 70 74 72 29 3b | 0a 58 09 09 7d 0a 58 09 | *iptr);|.X..}.X.|
|00004610| 0a 58 09 09 69 70 74 72 | 20 3d 20 28 69 6e 74 20 |.X..iptr| = (int |
|00004620| 2a 29 20 61 72 74 73 5b | 69 5d 2e 66 72 6f 6d 3b |*) arts[|i].from;|
|00004630| 0a 58 09 09 69 70 74 72 | 2d 2d 3b 0a 58 0a 58 09 |.X..iptr|--;.X.X.|
|00004640| 09 69 66 20 28 21 20 61 | 72 74 73 5b 69 5d 2e 66 |.if (! a|rts[i].f|
|00004650| 72 6f 6d 29 20 7b 0a 58 | 09 09 09 66 70 72 69 6e |rom) {.X|...fprin|
|00004660| 74 66 20 28 66 70 2c 20 | 22 20 5c 6e 22 29 3b 0a |tf (fp, |" \n");.|
|00004670| 58 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 2a 69 |X..} els|e if (*i|
|00004680| 70 74 72 20 3c 20 30 20 | 7c 7c 20 2a 69 70 74 72 |ptr < 0 ||| *iptr|
|00004690| 20 3e 20 74 6f 70 29 20 | 7b 0a 58 09 09 09 66 70 | > top) |{.X...fp|
|000046a0| 72 69 6e 74 66 20 28 66 | 70 2c 20 22 20 25 73 5c |rintf (f|p, " %s\|
|000046b0| 6e 22 2c 20 61 72 74 73 | 5b 69 5d 2e 66 72 6f 6d |n", arts|[i].from|
|000046c0| 29 3b 0a 58 09 09 09 2a | 69 70 74 72 20 3d 20 72 |);.X...*|iptr = r|
|000046d0| 65 61 6c 6e 75 6d 3b 0a | 58 09 09 7d 20 65 6c 73 |ealnum;.|X..} els|
|000046e0| 65 20 69 66 20 28 2a 69 | 70 74 72 20 3d 3d 20 69 |e if (*i|ptr == i|
|000046f0| 29 20 7b 0a 58 09 09 09 | 66 70 72 69 6e 74 66 28 |) {.X...|fprintf(|
|00004700| 66 70 2c 20 22 20 25 73 | 5c 6e 22 2c 20 61 72 74 |fp, " %s|\n", art|
|00004710| 73 5b 69 5d 2e 66 72 6f | 6d 29 3b 0a 58 09 09 7d |s[i].fro|m);.X..}|
|00004720| 20 65 6c 73 65 20 7b 0a | 58 09 09 09 66 70 72 69 | else {.|X...fpri|
|00004730| 6e 74 66 28 66 70 2c 20 | 22 25 25 25 64 5c 6e 22 |ntf(fp, |"%%%d\n"|
|00004740| 2c 20 2a 69 70 74 72 29 | 3b 0a 58 09 09 7d 0a 58 |, *iptr)|;.X..}.X|
|00004750| 0a 58 09 09 69 70 74 72 | 20 3d 20 28 69 6e 74 20 |.X..iptr| = (int |
|00004760| 2a 29 20 61 72 74 73 5b | 69 5d 2e 6e 61 6d 65 3b |*) arts[|i].name;|
|00004770| 0a 58 09 09 69 70 74 72 | 2d 2d 3b 0a 58 0a 58 09 |.X..iptr|--;.X.X.|
|00004780| 09 69 66 20 28 21 20 61 | 72 74 73 5b 69 5d 2e 6e |.if (! a|rts[i].n|
|00004790| 61 6d 65 29 20 7b 0a 58 | 09 09 09 66 70 72 69 6e |ame) {.X|...fprin|
|000047a0| 74 66 20 28 66 70 2c 20 | 22 20 5c 6e 22 29 3b 0a |tf (fp, |" \n");.|
|000047b0| 58 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 2a 69 |X..} els|e if (*i|
|000047c0| 70 74 72 20 3c 20 30 20 | 7c 7c 20 2a 69 70 74 72 |ptr < 0 ||| *iptr|
|000047d0| 20 3e 20 74 6f 70 29 20 | 7b 0a 58 09 09 09 66 70 | > top) |{.X...fp|
|000047e0| 72 69 6e 74 66 20 28 66 | 70 2c 20 22 20 25 73 5c |rintf (f|p, " %s\|
|000047f0| 6e 22 2c 20 61 72 74 73 | 5b 69 5d 2e 6e 61 6d 65 |n", arts|[i].name|
|00004800| 29 3b 0a 58 09 09 09 2a | 69 70 74 72 20 3d 20 72 |);.X...*|iptr = r|
|00004810| 65 61 6c 6e 75 6d 3b 0a | 58 09 09 7d 20 65 6c 73 |ealnum;.|X..} els|
|00004820| 65 20 69 66 20 28 2a 69 | 70 74 72 20 3d 3d 20 69 |e if (*i|ptr == i|
|00004830| 29 20 7b 0a 58 09 09 09 | 66 70 72 69 6e 74 66 28 |) {.X...|fprintf(|
|00004840| 66 70 2c 20 22 20 25 73 | 5c 6e 22 2c 20 61 72 74 |fp, " %s|\n", art|
|00004850| 73 5b 69 5d 2e 6e 61 6d | 65 29 3b 0a 58 09 09 7d |s[i].nam|e);.X..}|
|00004860| 20 65 6c 73 65 20 7b 0a | 58 09 09 09 66 70 72 69 | else {.|X...fpri|
|00004870| 6e 74 66 28 66 70 2c 20 | 22 25 25 25 64 5c 6e 22 |ntf(fp, |"%%%d\n"|
|00004880| 2c 20 2a 69 70 74 72 29 | 3b 0a 58 09 09 7d 0a 58 |, *iptr)|;.X..}.X|
|00004890| 0a 58 09 09 66 70 72 69 | 6e 74 66 20 28 66 70 2c |.X..fpri|ntf (fp,|
|000048a0| 20 22 25 73 5c 6e 22 2c | 20 61 72 74 73 5b 69 5d | "%s\n",| arts[i]|
|000048b0| 2e 64 61 74 65 29 3b 0a | 58 09 09 09 0a 58 09 09 |.date);.|X....X..|
|000048c0| 69 70 74 72 20 3d 20 28 | 69 6e 74 20 2a 29 20 61 |iptr = (|int *) a|
|000048d0| 72 74 73 5b 69 5d 2e 61 | 72 63 68 69 76 65 3b 0a |rts[i].a|rchive;.|
|000048e0| 58 09 09 69 70 74 72 2d | 2d 3b 0a 58 0a 58 09 09 |X..iptr-|-;.X.X..|
|000048f0| 69 66 20 28 21 20 61 72 | 74 73 5b 69 5d 2e 61 72 |if (! ar|ts[i].ar|
|00004900| 63 68 69 76 65 29 20 7b | 0a 58 09 09 09 66 70 72 |chive) {|.X...fpr|
|00004910| 69 6e 74 66 20 28 66 70 | 2c 20 22 5c 6e 22 29 3b |intf (fp|, "\n");|
|00004920| 0a 58 09 09 7d 20 65 6c | 73 65 20 69 66 20 28 2a |.X..} el|se if (*|
|00004930| 69 70 74 72 20 3c 20 30 | 20 7c 7c 20 2a 69 70 74 |iptr < 0| || *ipt|
|00004940| 72 20 3e 20 74 6f 70 29 | 20 7b 0a 58 09 09 09 66 |r > top)| {.X...f|
|00004950| 70 72 69 6e 74 66 20 28 | 66 70 2c 20 22 20 25 73 |printf (|fp, " %s|
|00004960| 5c 6e 22 2c 20 61 72 74 | 73 5b 69 5d 2e 61 72 63 |\n", art|s[i].arc|
|00004970| 68 69 76 65 29 3b 0a 58 | 09 09 09 2a 69 70 74 72 |hive);.X|...*iptr|
|00004980| 20 3d 20 72 65 61 6c 6e | 75 6d 3b 0a 58 09 09 7d | = realn|um;.X..}|
|00004990| 20 65 6c 73 65 20 69 66 | 20 28 61 72 74 73 5b 69 | else if| (arts[i|
|000049a0| 5d 2e 70 61 72 74 20 7c | 7c 20 61 72 74 73 5b 69 |].part ||| arts[i|
|000049b0| 5d 2e 70 61 74 63 68 29 | 20 7b 0a 58 09 09 09 69 |].patch)| {.X...i|
|000049c0| 66 20 28 2a 69 70 74 72 | 20 3d 3d 20 69 29 20 7b |f (*iptr| == i) {|
|000049d0| 0a 58 09 09 09 09 66 70 | 72 69 6e 74 66 28 66 70 |.X....fp|rintf(fp|
|000049e0| 2c 20 22 20 25 73 5c 6e | 22 2c 20 61 72 74 73 5b |, " %s\n|", arts[|
|000049f0| 69 5d 2e 61 72 63 68 69 | 76 65 29 3b 0a 58 09 09 |i].archi|ve);.X..|
|00004a00| 09 7d 20 65 6c 73 65 20 | 7b 0a 58 09 09 09 09 66 |.} else |{.X....f|
|00004a10| 70 72 69 6e 74 66 20 28 | 66 70 2c 20 22 25 25 25 |printf (|fp, "%%%|
|00004a20| 64 5c 6e 22 2c 20 2a 69 | 70 74 72 29 3b 0a 58 09 |d\n", *i|ptr);.X.|
|00004a30| 09 09 7d 0a 58 09 09 7d | 20 65 6c 73 65 20 7b 0a |..}.X..}| else {.|
|00004a40| 58 09 09 09 66 70 72 69 | 6e 74 66 20 28 66 70 2c |X...fpri|ntf (fp,|
|00004a50| 20 22 5c 6e 22 29 3b 0a | 58 09 09 7d 0a 58 09 09 | "\n");.|X..}.X..|
|00004a60| 09 0a 58 09 09 69 66 20 | 28 21 20 61 72 74 73 5b |..X..if |(! arts[|
|00004a70| 69 5d 2e 70 61 72 74 29 | 20 7b 0a 58 09 09 09 66 |i].part)| {.X...f|
|00004a80| 70 72 69 6e 74 66 20 28 | 66 70 2c 20 22 20 5c 6e |printf (|fp, " \n|
|00004a90| 22 29 3b 0a 58 09 09 7d | 20 65 6c 73 65 20 7b 0a |");.X..}| else {.|
|00004aa0| 58 09 09 09 66 70 72 69 | 6e 74 66 20 28 66 70 2c |X...fpri|ntf (fp,|
|00004ab0| 20 22 25 73 5c 6e 22 2c | 20 61 72 74 73 5b 69 5d | "%s\n",| arts[i]|
|00004ac0| 2e 70 61 72 74 29 3b 0a | 58 09 09 7d 0a 58 0a 58 |.part);.|X..}.X.X|
|00004ad0| 09 09 69 66 20 28 21 20 | 61 72 74 73 5b 69 5d 2e |..if (! |arts[i].|
|00004ae0| 70 61 74 63 68 29 20 7b | 0a 58 09 09 09 66 70 72 |patch) {|.X...fpr|
|00004af0| 69 6e 74 66 20 28 66 70 | 2c 20 22 20 5c 6e 22 29 |intf (fp|, " \n")|
|00004b00| 3b 0a 58 09 09 7d 20 65 | 6c 73 65 20 7b 0a 58 09 |;.X..} e|lse {.X.|
|00004b10| 09 09 66 70 72 69 6e 74 | 66 20 28 66 70 2c 20 22 |..fprint|f (fp, "|
|00004b20| 25 73 5c 6e 22 2c 20 61 | 72 74 73 5b 69 5d 2e 70 |%s\n", a|rts[i].p|
|00004b30| 61 74 63 68 29 3b 0a 58 | 09 09 7d 0a 58 0a 58 09 |atch);.X|..}.X.X.|
|00004b40| 09 72 65 61 6c 6e 75 6d | 2b 2b 3b 0a 58 09 7d 0a |.realnum|++;.X.}.|
|00004b50| 58 09 66 63 6c 6f 73 65 | 20 28 66 70 29 3b 0a 58 |X.fclose| (fp);.X|
|00004b60| 09 72 65 6e 61 6d 65 5f | 66 69 6c 65 20 28 6e 61 |.rename_|file (na|
|00004b70| 6d 2c 20 69 6e 64 65 78 | 5f 66 69 6c 65 29 3b 0a |m, index|_file);.|
|00004b80| 58 09 63 68 6d 6f 64 20 | 28 69 6e 64 65 78 5f 66 |X.chmod |(index_f|
|00004b90| 69 6c 65 2c 20 30 36 34 | 34 29 3b 0a 58 09 73 65 |ile, 064|4);.X.se|
|00004ba0| 74 5f 72 65 61 6c 5f 75 | 69 64 5f 67 69 64 28 29 |t_real_u|id_gid()|
|00004bb0| 3b 0a 58 09 69 66 20 28 | 64 65 62 75 67 20 3d 3d |;.X.if (|debug ==|
|00004bc0| 20 32 29 20 7b 0a 58 09 | 09 73 70 72 69 6e 74 66 | 2) {.X.|.sprintf|
|00004bd0| 20 28 6d 73 67 2c 20 22 | 63 70 20 25 73 20 49 4e | (msg, "|cp %s IN|
|00004be0| 44 45 58 22 2c 20 69 6e | 64 65 78 5f 66 69 6c 65 |DEX", in|dex_file|
|00004bf0| 29 3b 0a 58 09 09 73 79 | 73 74 65 6d 20 28 6d 73 |);.X..sy|stem (ms|
|00004c00| 67 29 3b 0a 58 09 7d 0a | 58 7d 0a 58 0a 58 2f 2a |g);.X.}.|X}.X.X/*|
|00004c10| 0a 58 20 2a 20 20 52 65 | 61 64 20 69 6e 20 61 6e |.X * Re|ad in an|
|00004c20| 20 69 6e 64 65 78 20 66 | 69 6c 65 2e 0a 58 20 2a | index f|ile..X *|
|00004c30| 0a 58 20 2a 20 20 69 6e | 64 65 78 20 66 69 6c 65 |.X * in|dex file|
|00004c40| 20 68 65 61 64 65 72 20 | 0a 58 20 2a 20 20 20 20 | header |.X * |
|00004c50| 31 2e 20 20 6e 65 77 73 | 67 72 6f 75 70 20 6e 61 |1. news|group na|
|00004c60| 6d 65 20 28 69 65 2e 20 | 61 6c 74 2e 73 6f 75 72 |me (ie. |alt.sour|
|00004c70| 63 65 73 29 0a 58 20 2a | 20 20 20 20 32 2e 20 20 |ces).X *| 2. |
|00004c80| 6e 75 6d 62 65 72 20 6f | 66 20 61 72 74 69 63 6c |number o|f articl|
|00004c90| 65 73 20 28 69 65 2e 20 | 32 36 29 0a 58 20 2a 20 |es (ie. |26).X * |
|00004ca0| 20 20 20 33 2e 20 20 6e | 75 6d 62 65 72 20 6f 66 | 3. n|umber of|
|00004cb0| 20 6c 61 73 74 20 72 65 | 61 64 20 61 72 74 69 63 | last re|ad artic|
|00004cc0| 6c 65 20 28 69 65 2e 20 | 32 31 30 29 0a 58 20 2a |le (ie. |210).X *|
|00004cd0| 20 20 20 20 34 2e 20 20 | 49 73 20 74 68 69 73 20 | 4. |Is this |
|00004ce0| 61 20 63 6f 6d 70 6c 65 | 74 65 2f 6b 69 6c 6c 65 |a comple|te/kille|
|00004cf0| 64 20 69 6e 64 65 78 20 | 66 69 6c 65 20 28 69 65 |d index |file (ie|
|00004d00| 2e 20 43 4f 4d 50 4c 45 | 54 45 2f 4b 49 4c 4c 45 |. COMPLE|TE/KILLE|
|00004d10| 44 29 0a 58 20 2a 0a 58 | 20 2a 20 20 69 6e 64 65 |D).X *.X| * inde|
|00004d20| 78 20 66 69 6c 65 20 72 | 65 63 6f 72 64 0a 58 20 |x file r|ecord.X |
|00004d30| 2a 20 20 20 20 31 2e 20 | 20 61 72 74 69 63 6c 65 |* 1. | article|
|00004d40| 20 6e 75 6d 62 65 72 20 | 20 20 20 28 69 65 2e 20 | number | (ie. |
|00004d50| 31 38 33 29 20 20 20 20 | 20 20 20 20 20 20 20 20 |183) | |
|00004d60| 20 20 20 5b 6d 61 6e 64 | 61 74 6f 72 79 5d 0a 58 | [mand|atory].X|
|00004d70| 20 2a 20 20 20 20 32 2e | 20 20 53 75 62 6a 65 63 | * 2.| Subjec|
|00004d80| 74 3a 20 6c 69 6e 65 20 | 20 20 20 20 28 69 65 2e |t: line | (ie.|
|00004d90| 20 57 68 69 63 68 20 6e | 65 77 73 72 65 61 64 65 | Which n|ewsreade|
|00004da0| 72 3f 29 20 5b 6d 61 6e | 64 61 74 6f 72 79 5d 0a |r?) [man|datory].|
|00004db0| 58 20 2a 20 20 20 20 33 | 2e 20 20 46 72 6f 6d 3a |X * 3|. From:|
|00004dc0| 20 6c 69 6e 65 20 28 61 | 64 64 72 29 20 28 69 65 | line (a|ddr) (ie|
|00004dd0| 2e 20 69 61 69 6e 40 6e | 6f 72 69 73 63 29 20 20 |. iain@n|orisc) |
|00004de0| 20 20 20 20 20 5b 6d 61 | 6e 64 61 74 6f 72 79 5d | [ma|ndatory]|
|00004df0| 0a 58 20 2a 20 20 20 20 | 34 2e 20 20 46 72 6f 6d |.X * |4. From|
|00004e00| 3a 20 6c 69 6e 65 20 28 | 6e 61 6d 65 29 20 28 69 |: line (|name) (i|
|00004e10| 65 2e 20 49 61 69 6e 20 | 4c 65 61 29 20 20 20 20 |e. Iain |Lea) |
|00004e20| 20 20 20 20 20 20 5b 6d | 61 6e 64 61 74 6f 72 79 | [m|andatory|
|00004e30| 5d 0a 58 20 2a 20 20 20 | 20 35 2e 20 20 44 61 74 |].X * | 5. Dat|
|00004e40| 65 3a 20 6f 66 20 70 6f | 73 74 69 6e 67 20 20 28 |e: of po|sting (|
|00004e50| 69 65 2e 20 39 31 31 32 | 33 31 31 32 35 39 35 39 |ie. 9112|31125959|
|00004e60| 29 20 20 20 20 20 20 5b | 6d 61 6e 64 61 74 6f 72 |) [|mandator|
|00004e70| 79 5d 0a 58 20 2a 20 20 | 20 20 36 2e 20 20 41 72 |y].X * | 6. Ar|
|00004e80| 63 68 69 76 65 3a 20 6e | 61 6d 65 20 20 20 20 20 |chive: n|ame |
|00004e90| 28 69 65 2e 20 63 6f 6d | 70 69 6c 65 72 29 20 20 |(ie. com|piler) |
|00004ea0| 20 20 20 20 20 20 20 20 | 5b 6f 70 74 69 6f 6e 61 | |[optiona|
|00004eb0| 6c 5d 0a 58 20 2a 20 20 | 20 20 37 2e 20 20 50 61 |l].X * | 7. Pa|
|00004ec0| 72 74 20 6e 75 6d 62 65 | 72 20 6f 66 20 41 72 63 |rt numbe|r of Arc|
|00004ed0| 68 69 76 65 3a 20 6e 61 | 6d 65 20 20 28 69 65 2e |hive: na|me (ie.|
|00004ee0| 20 30 31 29 20 20 20 20 | 5b 6f 70 74 69 6f 6e 61 | 01) |[optiona|
|00004ef0| 6c 5d 0a 58 20 2a 20 20 | 20 20 38 2e 20 20 50 61 |l].X * | 8. Pa|
|00004f00| 74 63 68 20 6e 75 6d 62 | 65 72 20 6f 66 20 41 72 |tch numb|er of Ar|
|00004f10| 63 68 69 76 65 3a 20 6e | 61 6d 65 20 28 69 65 2e |chive: n|ame (ie.|
|00004f20| 20 30 31 29 20 20 20 20 | 5b 6f 70 74 69 6f 6e 61 | 01) |[optiona|
|00004f30| 6c 5d 0a 58 20 2a 2f 0a | 58 0a 58 69 6e 74 20 72 |l].X */.|X.Xint r|
|00004f40| 65 61 64 5f 69 6e 64 65 | 78 5f 66 69 6c 65 20 28 |ead_inde|x_file (|
|00004f50| 67 72 6f 75 70 5f 6e 61 | 6d 65 29 0a 58 09 63 68 |group_na|me).X.ch|
|00004f60| 61 72 20 2a 67 72 6f 75 | 70 5f 6e 61 6d 65 3b 0a |ar *grou|p_name;.|
|00004f70| 58 7b 0a 58 09 69 6e 74 | 20 65 72 72 6f 72 20 3d |X{.X.int| error =|
|00004f80| 20 30 3b 0a 58 09 69 6e | 74 20 69 2c 20 6e 3b 0a | 0;.X.in|t i, n;.|
|00004f90| 58 09 63 68 61 72 20 62 | 75 66 5b 4c 45 4e 5d 2c |X.char b|uf[LEN],|
|00004fa0| 20 2a 70 3b 0a 58 09 46 | 49 4c 45 20 2a 66 70 20 | *p;.X.F|ILE *fp |
|00004fb0| 3d 20 4e 55 4c 4c 3b 0a | 58 0a 58 09 74 6f 70 20 |= NULL;.|X.X.top |
|00004fc0| 3d 20 30 3b 0a 58 09 6c | 61 73 74 5f 72 65 61 64 |= 0;.X.l|ast_read|
|00004fd0| 5f 61 72 74 69 63 6c 65 | 20 3d 20 30 4c 3b 0a 58 |_article| = 0L;.X|
|00004fe0| 0a 58 09 69 66 20 28 28 | 66 70 20 3d 20 6f 70 65 |.X.if ((|fp = ope|
|00004ff0| 6e 5f 69 6e 64 65 78 5f | 66 70 20 28 67 72 6f 75 |n_index_|fp (grou|
|00005000| 70 5f 6e 61 6d 65 29 29 | 20 3d 3d 20 4e 55 4c 4c |p_name))| == NULL|
|00005010| 29 20 7b 0a 58 09 09 72 | 65 74 75 72 6e 20 46 41 |) {.X..r|eturn FA|
|00005020| 4c 53 45 3b 0a 58 09 7d | 0a 58 0a 58 09 2f 2a 0a |LSE;.X.}|.X.X./*.|
|00005030| 58 09 20 2a 20 20 6c 6f | 61 64 20 68 65 61 64 65 |X. * lo|ad heade|
|00005040| 72 20 2d 20 64 69 73 63 | 61 72 64 20 67 72 6f 75 |r - disc|ard grou|
|00005050| 70 20 6e 61 6d 65 2c 20 | 6e 75 6d 2e 20 6f 66 20 |p name, |num. of |
|00005060| 61 72 74 73 20 69 6e 20 | 69 6e 64 65 78 20 66 69 |arts in |index fi|
|00005070| 6c 65 20 61 66 74 65 72 | 20 61 6e 79 20 61 72 74 |le after| any art|
|00005080| 73 20 77 65 72 65 20 6b | 69 6c 6c 65 64 0a 58 09 |s were k|illed.X.|
|00005090| 20 2a 2f 0a 58 09 69 66 | 20 28 66 67 65 74 73 28 | */.X.if| (fgets(|
|000050a0| 62 75 66 2c 20 73 69 7a | 65 6f 66 20 62 75 66 2c |buf, siz|eof buf,|
|000050b0| 20 66 70 29 20 3d 3d 20 | 4e 55 4c 4c 20 7c 7c 0a | fp) == |NULL ||.|
|000050c0| 58 09 09 66 67 65 74 73 | 28 62 75 66 2c 20 73 69 |X..fgets|(buf, si|
|000050d0| 7a 65 6f 66 20 62 75 66 | 2c 20 66 70 29 20 3d 3d |zeof buf|, fp) ==|
|000050e0| 20 4e 55 4c 4c 29 20 7b | 0a 58 09 09 65 72 72 6f | NULL) {|.X..erro|
|000050f0| 72 20 3d 20 30 3b 09 09 | 09 0a 58 09 09 67 6f 74 |r = 0;..|..X..got|
|00005100| 6f 20 63 6f 72 72 75 70 | 74 5f 69 6e 64 65 78 3b |o corrup|t_index;|
|00005110| 09 0a 58 09 7d 0a 58 09 | 69 20 3d 20 61 74 6f 69 |..X.}.X.|i = atoi|
|00005120| 20 28 62 75 66 29 3b 0a | 58 0a 58 09 2f 2a 0a 58 | (buf);.|X.X./*.X|
|00005130| 09 20 2a 20 6e 75 6d 2e | 20 6f 66 20 6c 61 73 74 |. * num.| of last|
|00005140| 5f 72 65 61 64 5f 61 72 | 74 69 63 6c 65 20 69 6e |_read_ar|ticle in|
|00005150| 63 6c 75 64 69 6e 67 20 | 61 6e 79 20 74 68 61 74 |cluding |any that|
|00005160| 20 77 65 72 65 20 6b 69 | 6c 6c 65 64 0a 58 09 20 | were ki|lled.X. |
|00005170| 2a 2f 0a 58 09 69 66 20 | 28 66 67 65 74 73 28 62 |*/.X.if |(fgets(b|
|00005180| 75 66 2c 20 73 69 7a 65 | 6f 66 20 62 75 66 2c 20 |uf, size|of buf, |
|00005190| 66 70 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |fp) == N|ULL) {.X|
|000051a0| 09 09 65 72 72 6f 72 20 | 3d 20 31 3b 09 09 09 09 |..error |= 1;....|
|000051b0| 0a 58 09 09 67 6f 74 6f | 20 63 6f 72 72 75 70 74 |.X..goto| corrupt|
|000051c0| 5f 69 6e 64 65 78 3b 09 | 0a 58 09 7d 09 09 09 09 |_index;.|.X.}....|
|000051d0| 09 09 09 0a 58 09 6c 61 | 73 74 5f 72 65 61 64 5f |....X.la|st_read_|
|000051e0| 61 72 74 69 63 6c 65 20 | 3d 20 28 6c 6f 6e 67 29 |article |= (long)|
|000051f0| 20 61 74 6f 6c 20 28 62 | 75 66 29 3b 0a 58 09 0a | atol (b|uf);.X..|
|00005200| 58 09 2f 2a 0a 58 09 20 | 2a 20 20 6c 6f 61 64 20 |X./*.X. |* load |
|00005210| 61 72 74 69 63 6c 65 73 | 0a 58 09 20 2a 2f 0a 58 |articles|.X. */.X|
|00005220| 09 66 6f 72 20 28 3b 20 | 74 6f 70 20 3c 20 69 20 |.for (; |top < i |
|00005230| 3b 20 74 6f 70 2b 2b 29 | 20 7b 0a 58 09 09 69 66 |; top++)| {.X..if|
|00005240| 20 28 74 6f 70 20 3e 3d | 20 6d 61 78 5f 61 72 74 | (top >=| max_art|
|00005250| 29 20 7b 0a 58 09 09 09 | 65 78 70 61 6e 64 5f 61 |) {.X...|expand_a|
|00005260| 72 74 20 28 29 3b 0a 58 | 09 09 7d 0a 58 0a 58 09 |rt ();.X|..}.X.X.|
|00005270| 09 61 72 74 73 5b 74 6f | 70 5d 2e 74 68 72 65 61 |.arts[to|p].threa|
|00005280| 64 20 3d 20 41 52 54 5f | 45 58 50 49 52 45 44 3b |d = ART_|EXPIRED;|
|00005290| 0a 58 09 09 73 65 74 5f | 61 72 74 69 63 6c 65 20 |.X..set_|article |
|000052a0| 28 26 61 72 74 73 5b 74 | 6f 70 5d 29 3b 0a 58 0a |(&arts[t|op]);.X.|
|000052b0| 58 09 09 2f 2a 0a 58 09 | 09 20 2a 20 41 72 74 69 |X../*.X.|. * Arti|
|000052c0| 63 6c 65 20 6e 6f 2e 0a | 58 09 09 20 2a 2f 0a 58 |cle no..|X.. */.X|
|000052d0| 09 09 69 66 20 28 66 67 | 65 74 73 28 62 75 66 2c |..if (fg|ets(buf,|
|000052e0| 20 73 69 7a 65 6f 66 20 | 62 75 66 2c 20 66 70 29 | sizeof |buf, fp)|
|000052f0| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 09 09 | == NULL|) {.X...|
|00005300| 65 72 72 6f 72 20 3d 20 | 32 3b 0a 58 09 09 09 67 |error = |2;.X...g|
|00005310| 6f 74 6f 20 63 6f 72 72 | 75 70 74 5f 69 6e 64 65 |oto corr|upt_inde|
|00005320| 78 3b 0a 58 09 09 7d 0a | 58 09 09 61 72 74 73 5b |x;.X..}.|X..arts[|
|00005330| 74 6f 70 5d 2e 61 72 74 | 6e 75 6d 20 3d 20 28 6c |top].art|num = (l|
|00005340| 6f 6e 67 29 20 61 74 6f | 6c 20 28 62 75 66 29 3b |ong) ato|l (buf);|
|00005350| 0a 58 0a 58 09 09 2f 2a | 0a 58 09 09 20 2a 20 53 |.X.X../*|.X.. * S|
|00005360| 75 62 6a 65 63 74 3a 0a | 58 09 09 20 2a 2f 0a 58 |ubject:.|X.. */.X|
|00005370| 09 09 69 66 20 28 66 67 | 65 74 73 28 62 75 66 2c |..if (fg|ets(buf,|
|00005380| 20 73 69 7a 65 6f 66 20 | 62 75 66 2c 20 66 70 29 | sizeof |buf, fp)|
|00005390| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 09 09 | == NULL|) {.X...|
|000053a0| 65 72 72 6f 72 20 3d 20 | 33 3b 0a 58 09 09 09 67 |error = |3;.X...g|
|000053b0| 6f 74 6f 20 63 6f 72 72 | 75 70 74 5f 69 6e 64 65 |oto corr|upt_inde|
|000053c0| 78 3b 0a 58 09 09 7d 0a | 58 0a 58 09 09 69 66 20 |x;.X..}.|X.X..if |
|000053d0| 28 62 75 66 5b 30 5d 20 | 3d 3d 20 27 25 27 29 20 |(buf[0] |== '%') |
|000053e0| 7b 0a 58 09 09 09 6e 20 | 3d 20 61 74 6f 69 20 28 |{.X...n |= atoi (|
|000053f0| 26 62 75 66 5b 31 5d 29 | 3b 0a 58 09 09 09 69 66 |&buf[1])|;.X...if|
|00005400| 20 28 6e 20 3e 3d 20 74 | 6f 70 20 7c 7c 20 6e 20 | (n >= t|op || n |
|00005410| 3c 20 30 29 20 7b 0a 58 | 09 09 09 09 65 72 72 6f |< 0) {.X|....erro|
|00005420| 72 20 3d 20 34 3b 0a 58 | 09 09 09 09 67 6f 74 6f |r = 4;.X|....goto|
|00005430| 20 63 6f 72 72 75 70 74 | 5f 69 6e 64 65 78 3b 0a | corrupt|_index;.|
|00005440| 58 09 09 09 7d 0a 58 09 | 09 09 61 72 74 73 5b 74 |X...}.X.|..arts[t|
|00005450| 6f 70 5d 2e 73 75 62 6a | 65 63 74 20 3d 20 61 72 |op].subj|ect = ar|
|00005460| 74 73 5b 6e 5d 2e 73 75 | 62 6a 65 63 74 3b 0a 58 |ts[n].su|bject;.X|
|00005470| 09 09 7d 20 65 6c 73 65 | 20 69 66 20 28 62 75 66 |..} else| if (buf|
|00005480| 5b 30 5d 20 3d 3d 20 27 | 20 27 29 20 7b 0a 58 09 |[0] == '| ') {.X.|
|00005490| 09 09 66 6f 72 20 28 70 | 20 3d 20 26 62 75 66 5b |..for (p| = &buf[|
|000054a0| 31 5d 3b 20 20 2a 70 20 | 26 26 20 2a 70 20 21 3d |1]; *p |&& *p !=|
|000054b0| 20 27 5c 6e 27 3b 20 70 | 2b 2b 29 0a 58 09 09 09 | '\n'; p|++).X...|
|000054c0| 09 63 6f 6e 74 69 6e 75 | 65 3b 09 0a 58 09 09 09 |.continu|e;..X...|
|000054d0| 2a 70 20 3d 20 27 5c 30 | 27 3b 0a 58 09 09 09 61 |*p = '\0|';.X...a|
|000054e0| 72 74 73 5b 74 6f 70 5d | 2e 73 75 62 6a 65 63 74 |rts[top]|.subject|
|000054f0| 20 3d 20 68 61 73 68 5f | 73 74 72 20 28 26 62 75 | = hash_|str (&bu|
|00005500| 66 5b 31 5d 29 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |f[1]);.X|..} else|
|00005510| 20 7b 0a 58 09 09 09 65 | 72 72 6f 72 20 3d 20 35 | {.X...e|rror = 5|
|00005520| 3b 0a 58 09 09 09 67 6f | 74 6f 20 63 6f 72 72 75 |;.X...go|to corru|
|00005530| 70 74 5f 69 6e 64 65 78 | 3b 0a 58 09 09 7d 0a 58 |pt_index|;.X..}.X|
|00005540| 09 09 09 0a 58 09 09 2f | 2a 0a 58 09 09 20 2a 20 |....X../|*.X.. * |
|00005550| 46 72 6f 6d 3a 20 28 61 | 64 64 72 20 70 61 72 74 |From: (a|ddr part|
|00005560| 29 0a 58 09 09 20 2a 2f | 0a 58 09 09 69 66 20 28 |).X.. */|.X..if (|
|00005570| 66 67 65 74 73 28 62 75 | 66 2c 20 73 69 7a 65 6f |fgets(bu|f, sizeo|
|00005580| 66 20 62 75 66 2c 20 66 | 70 29 20 3d 3d 20 4e 55 |f buf, f|p) == NU|
|00005590| 4c 4c 29 20 7b 0a 58 09 | 09 09 65 72 72 6f 72 20 |LL) {.X.|..error |
|000055a0| 3d 20 36 3b 0a 58 09 09 | 09 67 6f 74 6f 20 63 6f |= 6;.X..|.goto co|
|000055b0| 72 72 75 70 74 5f 69 6e | 64 65 78 3b 0a 58 09 09 |rrupt_in|dex;.X..|
|000055c0| 7d 0a 58 0a 58 09 09 69 | 66 20 28 62 75 66 5b 30 |}.X.X..i|f (buf[0|
|000055d0| 5d 20 3d 3d 20 27 25 27 | 29 20 7b 0a 58 09 09 09 |] == '%'|) {.X...|
|000055e0| 6e 20 3d 20 61 74 6f 69 | 20 28 26 62 75 66 5b 31 |n = atoi| (&buf[1|
|000055f0| 5d 29 3b 0a 58 09 09 09 | 69 66 20 28 6e 20 3e 3d |]);.X...|if (n >=|
|00005600| 20 74 6f 70 20 7c 7c 20 | 6e 20 3c 20 30 29 20 7b | top || |n < 0) {|
|00005610| 0a 58 09 09 09 09 65 72 | 72 6f 72 20 3d 20 37 3b |.X....er|ror = 7;|
|00005620| 0a 58 09 09 09 09 67 6f | 74 6f 20 63 6f 72 72 75 |.X....go|to corru|
|00005630| 70 74 5f 69 6e 64 65 78 | 3b 0a 58 09 09 09 7d 0a |pt_index|;.X...}.|
|00005640| 58 09 09 09 61 72 74 73 | 5b 74 6f 70 5d 2e 66 72 |X...arts|[top].fr|
|00005650| 6f 6d 20 3d 20 61 72 74 | 73 5b 6e 5d 2e 66 72 6f |om = art|s[n].fro|
|00005660| 6d 3b 0a 58 09 09 7d 20 | 65 6c 73 65 20 69 66 20 |m;.X..} |else if |
|00005670| 28 62 75 66 5b 30 5d 20 | 3d 3d 20 27 20 27 29 20 |(buf[0] |== ' ') |
|00005680| 7b 0a 58 09 09 09 66 6f | 72 20 28 70 20 3d 20 26 |{.X...fo|r (p = &|
|00005690| 62 75 66 5b 31 5d 3b 20 | 20 2a 70 20 26 26 20 2a |buf[1]; | *p && *|
|000056a0| 70 20 21 3d 20 27 5c 6e | 27 3b 20 70 2b 2b 29 0a |p != '\n|'; p++).|
|000056b0| 58 09 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |X....con|tinue;.X|
|000056c0| 09 09 09 2a 70 20 3d 20 | 27 5c 30 27 3b 0a 58 09 |...*p = |'\0';.X.|
|000056d0| 09 09 61 72 74 73 5b 74 | 6f 70 5d 2e 66 72 6f 6d |..arts[t|op].from|
|000056e0| 20 3d 20 68 61 73 68 5f | 73 74 72 20 28 26 62 75 | = hash_|str (&bu|
|000056f0| 66 5b 31 5d 29 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |f[1]);.X|..} else|
|00005700| 20 7b 0a 58 09 09 09 65 | 72 72 6f 72 20 3d 20 38 | {.X...e|rror = 8|
|00005710| 3b 0a 58 09 09 09 67 6f | 74 6f 20 63 6f 72 72 75 |;.X...go|to corru|
|00005720| 70 74 5f 69 6e 64 65 78 | 3b 0a 58 09 09 7d 0a 58 |pt_index|;.X..}.X|
|00005730| 0a 58 09 09 2f 2a 0a 58 | 09 09 20 2a 20 46 72 6f |.X../*.X|.. * Fro|
|00005740| 6d 3a 20 28 66 75 6c 6c | 20 6e 61 6d 65 29 0a 58 |m: (full| name).X|
|00005750| 09 09 20 2a 2f 0a 58 09 | 09 69 66 20 28 66 67 65 |.. */.X.|.if (fge|
|00005760| 74 73 28 62 75 66 2c 20 | 73 69 7a 65 6f 66 20 62 |ts(buf, |sizeof b|
|00005770| 75 66 2c 20 66 70 29 20 | 3d 3d 20 4e 55 4c 4c 29 |uf, fp) |== NULL)|
|00005780| 20 7b 0a 58 09 09 09 65 | 72 72 6f 72 20 3d 20 39 | {.X...e|rror = 9|
|00005790| 3b 0a 58 09 09 09 67 6f | 74 6f 20 63 6f 72 72 75 |;.X...go|to corru|
|000057a0| 70 74 5f 69 6e 64 65 78 | 3b 0a 58 09 09 7d 0a 58 |pt_index|;.X..}.X|
|000057b0| 0a 58 09 09 69 66 20 28 | 62 75 66 5b 30 5d 20 3d |.X..if (|buf[0] =|
|000057c0| 3d 20 27 25 27 29 20 7b | 0a 58 09 09 09 6e 20 3d |= '%') {|.X...n =|
|000057d0| 20 61 74 6f 69 20 28 26 | 62 75 66 5b 31 5d 29 3b | atoi (&|buf[1]);|
|000057e0| 0a 58 09 09 09 69 66 20 | 28 6e 20 3e 20 74 6f 70 |.X...if |(n > top|
|000057f0| 20 7c 7c 20 6e 20 3c 20 | 30 29 20 7b 0a 58 09 09 | || n < |0) {.X..|
|00005800| 09 09 65 72 72 6f 72 20 | 3d 20 31 30 3b 0a 58 09 |..error |= 10;.X.|
|00005810| 09 09 09 67 6f 74 6f 20 | 63 6f 72 72 75 70 74 5f |...goto |corrupt_|
|00005820| 69 6e 64 65 78 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |index;.X|...}.X..|
|00005830| 09 69 66 20 28 6e 20 3d | 3d 20 74 6f 70 29 20 7b |.if (n =|= top) {|
|00005840| 09 09 2f 2a 20 6e 6f 20 | 66 75 6c 6c 20 6e 61 6d |../* no |full nam|
|00005850| 65 20 73 6f 20 2e 6e 61 | 6d 65 20 3d 20 2e 66 72 |e so .na|me = .fr|
|00005860| 6f 6d 20 2a 2f 0a 58 09 | 09 09 09 61 72 74 73 5b |om */.X.|...arts[|
|00005870| 74 6f 70 5d 2e 6e 61 6d | 65 20 3d 20 61 72 74 73 |top].nam|e = arts|
|00005880| 5b 74 6f 70 5d 2e 66 72 | 6f 6d 3b 0a 58 09 09 09 |[top].fr|om;.X...|
|00005890| 7d 20 65 6c 73 65 20 7b | 0a 58 09 09 09 09 61 72 |} else {|.X....ar|
|000058a0| 74 73 5b 74 6f 70 5d 2e | 6e 61 6d 65 20 3d 20 61 |ts[top].|name = a|
|000058b0| 72 74 73 5b 6e 5d 2e 6e | 61 6d 65 3b 0a 58 09 09 |rts[n].n|ame;.X..|
|000058c0| 09 7d 0a 58 09 09 7d 20 | 65 6c 73 65 20 69 66 20 |.}.X..} |else if |
|000058d0| 28 62 75 66 5b 30 5d 20 | 3d 3d 20 27 20 27 29 20 |(buf[0] |== ' ') |
|000058e0| 7b 0a 58 09 09 09 66 6f | 72 20 28 70 20 3d 20 26 |{.X...fo|r (p = &|
|000058f0| 62 75 66 5b 31 5d 3b 20 | 20 2a 70 20 26 26 20 2a |buf[1]; | *p && *|
|00005900| 70 20 21 3d 20 27 5c 6e | 27 3b 20 70 2b 2b 29 0a |p != '\n|'; p++).|
|00005910| 58 09 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |X....con|tinue;.X|
|00005920| 09 09 09 2a 70 20 3d 20 | 27 5c 30 27 3b 0a 58 09 |...*p = |'\0';.X.|
|00005930| 09 09 61 72 74 73 5b 74 | 6f 70 5d 2e 6e 61 6d 65 |..arts[t|op].name|
|00005940| 20 3d 20 68 61 73 68 5f | 73 74 72 20 28 26 62 75 | = hash_|str (&bu|
|00005950| 66 5b 31 5d 29 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |f[1]);.X|..} else|
|00005960| 20 7b 0a 58 09 09 09 65 | 72 72 6f 72 20 3d 20 31 | {.X...e|rror = 1|
|00005970| 31 3b 0a 58 09 09 09 67 | 6f 74 6f 20 63 6f 72 72 |1;.X...g|oto corr|
|00005980| 75 70 74 5f 69 6e 64 65 | 78 3b 0a 58 09 09 7d 0a |upt_inde|x;.X..}.|
|00005990| 58 0a 58 09 09 2f 2a 0a | 58 09 09 20 2a 20 44 61 |X.X../*.|X.. * Da|
|000059a0| 74 65 3a 0a 58 09 09 20 | 2a 2f 0a 58 09 09 69 66 |te:.X.. |*/.X..if|
|000059b0| 20 28 66 67 65 74 73 28 | 62 75 66 2c 20 73 69 7a | (fgets(|buf, siz|
|000059c0| 65 6f 66 20 62 75 66 2c | 20 66 70 29 20 3d 3d 20 |eof buf,| fp) == |
|000059d0| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 09 65 72 72 6f |NULL) {.|X...erro|
|000059e0| 72 20 3d 20 31 32 3b 0a | 58 09 09 09 67 6f 74 6f |r = 12;.|X...goto|
|000059f0| 20 63 6f 72 72 75 70 74 | 5f 69 6e 64 65 78 3b 0a | corrupt|_index;.|
|00005a00| 58 09 09 7d 0a 58 0a 58 | 09 09 62 75 66 5b 73 74 |X..}.X.X|..buf[st|
|00005a10| 72 6c 65 6e 20 28 62 75 | 66 29 2d 31 5d 20 3d 20 |rlen (bu|f)-1] = |
|00005a20| 27 5c 30 27 3b 0a 58 09 | 09 6d 79 5f 73 74 72 6e |'\0';.X.|.my_strn|
|00005a30| 63 70 79 20 28 61 72 74 | 73 5b 74 6f 70 5d 2e 64 |cpy (art|s[top].d|
|00005a40| 61 74 65 2c 20 62 75 66 | 2c 20 31 32 29 3b 0a 58 |ate, buf|, 12);.X|
|00005a50| 0a 58 09 09 2f 2a 0a 58 | 09 09 20 2a 20 41 72 63 |.X../*.X|.. * Arc|
|00005a60| 68 69 76 65 2d 6e 61 6d | 65 3a 0a 58 09 09 20 2a |hive-nam|e:.X.. *|
|00005a70| 2f 0a 58 09 09 69 66 20 | 28 66 67 65 74 73 28 62 |/.X..if |(fgets(b|
|00005a80| 75 66 2c 20 73 69 7a 65 | 6f 66 20 62 75 66 2c 20 |uf, size|of buf, |
|00005a90| 66 70 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |fp) == N|ULL) {.X|
|00005aa0| 09 09 09 65 72 72 6f 72 | 20 3d 20 31 33 3b 0a 58 |...error| = 13;.X|
|00005ab0| 09 09 09 67 6f 74 6f 20 | 63 6f 72 72 75 70 74 5f |...goto |corrupt_|
|00005ac0| 69 6e 64 65 78 3b 0a 58 | 09 09 7d 0a 58 0a 58 09 |index;.X|..}.X.X.|
|00005ad0| 09 69 66 20 28 62 75 66 | 5b 30 5d 20 3d 3d 20 27 |.if (buf|[0] == '|
|00005ae0| 5c 6e 27 29 20 7b 0a 58 | 09 09 09 61 72 74 73 5b |\n') {.X|...arts[|
|00005af0| 74 6f 70 5d 2e 61 72 63 | 68 69 76 65 20 3d 20 28 |top].arc|hive = (|
|00005b00| 63 68 61 72 20 2a 29 20 | 30 3b 0a 58 09 09 7d 20 |char *) |0;.X..} |
|00005b10| 65 6c 73 65 20 69 66 20 | 28 62 75 66 5b 30 5d 20 |else if |(buf[0] |
|00005b20| 3d 3d 20 27 25 27 29 20 | 7b 0a 58 09 09 09 6e 20 |== '%') |{.X...n |
|00005b30| 3d 20 61 74 6f 69 20 28 | 26 62 75 66 5b 31 5d 29 |= atoi (|&buf[1])|
|00005b40| 3b 0a 58 09 09 09 69 66 | 20 28 6e 20 3e 20 74 6f |;.X...if| (n > to|
|00005b50| 70 20 7c 7c 20 6e 20 3c | 20 30 29 20 7b 0a 58 09 |p || n <| 0) {.X.|
|00005b60| 09 09 09 65 72 72 6f 72 | 20 3d 20 31 34 3b 0a 58 |...error| = 14;.X|
|00005b70| 09 09 09 09 67 6f 74 6f | 20 63 6f 72 72 75 70 74 |....goto| corrupt|
|00005b80| 5f 69 6e 64 65 78 3b 0a | 58 09 09 09 7d 0a 58 09 |_index;.|X...}.X.|
|00005b90| 09 09 61 72 74 73 5b 74 | 6f 70 5d 2e 61 72 63 68 |..arts[t|op].arch|
|00005ba0| 69 76 65 20 3d 20 61 72 | 74 73 5b 6e 5d 2e 61 72 |ive = ar|ts[n].ar|
|00005bb0| 63 68 69 76 65 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |chive;.X|..} else|
|00005bc0| 20 69 66 20 28 62 75 66 | 5b 30 5d 20 3d 3d 20 27 | if (buf|[0] == '|
|00005bd0| 20 27 29 20 7b 0a 58 09 | 09 09 66 6f 72 20 28 70 | ') {.X.|..for (p|
|00005be0| 20 3d 20 26 62 75 66 5b | 31 5d 3b 20 2a 70 20 26 | = &buf[|1]; *p &|
|00005bf0| 26 20 2a 70 20 21 3d 20 | 27 5c 6e 27 20 3b 20 70 |& *p != |'\n' ; p|
|00005c00| 2b 2b 29 0a 58 09 09 09 | 09 63 6f 6e 74 69 6e 75 |++).X...|.continu|
|00005c10| 65 3b 0a 58 09 09 09 2a | 70 20 3d 20 27 5c 30 27 |e;.X...*|p = '\0'|
|00005c20| 3b 0a 58 09 09 09 61 72 | 74 73 5b 74 6f 70 5d 2e |;.X...ar|ts[top].|
|00005c30| 61 72 63 68 69 76 65 20 | 3d 20 68 61 73 68 5f 73 |archive |= hash_s|
|00005c40| 74 72 20 28 26 62 75 66 | 5b 31 5d 29 3b 0a 58 09 |tr (&buf|[1]);.X.|
|00005c50| 09 7d 20 65 6c 73 65 20 | 7b 0a 58 09 09 09 65 72 |.} else |{.X...er|
|00005c60| 72 6f 72 20 3d 20 31 35 | 3b 0a 58 09 09 09 67 6f |ror = 15|;.X...go|
|00005c70| 74 6f 20 63 6f 72 72 75 | 70 74 5f 69 6e 64 65 78 |to corru|pt_index|
|00005c80| 3b 0a 58 09 09 7d 0a 58 | 0a 58 09 09 2f 2a 0a 58 |;.X..}.X|.X../*.X|
|00005c90| 09 09 20 2a 20 70 61 72 | 74 20 6e 6f 2e 0a 58 09 |.. * par|t no..X.|
|00005ca0| 09 20 2a 2f 0a 58 09 09 | 69 66 20 28 66 67 65 74 |. */.X..|if (fget|
|00005cb0| 73 28 62 75 66 2c 20 73 | 69 7a 65 6f 66 20 62 75 |s(buf, s|izeof bu|
|00005cc0| 66 2c 20 66 70 29 20 3d | 3d 20 4e 55 4c 4c 29 20 |f, fp) =|= NULL) |
|00005cd0| 7b 0a 58 09 09 09 65 72 | 72 6f 72 20 3d 20 31 36 |{.X...er|ror = 16|
|00005ce0| 3b 0a 58 09 09 09 67 6f | 74 6f 20 63 6f 72 72 75 |;.X...go|to corru|
|00005cf0| 70 74 5f 69 6e 64 65 78 | 3b 0a 58 09 09 7d 0a 58 |pt_index|;.X..}.X|
|00005d00| 0a 58 09 09 69 66 20 28 | 62 75 66 5b 30 5d 20 21 |.X..if (|buf[0] !|
|00005d10| 3d 20 27 20 27 29 20 7b | 20 0a 58 09 09 09 62 75 |= ' ') {| .X...bu|
|00005d20| 66 5b 73 74 72 6c 65 6e | 20 28 62 75 66 29 2d 31 |f[strlen| (buf)-1|
|00005d30| 5d 20 3d 20 27 5c 30 27 | 3b 0a 58 09 09 09 61 72 |] = '\0'|;.X...ar|
|00005d40| 74 73 5b 74 6f 70 5d 2e | 70 61 72 74 20 3d 20 73 |ts[top].|part = s|
|00005d50| 74 72 5f 64 75 70 20 28 | 62 75 66 29 3b 0a 58 09 |tr_dup (|buf);.X.|
|00005d60| 09 7d 0a 58 0a 58 09 09 | 2f 2a 0a 58 09 09 20 2a |.}.X.X..|/*.X.. *|
|00005d70| 20 70 61 74 63 68 20 6e | 6f 2e 0a 58 09 09 20 2a | patch n|o..X.. *|
|00005d80| 2f 0a 58 09 09 69 66 20 | 28 66 67 65 74 73 28 62 |/.X..if |(fgets(b|
|00005d90| 75 66 2c 20 73 69 7a 65 | 6f 66 20 62 75 66 2c 20 |uf, size|of buf, |
|00005da0| 66 70 29 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |fp) == N|ULL) {.X|
|00005db0| 09 09 09 65 72 72 6f 72 | 20 3d 20 31 37 3b 0a 58 |...error| = 17;.X|
|00005dc0| 09 09 09 67 6f 74 6f 20 | 63 6f 72 72 75 70 74 5f |...goto |corrupt_|
|00005dd0| 69 6e 64 65 78 3b 0a 58 | 09 09 7d 0a 58 0a 58 09 |index;.X|..}.X.X.|
|00005de0| 09 69 66 20 28 62 75 66 | 5b 30 5d 20 21 3d 20 27 |.if (buf|[0] != '|
|00005df0| 20 27 29 20 7b 20 0a 58 | 09 09 09 62 75 66 5b 73 | ') { .X|...buf[s|
|00005e00| 74 72 6c 65 6e 20 28 62 | 75 66 29 2d 31 5d 20 3d |trlen (b|uf)-1] =|
|00005e10| 20 27 5c 30 27 3b 0a 58 | 09 09 09 61 72 74 73 5b | '\0';.X|...arts[|
|00005e20| 74 6f 70 5d 2e 70 61 74 | 63 68 20 3d 20 73 74 72 |top].pat|ch = str|
|00005e30| 5f 64 75 70 20 28 62 75 | 66 29 3b 0a 58 09 09 7d |_dup (bu|f);.X..}|
|00005e40| 0a 58 0a 58 09 09 64 65 | 62 75 67 5f 70 72 69 6e |.X.X..de|bug_prin|
|00005e50| 74 5f 68 65 61 64 65 72 | 20 28 26 61 72 74 73 5b |t_header| (&arts[|
|00005e60| 74 6f 70 5d 29 3b 0a 58 | 09 7d 0a 58 0a 58 09 66 |top]);.X|.}.X.X.f|
|00005e70| 63 6c 6f 73 65 28 66 70 | 29 3b 0a 58 09 72 65 74 |close(fp|);.X.ret|
|00005e80| 75 72 6e 20 54 52 55 45 | 3b 0a 58 0a 58 63 6f 72 |urn TRUE|;.X.Xcor|
|00005e90| 72 75 70 74 5f 69 6e 64 | 65 78 3a 0a 58 09 69 66 |rupt_ind|ex:.X.if|
|00005ea0| 20 28 21 20 75 70 64 61 | 74 65 29 20 7b 0a 58 09 | (! upda|te) {.X.|
|00005eb0| 09 73 70 72 69 6e 74 66 | 20 28 6d 73 67 2c 20 74 |.sprintf| (msg, t|
|00005ec0| 78 74 5f 63 6f 72 72 75 | 70 74 5f 69 6e 64 65 78 |xt_corru|pt_index|
|00005ed0| 2c 20 69 6e 64 65 78 5f | 66 69 6c 65 2c 20 65 72 |, index_|file, er|
|00005ee0| 72 6f 72 2c 20 74 6f 70 | 29 3b 20 0a 58 09 09 65 |ror, top|); .X..e|
|00005ef0| 72 72 6f 72 5f 6d 65 73 | 73 61 67 65 20 28 6d 73 |rror_mes|sage (ms|
|00005f00| 67 2c 20 22 22 29 3b 0a | 58 09 7d 0a 58 0a 58 09 |g, "");.|X.}.X.X.|
|00005f10| 69 66 20 28 64 65 62 75 | 67 20 3d 3d 20 32 29 20 |if (debu|g == 2) |
|00005f20| 7b 0a 58 09 09 73 70 72 | 69 6e 74 66 20 28 6d 73 |{.X..spr|intf (ms|
|00005f30| 67 2c 20 22 63 70 20 25 | 73 20 49 4e 44 45 58 2e |g, "cp %|s INDEX.|
|00005f40| 42 41 44 22 2c 20 69 6e | 64 65 78 5f 66 69 6c 65 |BAD", in|dex_file|
|00005f50| 29 3b 0a 58 09 09 73 79 | 73 74 65 6d 20 28 6d 73 |);.X..sy|stem (ms|
|00005f60| 67 29 3b 0a 58 09 7d 0a | 58 0a 58 09 6c 61 73 74 |g);.X.}.|X.X.last|
|00005f70| 5f 72 65 61 64 5f 61 72 | 74 69 63 6c 65 20 3d 20 |_read_ar|ticle = |
|00005f80| 30 4c 3b 0a 58 09 69 66 | 20 28 66 70 29 20 7b 0a |0L;.X.if| (fp) {.|
|00005f90| 58 09 09 66 63 6c 6f 73 | 65 28 66 70 29 3b 0a 58 |X..fclos|e(fp);.X|
|00005fa0| 09 7d 09 0a 58 09 73 65 | 74 5f 74 69 6e 5f 75 69 |.}..X.se|t_tin_ui|
|00005fb0| 64 5f 67 69 64 28 29 3b | 0a 58 09 75 6e 6c 69 6e |d_gid();|.X.unlin|
|00005fc0| 6b 20 28 69 6e 64 65 78 | 5f 66 69 6c 65 29 3b 0a |k (index|_file);.|
|00005fd0| 58 09 73 65 74 5f 72 65 | 61 6c 5f 75 69 64 5f 67 |X.set_re|al_uid_g|
|00005fe0| 69 64 28 29 3b 0a 58 09 | 74 6f 70 20 3d 20 30 3b |id();.X.|top = 0;|
|00005ff0| 0a 58 09 72 65 74 75 72 | 6e 20 46 41 4c 53 45 3b |.X.retur|n FALSE;|
|00006000| 0a 58 7d 0a 58 0a 58 0a | 58 2f 2a 0a 58 20 2a 20 |.X}.X.X.|X/*.X * |
|00006010| 20 4c 6f 6f 6b 20 69 6e | 20 74 68 65 20 6c 6f 63 | Look in| the loc|
|00006020| 61 6c 20 24 48 4f 4d 45 | 2f 52 43 44 49 52 2f 49 |al $HOME|/RCDIR/I|
|00006030| 4e 44 45 58 44 49 52 20 | 28 6f 72 20 77 68 65 72 |NDEXDIR |(or wher|
|00006040| 65 76 65 72 29 20 64 69 | 72 65 63 74 6f 72 79 20 |ever) di|rectory |
|00006050| 66 6f 72 20 74 68 65 0a | 58 20 2a 20 20 69 6e 64 |for the.|X * ind|
|00006060| 65 78 20 66 69 6c 65 20 | 66 6f 72 20 74 68 65 20 |ex file |for the |
|00006070| 67 69 76 65 6e 20 67 72 | 6f 75 70 2e 20 20 48 61 |given gr|oup. Ha|
|00006080| 73 68 69 6e 67 20 74 68 | 65 20 67 72 6f 75 70 20 |shing th|e group |
|00006090| 6e 61 6d 65 20 67 65 74 | 73 0a 58 20 2a 20 20 61 |name get|s.X * a|
|000060a0| 20 6e 75 6d 62 65 72 2e | 20 20 53 65 65 20 69 66 | number.| See if|
|000060b0| 20 74 68 61 74 20 23 2e | 31 20 66 69 6c 65 20 65 | that #.|1 file e|
|000060c0| 78 69 73 74 73 3b 20 69 | 66 20 73 6f 2c 20 72 65 |xists; i|f so, re|
|000060d0| 61 64 20 66 69 72 73 74 | 20 6c 69 6e 65 2e 0a 58 |ad first| line..X|
|000060e0| 20 2a 20 20 47 72 6f 75 | 70 20 77 65 20 77 61 6e | * Grou|p we wan|
|000060f0| 74 3f 20 20 49 66 20 6e | 6f 2c 20 74 72 79 20 23 |t? If n|o, try #|
|00006100| 2e 32 2e 20 20 52 65 70 | 65 61 74 20 75 6e 74 69 |.2. Rep|eat unti|
|00006110| 6c 20 6e 6f 20 73 75 63 | 68 20 66 69 6c 65 20 6f |l no suc|h file o|
|00006120| 72 0a 58 20 2a 20 20 77 | 65 20 66 69 6e 64 20 61 |r.X * w|e find a|
|00006130| 6e 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |n existi|ng file |
|00006140| 74 68 61 74 20 6d 61 74 | 63 68 65 73 20 6f 75 72 |that mat|ches our|
|00006150| 20 67 72 6f 75 70 2e 0a | 58 20 2a 2f 0a 58 0a 58 | group..|X */.X.X|
|00006160| 76 6f 69 64 20 66 69 6e | 64 5f 69 6e 64 65 78 5f |void fin|d_index_|
|00006170| 66 69 6c 65 20 28 67 72 | 6f 75 70 29 0a 58 09 63 |file (gr|oup).X.c|
|00006180| 68 61 72 20 2a 67 72 6f | 75 70 3b 0a 58 7b 0a 58 |har *gro|up;.X{.X|
|00006190| 09 63 68 61 72 20 2a 70 | 3b 0a 58 09 46 49 4c 45 |.char *p|;.X.FILE|
|000061a0| 20 2a 66 70 3b 0a 58 09 | 69 6e 74 20 69 20 3d 20 | *fp;.X.|int i = |
|000061b0| 31 3b 0a 58 09 73 74 61 | 74 69 63 20 63 68 61 72 |1;.X.sta|tic char|
|000061c0| 20 62 75 66 5b 4c 45 4e | 5d 3b 0a 58 09 63 68 61 | buf[LEN|];.X.cha|
|000061d0| 72 20 64 69 72 5b 50 41 | 54 48 5f 4c 45 4e 5d 3b |r dir[PA|TH_LEN];|
|000061e0| 0a 58 09 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |.X.unsig|ned long|
|000061f0| 20 68 3b 0a 58 0a 58 09 | 68 20 3d 20 68 61 73 68 | h;.X.X.|h = hash|
|00006200| 5f 67 72 6f 75 70 6e 61 | 6d 65 20 28 67 72 6f 75 |_groupna|me (grou|
|00006210| 70 29 3b 0a 58 0a 58 09 | 69 66 20 28 72 65 61 64 |p);.X.X.|if (read|
|00006220| 5f 6e 65 77 73 5f 76 69 | 61 5f 6e 6e 74 70 20 26 |_news_vi|a_nntp &|
|00006230| 26 20 78 69 6e 64 65 78 | 5f 73 75 70 70 6f 72 74 |& xindex|_support|
|00006240| 65 64 29 20 7b 0a 58 09 | 09 73 70 72 69 6e 74 66 |ed) {.X.|.sprintf|
|00006250| 20 28 69 6e 64 65 78 5f | 66 69 6c 65 2c 20 22 2f | (index_|file, "/|
|00006260| 74 6d 70 2f 78 69 6e 64 | 65 78 2e 25 64 22 2c 20 |tmp/xind|ex.%d", |
|00006270| 70 72 6f 63 65 73 73 5f | 69 64 29 3b 0a 58 09 09 |process_|id);.X..|
|00006280| 72 65 74 75 72 6e 3b 0a | 58 09 7d 0a 58 09 0a 58 |return;.|X.}.X..X|
|00006290| 09 69 66 20 28 6c 6f 63 | 61 6c 5f 69 6e 64 65 78 |.if (loc|al_index|
|000062a0| 29 20 7b 0a 58 09 09 6d | 79 5f 73 74 72 6e 63 70 |) {.X..m|y_strncp|
|000062b0| 79 20 28 64 69 72 2c 20 | 69 6e 64 65 78 64 69 72 |y (dir, |indexdir|
|000062c0| 2c 20 73 69 7a 65 6f 66 | 20 28 64 69 72 29 29 3b |, sizeof| (dir));|
|000062d0| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 73 |.X.} els|e {.X..s|
|000062e0| 70 72 69 6e 74 66 20 28 | 64 69 72 2c 20 22 25 73 |printf (|dir, "%s|
|000062f0| 2f 25 73 22 2c 20 73 70 | 6f 6f 6c 64 69 72 2c 20 |/%s", sp|ooldir, |
|00006300| 49 4e 44 45 58 44 49 52 | 29 3b 0a 58 09 7d 0a 58 |INDEXDIR|);.X.}.X|
|00006310| 09 0a 58 09 77 68 69 6c | 65 20 28 54 52 55 45 29 |..X.whil|e (TRUE)|
|00006320| 20 7b 0a 58 09 09 73 70 | 72 69 6e 74 66 20 28 69 | {.X..sp|rintf (i|
|00006330| 6e 64 65 78 5f 66 69 6c | 65 2c 20 22 25 73 2f 25 |ndex_fil|e, "%s/%|
|00006340| 6c 75 2e 25 64 22 2c 20 | 64 69 72 2c 20 68 2c 20 |lu.%d", |dir, h, |
|00006350| 69 29 3b 0a 58 09 09 0a | 58 09 09 69 66 20 28 28 |i);.X...|X..if ((|
|00006360| 66 70 20 3d 20 66 6f 70 | 65 6e 20 28 69 6e 64 65 |fp = fop|en (inde|
|00006370| 78 5f 66 69 6c 65 2c 20 | 22 72 22 29 29 20 3d 3d |x_file, |"r")) ==|
|00006380| 20 28 46 49 4c 45 20 2a | 29 20 30 29 20 7b 0a 58 | (FILE *|) 0) {.X|
|00006390| 09 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 09 7d 0a |...retur|n;.X..}.|
|000063a0| 58 0a 58 09 09 69 66 20 | 28 66 67 65 74 73 20 28 |X.X..if |(fgets (|
|000063b0| 62 75 66 2c 20 73 69 7a | 65 6f 66 20 28 62 75 66 |buf, siz|eof (buf|
|000063c0| 29 2c 20 66 70 29 20 3d | 3d 20 28 63 68 61 72 20 |), fp) =|= (char |
|000063d0| 2a 29 20 30 29 20 7b 0a | 58 09 09 09 66 63 6c 6f |*) 0) {.|X...fclo|
|000063e0| 73 65 20 28 66 70 29 3b | 0a 58 09 09 09 72 65 74 |se (fp);|.X...ret|
|000063f0| 75 72 6e 3b 0a 58 09 09 | 7d 0a 58 09 09 66 63 6c |urn;.X..|}.X..fcl|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.