File: ChangeLog.old

package info (click to toggle)
leafnode 1.11.7.rc1-10~lenny0
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,436 kB
  • ctags: 577
  • sloc: ansic: 10,637; sh: 4,107; xml: 650; makefile: 281; perl: 84; sed: 4
file content (4144 lines) | stat: -rw-r--r-- 170,464 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
	=== RELEASE 1.9.31.rel ===

2002-12-23  Matthias Andree <matthias.andree@gmx.de>

	--- 1.9.31.rc1 ---
	* configure.ac, fetchnews.c: Portability: Only fork() if fork()
	really works (AmigaOS.) 

2002-12-18  Matthias Andree <matthias.andree@gmx.de>

	* README-daemontools: Make a little more verbose, work out the svc
	-t difference for LISTENIP vs. nntp.cdb.  

2002-12-16  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS: update 

	--- 1.9.31.devel2 ---
	* fetchnews.c: Rename misnomed lockfile_exists to try_lock.  Switch
	from signal to sigaction.  
	* mgetaline.c, nntputil.c: Switch from signal to sigaction.  
	* configure.ac: bump version 
	* artutil.c: Only print one '..as 12345 in de.test' line per REAL
	post, not when catching up because the previous run crashed before
	the active file was written.  
	* applyfilter.c, leafnode.h, lockfile.c, texpire.c: Rename misnomed
	lockfile_exists to try_lock.  
	* mysigact.c, Makefile.am, mysigact.h: Add mysigact library.  

2002-12-15  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS: update 

	--- 1.9.31.devel1 ---
	* Makefile.am, configure.ac: Fix --with-included-pcre build. Note
	all files now link against PCRE.  
	* pcre/: Makefile.in, configure.gnu: Fix VPATH build for dftables.  
	* configure.ac, malloc.c, realloc.c: Portability improvements; use
	malloc.c and realloc.c to work around NULL==malloc(0) that may emit
	bogus out of memory errors, needed among others for some AIX
	versions. Finish time.h vs sys/time.h cleanup (AC_HEADER_TIME).  
	* CREDITS: Credit Richard van der Hoff.  
	* nntpd.c: Move time.h vs. sys/time.h madness into system.h
	(included via leafnode.h). Resolve name clash error() vs. myerror().  
	* Makefile.am, checkgroups.c, configutil.c, system.h, fetchnews.c,
	gmtoff.c, leafnode.h, lockfile.c, miscutil.c, mkstemp.c,
	nntputil.c, texpire.c, xoverutil.c: Move time.h vs. sys/time.h
	madness into system.h (included via leafnode.h).  
	* mgetaline.c, nntputil.c: Merge patch to switch from setjmp to
	sigsetjmp, sent by Richard van der Hoff
	<richard@rvanderhoff.org.uk>.  
	* .cvsignore: Add compile and install-sh 

2002-12-04  Matthias Andree <matthias.andree@gmx.de>

	=== RELEASE 1.9.30.rel ===
	* Makefile.am: Do not distribute autom4te.cache (from pcre/
	subdir).  

2002-12-02  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am, TODO, autobootstrap.sh, configure.ac,
	README-MAINTAINER: Kill autobootstrap. Use autoreconf -is (or -isf)
	instead.  

2002-11-26  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog: Release 1.9.30.devel4 

	--- 1.9.30.devel4 ---
	* configure.ac: Bump version.  
	* Makefile.am: Print sbindir/bindir to a config.c comment.  
	* fetchnews.c: In verbose mode, print if we're using the STAT
	command or the HEAD workaround.  
	* nntpd.c: Point to syslog when reading the configuration fails.  
	* INSTALL, README: Rework documentation.  

2002-11-25  Matthias Andree <matthias.andree@gmx.de>

	* NEWS, nntputil.c: Blacklist STAT for "NNTP news cache.", by
	Robert Marshall.  
	* fetchnews.c: Avoid duplicate articles that raced from another
	server against our fetchnews from ending up in failed.postings. We
	assume that a server that refuses a posting with 441 435 Duplicate
	can at the same time deliver it to STAT (or HEAD if the workaround
	is in effect).  

2002-11-21  Matthias Andree <matthias.andree@gmx.de>

	* TODO: Note race in postarticles.  
	* ChangeLog, NEWS: Release 1.9.30.devel3.  

	--- 1.9.30.devel3 ---
	* nntputil.c: Whitelist NewsCache 1.1.* 
	* configutil.c, fetchnews.c: Fix maxage = 0, reported and patch
	suggested by Jonathan Larmour, <jifl@jifvik.org> 
	* configure.ac: Bump version.  
	* COPYING, CREDITS, ChangeLog, fetchnews.c, leafnode.8.in, nntpd.c: 
	Change Jonathan Larmour's mail address.  
	* activutil.c: Fix SIGSEGV. Found by William Hooper.  

2002-11-20  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS, configure.ac: Release 1.9.30.devel2.  

	--- 1.9.30.devel2 ---
	* activutil.c: Check for duplicate newsgroups after reading, before
	writing and after merging the active file. In doubt, leafnode goes
	for the newsgroup name that has fewer upper case letters in it.  
	* grouplist.c: Fix spurious LF.  
	* fetchnews.c: nntpactive: cache current time, saves time() calls
	and gives a consistent 'age' for the newsgroups.  
	* miscutil.c, nntpd.c: 0 -> NULL 

2002-11-14  Matthias Andree <matthias.andree@gmx.de>

	* .cvsignore, Makefile.am, leafnode.cron.daily.in,
	leafnode.spec.in: Add leafnode.cron.daily, built from
	leafnode.cron.daily.in, and include it in the RPM.  
	* Makefile.am: Add filters.example, filters and config to dist.
	config and filters are marked with noreplace and are the copies of
	filters.example and config.example by default. This should prevent
	RPM from removing the old /etc/leafnode/config when this RPM is
	"-Uhv"ed over a SuSE RPM.  
	* leafnode.spec.in: Add filters.example, filters and config to
	dist. config and filters are marked with noreplace and are the
	copies of filters.example and config.example by default. This should
	prevent RPM from removing the old /etc/leafnode/config when this RPM
	is -Uhved over a SuSE RPM. Reported by V. Regina Kappes
	<regina.kappes@gmx.de> 
	* Makefile.am, filters.example: Add filters.example. Taken from
	SuSE 7.3 Source RPM.  
	* config.example: Change example filter file path to
	/etc/leafnode/filters.  

2002-11-13  Matthias Andree <matthias.andree@gmx.de>

	* README-FQDN.pod: Fix bug spotted by Mark Trettin: The
	news.cis.dfn.de host name is ID-00000.user.dfncis.de.  

2002-11-10  Matthias Andree <matthias.andree@gmx.de>

	* .cvsignore: update ignore list.  
	* FAQ.xml: Add section on Red Hat inetd vs xinetd issue, written by
	William Hooper.  

2002-11-09  Matthias Andree <matthias.andree@gmx.de>

	* NEWS, nntputil.c: Whitelist NewsCache 0.99.18, 0.99.19, 0.99.2?.  

2002-11-08  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog: Release 1.9.30.devel1.  
	* Makefile.am: Fix recently introduced 'make distcheck' failures.  
	* NEWS, fetchnews.c: Only touch active.read if the active has been
	successfully written.  
	* activutil.c, applyfilter.c, checkgroups.c, fetchnews.c,
	texpire.c: detect groupinfo write errors.  
	* activutil.c, leafnode.h: Detect write errors for writeactive and
	report them back.  
	* activutil.c, leafnode.h: Debugging help: define CHECKGROUPORDER
	at compile time to check that the in-memory copy of the active file
	is sorted properly and does not contain duplicates.  
	* nntpd.c: Fix last commit -- the p = q belongs into the while
	loop, of course. This time, the commit has been tested and found
	working by Jan Knutar. <jknutar@nic.fi> 

2002-11-06  Matthias Andree <matthias.andree@gmx.de>

	* CREDITS: Add Jan Knutar.  
	* nntpd.c: Fix very subtle and intricate infinite loop bug -- it
	will only trigger when the first strstr call is not successful (i.
	e. the current group->name is part of another group's name that is
	PRIOR on the current article's XRef: header -- neat, ain't it?).
	Found and reported with full stack back trace by Jan Knutar
	<jknutar@nic.fi> 

2002-11-05  Matthias Andree <matthias.andree@gmx.de>

	* newsq.1.in: Rework newsq man page.  
	* newsq.1.in: Document that the output is unsorted. Requested by
	Dan Jacobson <jidanni@dman.ddts.net>. Fixes Debian Bug#167837
	(wishlist).  

2002-10-30  Matthias Andree <matthias.andree@gmx.de>

	* FAQ.xml, Makefile.am: Improve the FAQ, replace most <command> by
	<userinput>, and run xmllint before xmlto.  

2002-10-27  Matthias Andree <matthias.andree@gmx.de>

	* NEWS: Update.  

2002-10-26  Matthias Andree <matthias.andree@gmx.de>

	* fetchnews.c: Fix pcre_group to group_pcre.  
	* configure.ac: bump version.  
	* fetchnews.c: Also apply only_groups_pcre when updating the
	active, to avoid presenting groups that are not really fetched. If
	you have multiple upstream servers and you are using
	only_groups_pcre, run fetchnews -f.  

2002-10-23  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS, configure.ac: Release 1.9.29.  
	=== RELEASE 1.9.29.rel ===
	* README: Minor updates.  
	* FAQ.xml: Add section on nntps.  
	* Makefile.am: Add --extensions to PDF generation, for bookmarks.  
	* fetchnews.c: Bugfix: cope with multiple upstreams that have the
	same server name but different ports.  

2002-10-22  Matthias Andree <matthias.andree@gmx.de>

	* artutil.c: Merge patch by Ken Shan to fix SIGSEGV that happens
	when the active is realloc()d. Long-standing bug. This commit fixes
	Debian Bug#165835.  

2002-10-21  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS, configure.ac: Release 1.9.28.  
	=== RELEASE 1.9.28.rel ===

2002-10-19  Matthias Andree <matthias.andree@gmx.de>

	* FAQ.xml: Make document valid. Add IDs for sect1 to allow linking.  
	* FAQ.xml: Add documentation about obtaining a stack backtrace.  
	* configutil.c: New option only_groups_pcre.  Complain about
	malformatted or broken config file lines.  
	* Makefile.am, NEWS, TODO, config.example, fetchnews.c,
	groupselect.c, groupselect.h, leafnode.8.in, leafnode.h,
	doc_german/leafnode.8.in: New option only_groups_pcre.  
	* FAQ.xml: Use sect2 rather than qandadiv.  

2002-10-12  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: mark devel release version 
	* FAQ.xml, NEWS, PCRE_README: Update documentation.  
	* configure.ac: Add a new --with-included-pcre option. Useful for
	testing and if the system-installed PCRE version is too old but the
	user does not want to replace it.  
	* pcre/configure.gnu: When leafnode automatically configures pcre/,
	pass it --disable-shared to speed up the build and get a smaller
	library, and to avoid issues with shared libraries that we don't use
	anyhow.  
	* configure.ac: Back out ineffective MacOS build "fix" of 1.9.25,
	now that the pcre/configure fix is known to work.  
	* Makefile.am: Do not distribute *~ files from pcre directory.  
	* FAQ.xml: Add two questions about fetchnews not posting. Reindent
	w/ vim.  
	* pcre/configure: Try to patch libtool output along the lines of
	
	http://subversions.gnu.org/cgi-bin/cvsweb/libtool/libtool.m4.diff?r1=1.220&r2=1.221&f=h -- in the hope to really fix the MacOS 10.1.5 build woes.

2002-10-08  Matthias Andree <matthias.andree@gmx.de>

	* leafnode-version: undo accidental checkin 
	* leafnode-version.c: Align output format to that of leafnode-2.  
	* Makefile.am, NEWS, leafnode-version, leafnode-version.1.in,
	leafnode-version.c, leafnode.spec.in: Add leafnode-version program.  
	* TODO: Kill remaining old TODO, they don't really matter any more.  
	* configure.ac: Bump version 

2002-09-25  Matthias Andree <matthias.andree@gmx.de>

	* .cvsignore, Makefile.am: Now that my PassiveTeX/XMLTeX
	installation works, use Tim Waugh's xmlto wrapper.  
	* Makefile.am: Switch from jade and dsssl to xsltproc and xsl, it's
	more portable for maintainers. Use htmldoc to convert HTML -> PDF,
	much nicer output, and also more portable.
	http://www.easysw.com/htmldoc/ 
	* FAQ.xml: "& -> &amp; fix !DOCTYPE 
	* Makefile.am: Do not remove subst.in in distclean-local. (Reported
	by Mark Brown) 

2002-09-24  Matthias Andree <matthias.andree@gmx.de>

	=== RELEASE 1.9.27.rel ===
	* Makefile.am: FAQ swallows TROUBLESHOOTING. Fix RPM build.  
	* FAQ.xml, TROUBLESHOOTING.pod, leafnode.spec.in: FAQ swallows
	TROUBLESHOOTING.  
	* leafnode.spec.in: Revamp .spec file, integrating a patch from
	Andreas Muck.  
	* CREDITS: Add Christian Weisgerber, who sent the three time_t
	alpha portability fixes.  
	* activutil.c, nntpd.c, texpire.c: Merge OpenBSD time_t == int
	portability fixes for 64bit platforms.  
	* .cvsignore: Add checkpeerlocal.  
	* FAQ, FAQ.html, Makefile.am: drop generated files from CVS.  
	* FAQ.xml: Finish XML FAQ.  
	* FAQ.xml: The start of a FAQ rewrite in DocBook XML V4.1.  
	* CREDITS: Update 
	* checkpeerlocal.c: Merge patch by Rados-law Gancarz to fix
	Non-IPV6 compile (Solaris 2.6) 

2002-09-23  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: bump version 
	* Makefile.am: Clean some more files.  
	* FAQ.html: Add FAQ.html (from website) for now.  
	* Makefile.am: distribute FAQ.html 
	* checkpeerlocal.c: Fix compiler warning. Reduce default interface
	configuration buffer to 2k.  
	* Makefile.am: Automake 1.5 should be sufficient.  
	* Makefile.am: Add CFLAGS to checkpeerlocal_CFLAGS.  
	* Makefile.am: Add checkpeerlocal to check_PROGRAMS.  

2002-09-22  Matthias Andree <matthias.andree@gmx.de>

	* checkpeerlocal.c: Fix infinite loop problem when interface list
	is longer than 2 kB. Reported by Brian Somers.  
	
	CVSTrac: #4 
	* NEWS, leafnode.8.in: Documentation changes.  
	* nntpd.c: Robustness: if allowstrangers is set, don't call
	checkpeerlocal at all.  

2002-09-20  Matthias Andree <matthias.andree@gmx.de>

	* ChangeLog, NEWS, configure.ac: 1.9.26 release information added.  
	=== RELEASE 1.9.26.rel ===

2002-09-11  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: Bump version.  
	* grouplist.c: 
	* Skip over lost+found in the top directory.  
	  Bug reported by William Grinolds <wgrinolds@satx.rr.com>.  
	* Log chdir and opendir(".") errors.  

2002-08-31  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: bump version 
	* fetchnews.c: Synchronize child and parent when handing over the
	lock file. CVSTrac: #3.  
	* fetchnews.c: Fix reversed logic of postonly/handover_lockfile fix
	(last commit).  
	* fetchnews.c: Do not try to fork and hand over the lockfile to
	child in postonly mode.  Reported by Jan Knutar <jknutar@nic.fi>.  
	* newsq.c: Print start banner and also print a note if the
	directory is empty.  
	* UNINSTALL-daemontools: Fix paths.  
	* genlsm.sh.in: Update.  
	* doc_german/Makefile.am: Add LIESMICH-daemontools to tarball.  

2002-08-30  Matthias Andree <matthias.andree@gmx.de>

	* leafnode.spec.in: Update Source URL and format to .bz2. Reported
	by William Hooper <whooper@myrealbox.com>.  

	=== RELEASE 1.9.25.rel ===
	* run.tcpd.dist.in, run.tcpserver.dist.in: Add comments about use.  
	* configure.ac: bump version 
	* applyfilter.8.in, doc_german/leafnode.8.in: Minor corrections.  
	* INSTALL, Makefile.am, README-daemontools, doc_german/INSTALL_de,
	doc_german/LIESMICH-daemontools: Complete daemontools-related
	documentation.  
	
	CVSTrac ticket: #2 
	* artutil.c: Fix memory leak: empty lines were not freed.  

2002-08-28  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am, setup-daemontools.sh.in, setup.sh.in: Replace
	setup.sh by setup-daemontools.sh that only installs daemontools +
	tcpserver w/ tcprules access control 
	* NEWS, setup.sh.in: Withdraw [x]inetd part of setup.sh for
	portability reasons.  
	* .cvsignore, Makefile.am, Makefile.dist, NEWS, TODO,
	UNINSTALL-daemontools, configure.ac, nntp.rules.dist,
	run.tcpd.dist.in, run.tcpserver.dist.in, setup.sh.in: Tweaks for
	addition of new setup.sh tool, which is to automatically set up the
	leafnode daemon in inetd/xinetd or tcpserver.  
	* makesubst: Also add AWK to subst list.  

2002-08-27  Matthias Andree <matthias.andree@gmx.de>

	* makesubst: Figure AUTOSUBSTNAMES from AC_PATH_PROG as well. Strip
	surrounding brackets. Trim surrounding whitespace.  
	* makesubst: Minor @configure_input@ tweak. Cosmetic.  
	--- release snapshot 20020827a ---
	* Makefile.am, configure.ac: devel20020827a checkin, fixes for
	Darwin 5.5 build (-flat_namespace issue, see
	
	http://developer.apple.com/techpubs/macosx/ReleaseNotes/TwoLevelNamespaces.html

2002-08-27  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* TROUBLESHOOTING.pod, doc_german/leafnode.8.in: minor wording
	tweaks.  
	* doc_german/INSTALL_de: Typos.  
	* doc_german/INSTALL_de: Translate ucspi-tcp/daemontools docs. 
	First version ;-) 

2002-08-26  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: bump version 
	* INSTALL: refine the ucspi-tcp/daemontools docs more bits :-) 
	* INSTALL: refine the ucspi-tcp/daemontools docs a bit 
	* INSTALL: Add daemontools/ucspi-tcp install instructions.  

2002-08-23  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: Fix XOVER reply for pseudo article:  inconsistent MID
	given.  

2002-08-22  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* doc_german/: INSTALL_de, README, README_de, fetchnews.8.in,
	leafnode.8.in: Fix typos and umlaut handling in German
	documentation, keep old spelling.  
	* FAQ, README, texpire.8.in: Fix typos in English documentation.  

2002-08-22  Matthias Andree <matthias.andree@gmx.de>

	* leafnode.8.in: Update 

2002-08-21  Matthias Andree <matthias.andree@gmx.de>

	* checkpeerlocal.c: Prefix address type in -DTEST mode.  change
	#ifdef TEST to TEST_LOCAL to still allow testing from tcpserver or
	somesuch.  

2002-08-20  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am: Manually do 'make distclean' when including PCRE.  
	* config.example: Fix 'expire' documentation.  
	* applyfilter.8.in, checkgroups.8.in, fetchnews.8.in, newsq.1.in,
	texpire.8.in, doc_german/applyfilter.8.in,
	doc_german/checkgroups.8.in, doc_german/fetchnews.8.in,
	doc_german/leafnode.8.in, doc_german/newsq.1.in,
	doc_german/texpire.8.in: Update documentation, adjust to Linux'
	typographic man(1) conventions: Literal text is bold, parameters are
	in italics.  
	* checkgroups.c: Fix usage information.  

2002-08-19  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am, autobootstrap.sh, makesubst: Patch by Ralf
	Wildenhues: enhance makesubst.  

2002-08-17  Matthias Andree <matthias.andree@gmx.de>

	* NEWS: Dedicate to the flood victims in Europe.  
	* configure.ac: Bump version, add Dresden tag, allow RPMSRC=mumble
	./configure and automatically check for /usr/src/rpm.  

2002-08-16  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: fix sed -f argument to include ${srcdir}, for build
	outside source directory 
	* configure.ac: Fix finding RPMSRC and msysconf expansion for good.  
	* sanitize.sed, Makefile.am: New file for sed use in configure.ac, 
	you would not get this properly quoted with backslashes. I tried.  

2002-08-16  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* configure.ac: revert msysconfdir handling to old form.  Fix brown
	paper bag from last checkin:  Unconditionally AC_SUBST(RPMSRC), but
	set to "" if NONE.  TODO: maybe allow environment variable check? 
	* Makefile.am: $(srcdir)/./makesubst -> $(srcdir)/makesubst 
	* configure.ac: Newer autoconf versions(?) do not cause
	AC_SUBST(foo) to be translated to a shell commend.  work around
	this.  Fixes the long-standing msysconfdir non-bug.  

2002-08-16  Matthias Andree <matthias.andree@gmx.de>

	* makesubst: Revert last checkin, it prevented the expansion of
	things.  
	* makesubst: Change quote character for sed from double to single
	quote.  
	* configure.ac: Bump version.  Fix msysconf expansion.  
	* NEWS: Get the POST + EOF fix attribution right.  
	* NEWS: Mention the POST + EOF fix (leafnode crashed otherwise) 

2002-08-14  Matthias Andree <matthias.andree@gmx.de>

	* doc_german/leafnode.8.in: document allow_8bit_headers 
	* leafnode.8.in: Document allow_8bit_headers option.  
	* configure.ac: bump version 
	* .cvsignore: add tarballs and release.sh 
	- release snapshot -
	* pcre/.cvsignore: Get rid of screen clutter :-) 
	* fetchnews.c, texpire.c: Dependent change: Track API change
	necessary to bring reading the configuration file and validating the
	hostname into correct order.  
	
	Move creation of lockfile past reading the configuration file as
	well.  
	* applyfilter.c, checkgroups.c, nntpd.c: Dependent change: Track
	API change necessary to bring reading the configuration file and
	validating the hostname into correct order.  
	* configutil.c, miscutil.c, leafnode.h: Fix bug reported by Shaul
	Karl <shaulka@bezeqint.net>, that leafnode would complain about a
	non-FQHN even though one was configured in the configuration file.
	Mark Brown <broonie@debian.org> tracked this down to improper order
	of reading the config file versus validating the "fqdn" variable.
	Now readconfig() validates the fqdn, rather than initvars().  

2002-08-13  Matthias Andree <matthias.andree@gmx.de>

	* validatefqdn.c: Can no longer be cheated by "name.", when the dot
	is the last character.  Added test mode. Try make validatefqdn
	CFLAGS="-DTEST", then ./validatefqdn blubb test.hick 

2002-08-13  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* getline.c, mastring.c: Speed improvements for mastr_getln and
	_getline, by Fabrizio Tironi.
	* nntpd.c: dopost: fix possible SEGV on client EOF after POST, by
	Fabrizio Tironi.  Along, a couple of minor fixes (const typing,
	global variable shadowing).
	* xoverutil.c: Fix possible buffer overrun with long $SPOOLDIR, by
	Fabrizio Tironi.
	* mastring.c: Fix possible null pointer derefs in mastr_cpy,
	mastr_cat.  Patch by Fabrizio Tironi.
	* artutil.c: fgetheader: check for bad input.  As an aside, don't
	calculate strlen(header) twice.  Different fix suggested by
	Fabrizio Tironi.

2002-08-13  Matthias Andree <matthias.andree@gmx.de>

	* NEWS, config.example, configutil.c, leafnode.h, nntpd.c: Add an
	option to allow clients to post unencoded 8-bit data in headers. 
	Requested by Peter N. M. Hansteen <peter@bgnett.no>.
	* configure.ac: bump version

2002-08-13  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* README-MAINTAINER: Update.
	* autobootstrap.sh: autobootstrap taken from leafnode-2 CVS and
	adapted, needs makesubst call.	Use to build from CVS.
	* .cvsignore: ignore subst{,.in}.
	* Makefile.am: Add FAQ to EXTRA_DIST.  Reported by William Hopper.

2002-07-19  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: Add missing <sys/types.h> include. Bump version.  
	* Makefile.am, doc_german/Makefile.am: Fix build outside source
	directory 
	* configure.ac: bump version 
	* checkpeerlocal.c, configure.ac: Fix checkpeerlocal() for systems
	that define a sa_len for struct sockaddr and list addresses longer
	than 16 bytes (IPv6) in their response to SIOCGIFCONF.  (Such as
	FreeBSD.) Reported by Martin Klaffenbck.  

2002-07-17  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* doc_german/: applyfilter.8.in, checkgroups.8.in, fetchnews.8.in,
	leafnode.8.in, newsq.1.in, texpire.8.in: Update german
	documentation to reflect current english docs.  
	* checkgroups.8.in, leafnode.8.in, texpire.8.in: More typo fixes.  
	* leafnode.8.in: 
	(minor) separate underlined words.  
	* leafnode.8.in: Typo.  
	* makesubst: simplify somewhat.  
	* Makefile.am, doc_german/Makefile.am: Portability: no $< in
	Makefiles.  

2002-07-16  Matthias Andree <matthias.andree@gmx.de>

	* fetchnews.8.in, TODO: updates 
	* leafnode.8.in, doc_german/Makefile.am: updates 
	* doc_german/Makefile.am, TODO: doc_german: regenerate subst 
	* configure.ac: bump version 
	* Makefile.am: Fix traversal order in SUBDIRS.  

2002-07-16  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* Makefile.am, TODO, configure.ac, doc_german/Makefile.am: 
	Experimental implementation of manpage building with make.  Applies
	for doc_german man pages as well.  
	* makesubst: adjust path, add msysconfdir, spooldir.  
	* makesubst: makesubst:  build a script that performs (nearly) the
	same @variable@ substitutions as usually done by configure. 
	makesubst is copyright Andreas Barth, this version is taken from
	unix-connect-0.94 and hacked up for leafnode.  Differences from
	configure-substitutions:  recent autoconf version postpone
	substitution of some variables (e.g. prefix) until build time to
	facilitate different root package building.  This script does not 
	take into account make Options.  

2002-07-16  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am: List stamp-h to clear in distclean-local, to fix
	make distcheck regression after update to automake 1.6.2.  
	* NEWS, nntpd.c: Fix: In [X]HDR <header> <Message-ID>, print
	Message-ID in front of the header, required by RFC-2980 (but
	contradictory to draft-ietf-nntpext-base-15).  Fix: OVER and XOVER
	syntax in HELP output.  Change: When printing XOVER/XHDR syntax
	after a syntax error, print HDR or OVER.  Change: List XHDR and
	XOVER in LIST EXTENSIONS.
	* configure.ac: Quote pcre-config warning. Add note to let user
	install PCRE system-wide when the included PCRE is to be used.  
	* configure.ac: Pull -I/usr/local/include/pcre/ into CPPFLAGS as
	well.  Reported by William Hooper <whooper@myrealbox.com> 

2002-07-16  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* doc_german/fetchnews.8.in: missed one substitution.  
	* doc_german/README: Add update note.  
	* doc_german/: INSTALL_de, README_de, applyfilter.8.in,
	checkgroups.8.in, fetchnews.8.in, leafnode.8.in, newsq.1.in,
	texpire.8.in: Update german docs to mostly match current english
	docs.  INSTALL_de: add pointer to german Message-ID online FAQs.  
	Fix a few typos, replace hard-coded paths with configure
	@substitutes@.  
	* leafnode.8.in: correctly describe texpire's non-threaded
	behaviour, update somewhat.  
	* applyfilter.8.in, fetchnews.8.in, texpire.8.in: Fix typos.  
	* README: Fix typo.  Replace posting.queue with out.going, fix
	syslogd '-file' entry.  
	* INSTALL: Reformat only.  
	* doc_german/: INSTALL_de, README_de, applyfilter.8.in,
	checkgroups.8.in, fetchnews.8.in, leafnode.8.in, newsq.1.in,
	texpire.8.in: Reorganize german documentation.  Rename
	man/man$i/foo.$i to foo.$i.in.  

2002-07-16  Matthias Andree <matthias.andree@gmx.de>

	* INSTALL: drop MacOS X PCRE warning 
	* .cvsignore: add FAQ.html 
	* configure.ac: Fix spurious "test: too many arguments" warning
	early in ./configure.  Streamline the pcre-config tests. Save
	original arguments and restore them if pcre-config is present, but
	not pcre.h, to not shoot the pcre subdirectory configure. Revert
	from <<- HERE left-justified files to << HERE files. Uwe Ohse said
	that <<- was not too portable.  Bump version.  
	* leafnode.8.in: update 

2002-07-15  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c: Implement LIST ACTIVE.TIMES -- trivial (minor change to
	list()).  Implement HDR (XHDR was already there).  Revamp HELP
	format.  List HDR in and remove leading space from LIST EXTENSIONS
	reply. (draft 15) 
	* COPYING, CREDITS: update 
	* nntpd.c: in dopost(), when debugmode is set, log objectionable
	Message-ID header. Pro-Forma merge.  
	* nntpd.c: Log objectionable Message-ID: header in dopost().  

2002-07-14  Matthias Andree <matthias.andree@gmx.de>

	* README-FQDN.pod, TROUBLESHOOTING.pod: documentation refinements.  

2002-07-13  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* .cvsignore: README.FQDN* -> README-FQDN*, add
	TROUBLESHOOTING{,.pod}.  
	* TROUBLESHOOTING.pod, leafnode.spec.in, validatefqdn.c: Change
	README.FQDN to README-FQDN.  
	* cindent: Make weird-filenames proof.  Fix test -eq buglet.  

2002-07-12  Mark Brown  <broonie@sirena.org.uk>

	* configutil.c, leafnode.h, fetchnews.c, config.example: Add new
	option noactive inhibiting updates of the active file unless -f is
	supplied to fetchnews.

2002-07-12  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am, NEWS: No longer install lsort 
	* Makefile.am, README-FQDN.pod, README.FQDN.pod: rename README.FQDN
	to README-FQDN.  
	* README.FQDN.pod: documentation updates.  
	* Makefile.am, README.FQDN.pod, TROUBLESHOOTING.pod, nntpd.c,
	validatefqdn.c: documentation updates.  

2002-07-11  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: bump version 
	* nntpd.c: Quiet splint warning.  
	* fetchnews.c: When updating the active file fails, restore the old
	active file contents in order not to loose low/high marks.  
	* nntpd.c: Do not return 430 for 'header not found' in xhdr. Merge
	some xhdr/xover code. Fix range checking in xhdr and properly write
	420 message when the range is invalid.
	* leafnode.h: Add some splint annotations.  
	* nntpd.c: Fix some bugs that splint showed. Includes possible zero
	dereference crashes.  
	* fetchnews.c: Try XGTITLE only once per server, not once per new
	group.  Better forceactive treatment. When leafnode cannot obtain
	the active from all servers in one go after -f or timeout_active
	expired, it will remove the active.read file. This file will only be
	created if ALL servers have been queried successfully.  
	* strlcpy.3: Add documentation, stolen from FreeBSD.  
	* nntpd.c: Change one 1024 -> PATH_MAX. Change strncpy->strlcpy.
	Add two FIXME: comment tags.  
	* configutil.c: Replace strncpy by strlcpy. Increase core size in
	debug mode to 16 MB. Increase token size to 1 kB.  
	* mastring.h: Drop prototypes for unimplemented mastrcpy and
	mastrncpy.  

2002-07-11  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* configutil.c: Fix overrun in parse_line.  

2002-07-11  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: Kill cruft.  
	* filterutil.c: Always include <pcre.h>, not pcre/pcre.h.  
	* TODO: Note make distcheck not working. Other updates.  
	* Makefile.am, configure.ac: Revamp PCRE inclusion
	autoconf/automake stuff, drop checks that leafnode does not look at
	the results of.  
	* pcre/dftables: Drop generated file.  
	* nntputil.c: Use RETSIGTYPE for timer().  

2002-07-10  Matthias Andree <matthias.andree@gmx.de>

	* pcre/: .cvsignore, ChangeLog, Makefile.in, Tech.Notes,
	chartables.c, config.guess, config.sub, configure, configure.in,
	mkinstalldirs, myinput, pcre.7, pcre.c, pcre.h, pcre.mms,
	pcreposix.3, pcretest.c, pgrep.1, pgrep.c, testinput, testinput2,
	testinput3, testinput4, testoutput, testoutput2, testoutput3,
	testoutput4, testdata/testinput1, testdata/testinput6,
	testdata/testoutput1, testdata/testoutput2, testdata/testoutput3,
	testdata/testoutput4, testdata/testoutput5, testdata/testoutput6: 
	Update to PCRE 3.9.  
	* pcre/: RunTest, chartables.c, dftables, pcre.h: (accidental
	checkin) 

2002-07-10  Mark Brown  <broonie@sirena.org.uk>

	* fetchnews.c: Set handler for SIGTERM.

2002-07-10  Matthias Andree <matthias.andree@gmx.de>

	* README: Fix outdated leafnode home page, some typos, remove old
	compile test section.  
	* INSTALL: Fix typo.  
	* TODO: Add PCRE notes.  
	* configure.ac: Move the --with options up the configure.ac file to
	quit early in case of trouble. Bump version.  

2002-07-10  Matthias Andree <matthias.andree@gmx.de>

	=== RELEASE 1.9.24.rel ===
	* nntpd.c: Fix compiler warning when compiled without IPv6 support.  
	* nntpd.c: Respect hostname in config file again. Fix IPv6 name
	resolution for IPv4 addresses (using masock_sa2name).  
	* Makefile.am, masock.h, masock_sa2name.c: import masock_sa2name.c
	from leafnode-2 

2002-07-09  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c, miscutil.c: make s variable local. chdirgroup: use mastr
	instead of global s.  
	* configutil.c: validate hostname to avoid havoc.  

2002-07-09  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: Fix possible overflow in doarticle.  Not exploitable
	because overflowing part of the string cannot be chosen.  

2002-07-09  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: bump version 
	* newsq.c: Drop global s, use local mastr instead.  
	* xoverutil.c: Make s a local variable. Don't hard-code s length
	for getcwd() 
	* activutil.c, configutil.c, fetchnews.c, leafnode.h, nntpd.c,
	texpire.c: Make s a local variable.  

2002-07-09  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: fopenart: do not use static buffer s for implicit artno,
	gets smashed by is_pseudogroup.  Broke 'ARTICLE' without number.  

2002-07-09  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.24.rc1 ===
	* nntpd.c: remove all ihave traces.  
	* nntpd.c: more nogroup() merge.  
	* configure.ac: bump version 

2002-07-09  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* applyfilter.c: Typo in log comment.  

2002-07-09  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c: use nogroup() in doxhdr().  

2002-07-09  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: Fix XOVER segfault before GROUP.  

2002-07-08  Matthias Andree <matthias.andree@gmx.de>

	* configure.ac: Bump version to 1.9.24.pre1 for formal reasons.  
	* Makefile.am: Let the lsm targets depend on genlsm.sh to ensure
	that a current version of genlsm.sh is used to build the .lsm file.  
	* genlsm.sh.in: Revamp .lsm 
	* NEWS: Add release date.  

	=== RELEASE 1.9.23.rel ===
	* configure.ac: Bump version to 1.9.23.rel.  
	* miscutil.c: Silence RATS.  

2002-07-05  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.23.rc3 ===
	* NEWS: NEWS 
	* nntpd.c: Recommend message-ID (ln-2 and some INN also do it).  
	* nntpd.c: Drop justaftergroup madness (includes dropping the
	variable). Drop pseudogroup global. Make group/xovergroup globals
	static. Split functionality into new parserange and is_pseudogroup
	functions, fixing parsing the range in the same go (used by doxover
	and doxhdr). Fix more article number madness with pseudo articles.
	Fix article <mid> for pseudo articles. When marking a group
	interesting, create the corresponding directory. Fix some XHDR
	handling bugs -- leafnode would list at least one article even
	though the given range was outside the group article number range.  
	* texpire.c: Do not try to delete empty directory of interesting
	group.  
	* fetchnews.c: Cosmetic logging changes. Fix bogus 'XOVER failed,
	trying XHDR' (happens with cascaded leafnodes).  
	* nntpd.c: Fix typo: xstrncpy->xstrlcpy.  
	* Makefile.am: Add strlcpy.h to EXTRA_DIST.  
	* miscutil.c: Silence RATS. Replace strncat by strlcpy. Add new
	xstrlcpy() function that exits in case the buffer is too small.
	(Ugly!) 
	* nntpd.c: Drop owndn. fopenpseudoart(): drop static buffer, use
	mastr. Change first MID separator to - to allow tracking leafnode
	"before 1.9.23" or "1.9.23 and newer". Silence RATS. Drop static
	buffer to print Message-ID, use three fputs instead. Replace strncat
	by strlcpy.  
	* fetchnews.c: Silence RATS. getmarked(): get rid of static buffer,
	use mastr.  
	* leafnode.h: Add xstrlcpy prototype. Drop owndn declaration. Move
	SKIPLWS #define within #ifdef LEAFNODE_H bounds.  
	* configutil.c: Drop owndn.  
	* checkpeerlocal.c, pcre_extract.c: Use strlcpy. Silence RATS.  
	* activutil.c: Change stat -> fstat.  
	* applyfilter.c, critmem.c, getfoldedline.c, lockfile.c, lsort.c,
	mastring.c, nntputil.c, quickmkdir.c, strdup.c, texpire.c,
	validatefqdn.c, wildmat.c, xoverutil.c: Silence RATS.  
	* strlcpy.c, strlcpy.h, Makefile.am, configure.ac: Import
	strlcpy.[ch] from OpenSSH's openbsd-compat.  
	* leafnode.h: Add SKIPLWS from leafnode-2 
	* fetchnews.c: More !isspace-read-past-buffer fixes.  
	* applyfilter.c: Use fstat() rather than stat(). (stat() did not
	check for errors in this place!). Enhance error output and log to
	syslog.  
	* artutil.c: getheader(): use fstat after open. Paranoia mode.  
	* checkpeerlocal.c: Limit strcpy.  
	* critmem.c: Silence Flawfinder.  

2002-07-04  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* checkpeerlocal.c: Include missing string.h for memcpy.  

2002-07-04  Matthias Andree <matthias.andree@gmx.de>

	* fetchnews.c: After all relevant servers have been queried, reset
	SIGPIPE handling to the default. No network writes are beyond that
	point, so SIGPIPE should never happen there.  

2002-07-04  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* checkgroups.c, configutil.c, fetchnews.c, nntpd.c: Fix several
	potential array bounds reads in rare error cases.  

2002-07-04  Matthias Andree <matthias.andree@gmx.de>

	* checkpeerlocal.c: Fix IPv6 portability issue (FreeBSD).  
	* getline.h: Add _getline prototype.  
	* validatefqdn.c: Reformat FQDN error message.  

2002-07-03  Matthias Andree <matthias.andree@gmx.de>

	* NEWS: Fix typo: NEWNEWS -> NEWGROUPS 

	=== release 1.9.23.rc2 ===
	* ChangeLog, NEWS, fetchnews.8.in, leafnode.8.in, texpire.8.in: 
	update documentation 

2002-07-03  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* texpire.c: Remove lockfile in rare error case.  

2002-07-03  Matthias Andree <matthias.andree@gmx.de>

	* getline.c: Synchronize leafnode-1 and leafnode-2 getline.c 
	* Makefile.am: add missing version.h 

2002-07-03  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* fetchnews.c: Fix last checkin: unconditionally ignore
	SIG{INT,PIPE} after server query.  

2002-07-03  Matthias Andree <matthias.andree@gmx.de>

	* getline.c, mastring.c, mastring.h, version.h: Synchronize
	leafnode-1 and leafnode-2 mastring.* 

2002-07-03  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* fetchnews.c: After longjmp ignore SIGINT and SIGPIPE.  Prevents
	race which can lead to double free.  

2002-07-02  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: Simplify list().  
	* newsq.c: closedir() after reading.  
	* applyfilter.c: Remove leftover globals.  

2002-07-02  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c: Fix broken Message-ID when posting to localhost.
	Reported by Andreas Muck <fam.muck@telda.net>.  
	* NEWS, activutil.c, fetchnews.c, leafnode.h, nntpd.c: Fix losing
	NEWGROUPS information across fetchnews -f or after timeout_active.  
	* configure.ac: bump version to 1.9.23.rc2 
	* nntpd.c: Fix order of low/high marks in NEWGROUPS reply.  

2002-07-01  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.23.rc1 ===
	* leafnode.spec.in: Major overhaul.  
	* leafnode.spec.in: Let 'news' read the configuration 
	* configure.ac: The socklen_t test was hosed, Solaris and FreeBSD
	complained. Fixed.  
	* grouplist.c: groupinfo is now valgrind-proof.  

2002-07-01  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* grouplist.c: Fix memleaks.  

2002-07-01  Matthias Andree <matthias.andree@gmx.de>

	* INSTALL: write up on Solaris warnings 
	* nntpd.c: Pseudo articles are now from news@ rather than nobody@
	so people can reply. Pseudo article does not necessarily have
	article number 1 (various places). Kill space after number in
	dolistgroup(). Fix XOVER for pseudoarticle.  
	* artutil.c: Bump article pointer to store first article with a
	number higher than the pseudo article.  
	* applyfilter.c, texpire.c: Do not reset group low/high marks when
	a group runs empty.  
	* INSTALL: Mention news: mail alias.  

2002-07-01  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* fetchnews.c, leafnode.h, mgetaline.c: Use RETSIGTYPE.  

2002-07-01  Matthias Andree <matthias.andree@gmx.de>

	* checkpeerlocal.c: Word syslog message for 4.4BSD-IP aliases on
	broken Linux kernels better.  
	* grouplist.c: Fix possible crash, goto crossed mastr *p
	initialization. Found by g++.  
	* fetchnews.c: Make code C++ compiler proof. Fix SUN Workshop Pro
	compiler warnings.  
	* configure.ac: Streamline -lnsl and -lsocket checks, add check for
	socklen_t.  
	* activutil.c, checkpeerlocal.c, critmem.c, mastring.c, nntpd.c,
	lockfile.c: Make code C++ compiler proof.  

2002-07-01  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* artutil.c: __LINE__ is integer, not char.  
	* fetchnews.c: Throroughly check changes from crashed previous
	fetchnews.  

2002-07-01  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am: Work around broken Solaris tar that does not archive
	directories.  
	* checkpeerlocal.c, configure.ac: Portability: SIOCGIF* need
	#include <sys/sockio.h> on SysV systems (Solaris, IRIX, Unixware,
	...) 
	* checkpeerlocal.c: Add license. Do not abort(), but skip the
	interface when SIOCGIFADDR yields a different address than was
	passed in. This can happen with 4.4BSD-style aliases on Linux that
	are configured with ip addr add, with older Linux kernels. Tell the
	user to configure Solaris-style alias interfaces instead.  
	* pcre_extract.c: Add email address to copyright.  

2002-07-01  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* nntpd.c: Fix relaxed parsing of XHDR argument: add colon if not
	present.  
	* checkpeerlocal.c, pcre_extract.c: splint guard arpa/inet.h,
	indent.  
	* NEWS, README.FQDN.pod: Fix typos.  
	* applyfilter.c, configutil.c, fetchnews.c, texpire.c: Remove name
	clashes for readability.  
	* fetchnews.c: Fix parsing of bogus server mark in
	leaf.node/server.  Can happen with previous interrupted fetchnews.  

2002-07-01  Matthias Andree <matthias.andree@gmx.de>

	* Makefile.am: Fix 'files left after distclean' warning (on FreeBSD
	at least).  
	* getline.c: Fix missing prototype warning on systems without
	getline.  

2002-06-30  Matthias Andree <matthias.andree@gmx.de>

	* .cvsignore: add README.FQDN{,.html} 
	* newsq.c: Also print Message-ID and the complete/incomplete state.  
	* fetchnews.c: Only try to post articles that have the u+x flag
	set. As fetchnews does not lock in "postonly" mode, this mode might
	post incomplete articles that the client is posting at the same
	time.  
	* nntpd.c: dopost(): Validate Message-ID if present, it must not
	have a local or unqualified domain name part.  Retry to open another
	out.going  spool file if one with the same name already exists.  
	fsync() the out.going file before acknowledging acceptance (240 Ok).  
	chmod a complete out.going file to mode 755 so that fetchnews can
	see it is complete. The idea was taken from Postfix.  
	* NEWS: update.  
	* Makefile.am, README.FQDN.pod: New README.FQDN.  
	* Makefile.am, leafnode.h, pcre_extract.c: New function
	pcre_extract().  
	* config.example: Fix typo, make allowstrangers warnings more
	verbose.  
	* checkpeerlocal.c: Fix 'no previous prototype' and 'defined but
	not used' compiler warnings.  
	* nntpd.c, TODO: Nuke tmpfile().  
	* leafnode.h: Add missing checkpeerlocal() prototype.  
	* Makefile.am, README, checkpeerlocal.c, config.example,
	configutil.c, leafnode.h, nntpd.c: By default, deny connection from
	hosts outside the local networks.  
	* INSTALL: Document xinetd, add note about true remote access.  
	* README, validatefqdn.c: Clarify on the new hostname issue.  
	* mastring.c, mastring.h: Add mastr_size, to obtain the buffer
	size. (Actually, the buffer is one character bigger, to hold a
	trailing NUL byte.) 

2002-06-28  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* texpire.c: Fix minor memleak.  

2002-06-28  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c: add debug info to markinterest() 
	* fetchnews.c, xoverutil.c: tabs2spaces is now in xoverutil.c 
	* fetchnews.c: avoid double free when downloading HEAD.  
	* TODO: folding stuff is debugged 
	* configure.ac: bump version to 1.9.23.rc1 
	* newsq.c: Don't crash when headers are not found and a careless
	libc is in place. Do not leak memory. Unfold headers.  
	* artutil.c: fix memory leak 
	* nntpd.c: More dopost() article syntax checks: control data,
	whitespace in header tag (before colon), missing colon; better
	diagnosis, report missing body. Remove dead CR/LF removal code
	(getline does this already). Fix a typo in error message for missing
	Subject: header.  
	* artutil.c: fgetheader: Complain if header to find does not end in
	a colon. Cleanup, using getfoldedheader. Add simple test function.  
	* texpire.c: remove empty group directory 
	* texpire.8.in: Add a new BUGS item 
	* getfoldedline.c: Change: folded lines keep their LF.  
	* xoverutil.c: When removing .overview, log this in debugmode. Also
	try to remove the current directory, which will be empty at that
	time.  
	* fetchnews.c: Renamed serverlist to server, add freeservers().  
	Change SIGINT handling again, and suppress warning that no server
	that allowed posting could be found after SIGINT.  
	* nntputil.c, texpire.c, configutil.c, leafnode.h: Renamed
	serverlist to server, add freeservers().  
	* nntpd.c: Renamed serverlist to server, add freeservers(). No
	longer open pseudoarticle for /any/ article that is not found, but
	only in pseudogroups.  
	* filterutil.c: only log pcre_exec when debugmode is 2 or higher.  
	* artutil.c: When storing an article, bump the low group mark
	(cg->first) to 2 if it's 1, to prevent some newsreaders from
	offering the pseudoarticle again.  
	* TODO: Applyfilter: fixed low/high marks to 1/1 for empty groups,
	reported by Ralf Wildenhues.  
	* applyfilter.c: Fix low/high marks to 1/1 for empty groups. Free
	server list after readconfig.  

2002-06-27  Matthias Andree <matthias.andree@gmx.de>

	* checkgroups.c, nntpd.c: drop #include <setjmp.h> 
	* .indent.pro: drop implicit options mentioned explicitly 

2002-06-27  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* fetchnews.c: Fix SIGINT setjmp behaviour:  don't try to fetch
	again.  

2002-06-24  Matthias Andree <matthias.andree@gmx.de>

	* CREDITS: update 
	* COPYING, COPYING.GPL, Makefile.am, cindent: Add cindent script.  
	* fetchnews.c: New nopost option. Fix exit status. Always log how
	many articles have been posted. main(): keep servers variable
	intact.  Use volatile to protect variables from setjmp clobbering. 
	Re-indent.  
	* NEWS, config.example, configutil.c, leafnode.h: New nopost
	option.  

2002-06-23  Matthias Andree <matthias.andree@gmx.de>

	* nntpd.c: beautify code 

2002-06-23  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* leafnode.h: Remove unneeded member alive from struct newsgroup.  

2002-06-22  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* texpire.c: Fix possible NULL deref in dogroup.  

2002-06-22  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.23.pre3 ===
	* miscutil.c: fix typo 
	* grouplist.c: Also list "groups" that have no subdirectories.  
	* activutil.c, fetchnews.c, nntpd.c, texpire.c: Further fixes to
	article number treatment.  
	* fetchnews.c: The check to suppress the upstream server's xref:
	header is now case insensitive. Only store articles if all six
	mandatory headers are present.  
	* nntpd.c: robustness: when a group is empty and not interesting,
	also mark it as pseudogroup if the group directory still exists.
	Reported against leafnode-2 by Ralf Wildenhues.  
	* leafnode.h: new fixxover() prototype. new #define
	PORTFILENAMECSET, a string that contains all characters of the SUS
	v2 portable file name character set 
	* TODO: Mirko Liss' suggestion to not read empty lines is
	implemented.  
	* Makefile.am: make temp.files directory 
	* lockfile.c: if timeout is 0, do not try any timeout handling.  
	* xoverutil.c: Fix memory leaks in obscure cases. Also, xoverutil
	would not recover properly from multiple lines for the same article
	in .overview (which should not happen and is now logged with
	LOG_ERR). Reported by Ralf Wildenhues.  
	* miscutil.c: when recreating missing directories, fix owner to
	news before setting the uid.  Create new temp.files directory.  
	* fetchnews.c, xoverutil.c: Move fixxover from fetchnews.c into
	xoverutil.c.  

2002-06-21  Matthias Andree <matthias.andree@gmx.de>

	* miscutil.c: Call endhostent().  

2002-06-20  Matthias Andree <matthias.andree@gmx.de>

	* README: fix broken cut & paste 

2002-06-19  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* xoverutil.c: getxover: after releasing xoverinfo contents, set
	xoverinfo = NULL, so subsequent access will scream.  Duplicate
	strings from overview, don't point into it.  Small memleak in
	getxoverline.
	* texpire.c: Fix memleak.

2002-06-19  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.23.pre2 ===
	* t/: cmp.gal1w, cmp.gal5t: fix check references to satisfy make
	distcheck 
	* ChangeLog, configure.ac, configure.in: release 1.9.23.pre2 
	* artutil.c, fetchnews.c: Debugging cleanups.  
	* getaline.c: Ignore incomplete lines (without trailing LF).
	Suggested by Mirko Liss.  
	* NEWS, README: New DEBUGGING section in README.  
	* xoverutil.c: cleanup, add some debug log to getxoverline 
	* filterutil.c: cleanup, add PROPER debug log (it would formerly
	log the wrong pattern on a match 

2002-06-18  Matthias Andree <matthias.andree@gmx.de>

	* leafnode.h: Drop mallocd from struct xoverinfo.  
	* xoverutil.c: Further cleanup: getxoverline(): drop mallocd member
	of xoverinfo, cope with folded Lines: headers.  
	* xoverutil.c: Cleanup: Drop iovec stuff, use regular write. Saves
	16 LoC.  
	* xoverutil.c: Kill non-article files in non-verbose mode, too.
	Check return value of fchmod, fsync (new) and close, and do not
	rename the temporary .overview file into place when an error occurs.  
	* fetchnews.c, leafnode.h, miscutil.c: appendtolist is gone. use
	prependtolist instead.  

2002-06-17  Ralf Wildenhues <ralf.wildenhues@gmx.de>

	* fetchnews.c: Fix two small memleaks.  

2002-06-17  Matthias Andree <matthias.andree@gmx.de>

	* leafnode.h, miscutil.c: New prependtolist() function.  
	* grouplist.c: Fix: adding to list structure was broken.  Fix
	memory and file descriptor leaks, found by Ralf Wildenhues.  Fix
	indentation to make vi folding happy.  
	* makerpm.sh: This file has been superseded by leafnode.spec.in.  

2002-06-17  Matthias Andree <matthias.andree@gmx.de>

	=== release 1.9.23.pre1 ===
	* texpire.c: Fix long-standing bug: Also expire groups that are not
	in "group.info".  
	* grouplist.c, leafnode.h: Rename getgrouplist -> get_grouplist.  
	* miscutil.c: Make last argument of appendtolist a const.  
	* Makefile.am, grouplist.c, leafnode.h: New function getgrouplist()
	to obtain a list of all news groups in the spool.  

2002-06-15  Matthias Andree <matthias.andree@gmx.de>

	* fetchnews.c: Fix two filtering bugs.  
	1. Filter hits on mandatory headers did not prevent fetching the
	article.  
	2. For each filtered article, one regular article was NOT fetched.  
	En passant, fix types to unsigned long.  Hand over lock file to
	xover-fixing child.  
	* TODO, configutil.c, leafnode.h: Fix two filtering bugs.  
	1. Filter hits on mandatory headers did not prevent fetching the
	article.  
	2. For each filtered article, one regular article was NOT fetched.  
	En passant, fix types to unsigned long.  

2002-06-11 17:16  Matthias Andree <matthias.andree@gmx.de>

	* fetchnews.c, lockfile.c: fetchnews now hands over the lockfile to
	its child; while it's not strictly necessary to hold the lock while
	updating the xover, it prevents several processes fighting for the
	same .overview file at the same time.  
	* applyfilter.c, texpire.c: Track new lockfile_exists() prototype 
	* leafnode.h: Update lockfile.c from leafnode-2 and add the
	handover_lock function.  
	* Makefile.am: Track new files from leafnode-2 
	* ln_log.c, ln_log.h, writes.c: Merge from leafnode-2 

2002-06-03  Matthias Andree <matthias.andree@gmx.de>

	* validatefqdn.h: Split from leafnode.h.
	* TODO, NEWS: update
	* config.example, configutil.c, fetchnews.c, texpire.8.in,
	texpire.c: New feature by Andreas Meininger <a.meininger@gmx.net>:
	set groupexpire to -1 to tell texpire to leave a group alone.
	* fetchnews.8.in: Reword EXIT CODE section
	* fetchnews.8.in, fetchnews.c: fetchnews now exits with code 2 if
	there was a problem connecting to at least one upstream server.
	* nntpd.c: More verbose POST reject messages for missing mandatory
	headers.
	* nntpd.c: More verbose POST reject messages. Reject 8-bit data in
	headers.
	* getfoldedline.c: Never try to unfold after a . line
	* fetchnews.c: Unfold header lines after HEAD command.
	* validatefqdn.c: Fix #include directives.
	* install-sh: install-sh is a generated file and does not belong
	into CVS.
	* gmtoff.c: Add missing stdlib.h include for abort(3).
	* configure.in: Add pcre-config --libs output to LIBS rather than
	LDFLAGS.
	* Makefile.am: New header file validatefqdh.h.	Adopt and merge
	getfoldedline.c from leafnode-2.
	* getfoldedline.c, leafnode.h: Adopt and merge getfoldedline.c from
	leafnode-2.
	* leafnode.h: Move validatefqdn prototypes to separate file

2002-06-02  Matthias Andree <matthias.andree@gmx.de>

	* miscutil.c: Apply fix sent by Raymond Scholz, to fix broken
	hostname resolver.

2002-04-28  Matthias Andree  <matthias.andree@gmx.de>

	* nntputil.c: Drop connection when the upstream server runs
	NNTPcache 2.3.x.

2002-04-25  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: Change 400 Service discontinued message to "Client
	timeout, disconnecting."
	* nntpd.c: No longer emit "400 Service discontinued" to the
	client, it breaks too many of them.
	* leafnode.h: List is_validfqdn().
	* miscutil.c: Fix typo.
	* miscutil.c: Use new is_validfqdn().
	* validatefqdn.c: Also catch linux.local (SuSE default on some
	systems) as invalid.  Export is_validfqdn() to let whoami() use it
	to skip over invalid aliases.

	* miscutil.c: Use endpwent() in initvars().
	* nntpd.c: Report I/O errors in markdownload() back to the client.
	* nntpd.c: Detect I/O errors.
	* nntpd.c: Ralf Wildenhues: fix file descriptor leak in
	markdownload().

2002-04-23  Matthias Andree  <matthias.andree@gmx.de>

	* COPYING: Add Jonathan Larmour.
	* mgetaline.c: Merge timeout_client patch by Jonathan Larmour
	<jifl@jifvik.org>.

	* leafnode.h: Merge timeout_client patch by Jonathan Larmour
	<jifl@jifvik.org>.

	* configutil.c: Merge timeout_client patch by Jonathan Larmour
	<jifl@jifvik.org>.

	* config.example: Merge timeout_client patch by Jonathan Larmour
	<jifl@jifvik.org>.

	* configure.in: Bump version to 1.9.23.pre1.
	* leafnode.h: Add wildmat and mysetvbuf prototypes.
	* mysetvbuf.c: Include leafnode.h to pull the prototype in.
	* wildmat.c: Change gets -> fgets in -DTEST main(). From leafnode
	2.

2002-04-19  Matthias Andree  <matthias.andree@gmx.de>

	=== RELEASE 1.9.22 ===
	* configure.in: Bump version to 1.9.22.rel.
	* CREDITS: Change to UTF-8. Update.

2002-04-17  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: Took Ralf Wildenhues' patch to fix the types of the
	line length counter variable, to prevent buffer overrun on 64 bit
	machines. The bug was introduced in 1.9.22.rc1. Overrides Fabrizio
	Tironi's patch.

	=== release 1.9.22.rc2 ===
	* wildmat.c: Taken from leafnode-2.
	* miscutil.c: Drop fnmatch hassle, use wildmat instead. Problem
	reported by Arvid Warnecke.
	* configure.in: Drop AC_FUNC_FNMATCH. Bump version to 1.9.22.rc2.
	* Makefile.am: Add wildmat.c.

2002-04-15  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.22.rc1 ===
	* NEWS: Update.
	* TODO: Update.
	* miscutil.c (whoami): Fix qualification logic, skip hosts that
	look like localhost or localhost.localdomain (Red Hat default
	installs suffered from the old whoami() logic).
	* nntpd.c (parser): Change n from long to int, the range is small
	enough (Patch by Fabrizio Tironi <awayz@katamail.com>)
	* INSTALL: Add documentation on fully qualified domain names.

2002-04-14  Matthias Andree  <matthias.andree@gmx.de>

	* README: Update.
	* configure.in: Bump version to 1.9.22.rc1.
	* nntputil.c: The NewsCache workaround suffered from an inverted
	logic and did not work properly. Bug reported by Detlev Jckel.

2002-04-08  Matthias Andree  <matthias.andree@gmx.de>

	=== RELEASE 1.9.21.rel (stable) ===
	* NEWS: Update.
	* TODO: Update.
	* applyfilter.c: Ralf Wildenhues: keep last newline in header for
	dofilter.

	* configure.in: Bump version to 1.9.21.rel.

2002-04-05  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.21.rc2 ===
	* miscutil.c: Drop HAVE_GMTOFF trash, use gmtoff()
	instead. Suggested by Ralf Wildenhues.

	* configure.in: Bump version to 1.9.21.rc2. Drop HAVE_GMTOFF check
	(obsolete).

	* xoverutil.c: Properly rewrite .overview when articles have been
	removed that are not the first or last articles in the group,
	reported by Volker Apelt (against leafnode-2) and Ralf Wildenhues.

	* applyfilter.c: Do not reset group high water mark. (Reported by
	Ralf Wildenhues.)

	=== release 1.9.21.rc1 ===
	* applyfilter.c: Work around bogus gcc warning "score might be
	unused".

	* TODO: Reorder and drop Cornelius' applyfilter wish (now
	implemented).

	* TODO: Mark "update overview (applyfilter)" as done.
	* applyfilter.c: Update .overview after filtering, reported by
	Ralf Wildenhues.

	* nntpd.c: Add Jonathan Larmour to copyright.
	* leafnode.h: Add clamp_maxage.
	* configutil.c: Parse clamp_maxage.
	* configure.in: Change version from 1.9.21.pre2 to 1.9.21.rc1,
	short cutting because of the gmtoff bug.
	* config.example: Addition by Jonathan Larmour
	<jifl@jifvik.org>: document that maxage=0 means "No checking".
	Matthias Andree: add clamp_maxage documentation.
	* TODO: update
	* NEWS: update
	* INSTALL: Add MacOS X PCRE build instructions.
	* fetchnews.c: Allow maxage manipulation -- newly introduced in
	1.9.21.pre1 -- to be suppressed with "clamp_maxage=0" in the
	configuration file.

2002-04-04  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: Robustness fix by Jonathan Larmour
	<jifl@jifvik.org>: save the group when rereading the active
	file. Fixes a SIGSEGV.

	* fetchnews.c: Robustness fix by Jonathan Larmour
	<jifl@jifvik.org>: don't dereference NULL fields when parsing
	incomplete XOVER lines. Fixes SIGSEGV.

	* gmtoff.c: Former gmtoff() versions forced the DST flag to 0, so
	the gmtoff() calculation had the wrong offset in locales that use
	daylight saving time. Reported by Ralf Wildenhues.

2002-04-03  Matthias Andree  <matthias.andree@gmx.de>

	* configure.in: Bump version to 1.9.21.pre2.
	* applyfilter.c: Ralf Wildenhues: Remove artificial limit on
	header length -- new function readtodelim, terminate string
	correctly.  Fix usage description and a SEGV in case of wrong
	cmdline input.  Ralf Wildenhues: fix memory leak.

2002-03-29  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.21.pre1 ===
	* NEWS: Update.
	* fetchnews.8.in: Update XOVER information. Document that expire
	overrides maxage if maxage is higher.
	* TODO: Update.
	* fetchnews.c: Abort when ENOSPC is detected on fclose in
	getbody() or getgroup(). Problem reported by Michael O'Quinn.
	* texpire.c: Drop lookup_expire, now in configutil.c.
	* fetchnews.c: Clamp maxage to groupexpire/expire to prevent
	fetching duplicates. Reported by Michael O'Quinn.
	* configutil.c: Add "days" for expire entries.  Move
	lookup_expire() here (was in texpire.c).

	* config.h.in: Updated.
	* activutil.c: Fix uninitialized err use.
	* leafnode.h: Add "days" for expire entries.
	* activutil.c: Fix crash when no groupinfo data is
	present. Reported by Thorsten Gunkel.

	* mysetvbuf.c: New file. Wraps around setvbuf, taking care of
	SETVBUF_REVERSED.

	* leafnode.h: Add lfindinlist, replaceinlist, mysetvbuf
	prototypes.

	* configure.in: Bump version to 1.9.21.pre1. Add
	AC_FUNC_SETVBUF_REVERSED.

	* Makefile.am: Add mysetvbuf.c.
	* miscutil.c: Add replaceinlist and lfindinlist functions.
	* fetchnews.c: Change SERVERNAME~ files in processupstream to line
	buffered mode. Roll in SERVERNAME~ into SERVERNAME if the ~ file
	is newer.

2002-03-25  Matthias Andree  <matthias.andree@gmx.de>

	=== RELEASE 1.9.20 ===
	* configure.in: Bump version to 1.9.20.rel, without actually
	releasing 1.9.20.rc10.

	* README: Drop reference to German documentation.
	* fetchnews.c: Make getbody unlink messages more verbose.

2002-03-24  Matthias Andree  <matthias.andree@gmx.de>

	* configure.in: Bump version to .rc10.
	* config.example: Move initialfetch closer to the beginning of the
	file and recommend it.

	* TODO: Add two bug reports by Michael O'Quinn.
	* NEWS: new
	* INSTALL: Recommend initialfetch.
	* fetchnews.c: Keep old $spooldir/leaf.node/SERVERNAME file in
	place when the new file has write errors. Bug found by Michael
	O'Quinn.  En passant, make two log messages more verbose and
	easier to read.

2002-03-23  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.20.rc9 ===
	* mgetaline.c: New file.
	* README.FIRST: New file.
	* Makefile.am: Add README.FIRST, mgetaline.c.
	* README: Update.

	* validatefqdn.c: Add "logtostderr" option to write a short 503
	notice to stdout (for newsreaders connecting to nntpd) to give
	users a hint why leafnode commits suicide. Idea arose after Heiko
	Nock had difficulties with 1.9.20.rc8.

	* texpire.c: Fix syslog/configuration initialization order.
	Expire articles with 0 bytes.

	* nntputil.c: Drop timeout handling, now in separate file. In
	fopenart(), consider articles of 0 size as nonexistent.  In
	nntpreply(), use mgetaline() instead of getaline() to allow
	network reads to time out.

	* nntpd.c: Fix syslog/configuration initialization order.  Drop
	timeout handling, now in separate file. In fopenart(), consider
	articles of 0 size as nonexistent.

	* miscutil.c: Add "logtostderr" tag to initvars, to let nntpd tell
	the connecting newsreader about its domain name troubles.

	* leafnode.h: Fix prototypes, exhibit timeout management API
	(timer, mgetaline & Co.).

	* fetchnews.c: Also send "considering articles..." message to
	syslog.  Fix syslog/configuration initialization order.  Fix file
	descriptor leak, leaking one fd on each NNTP errors while fetching
	articles; this fix introduces a new protocol element: articles are
	truncated to 0 size on write errors, and 0-sized articles are
	considered nonexistent by texpire and leafnode (the nntpd.)

	* configure.in: Bump version to 1.9.20.rc9.
	* checkgroups.c: Fix syslog/configuration initialization order.
	* applyfilter.c: Fix syslog/configuration initialization order.

2002-03-20  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: Drop unneeded variable p from dolist (Ralf Wildenhues).
	* miscutil.c: Remove duplicate definition of global active (Ralf
	Wildenhues).
	* leafnode.h: Fix getline prototype (Ralf Wildenhues).

        === release 1.9.20.rc8 ===
	* fetchnews.c: Add "HEAD" to logging of replies to "HEAD"
	commands.

	* TODO: Update.
	* README: Update.
	* INSTALL: Deprecate installation without tcpd.

	* fetchnews.c: Log replies to GROUP commands ourselves with debug
	== 1. To trace NewsPlex problems reported by Michael O'Quinn.

	* Makefile.am: Fix fetchnews_DEPENDENCIES, fetchnews was not
	linked anew after LIBOBJS or liblnutil.a updates.

	* nntputil.c (putaline): do not log trailing CR or LF with
	syslog. Use fputs instead of fprintf for efficiency.
	(nntpreply): log the replies with debug == 1 now that getaline
	only logs with debug > 1.

	* nntputil.c: Log port number in "connected to" syslog message,
	and mark the "200" with "reply:" so users know it's not the port
	number. Suggested by Michael O'Quinn.

2002-03-18  Matthias Andree  <matthias.andree@gmx.de>

	* leafnode.h: Have findmsgid() return unsigned long (formerly
	int).

	* fetchnews.c: Have getmarked() consistently use unsigned long for
	article numbers (formerly int).

	* miscutil.c: Have findmsgid() return unsigned long (formerly
	int).

2002-03-16  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: More doarticle() fixes by Ralf Wildenhues. I was too
	fast with my last patch.

2002-03-15  Matthias Andree  <matthias.andree@gmx.de>

	* configure.in: Bump version to 1.9.20.rc8.
	* nntpd.c: Fix possible NULL pointer dereference in response to
	XHDR command, reported by Ralf Wildenhues. If INET_ADDRSTRLEN is
	not defined, use 16 instead, OSF/1 v4.0 does not define this
	macro; reported by Jrg Dietrich.

	=== release 1.9.20.rc7 ===
	* getaline.c: Drop trailing \n from syslog.
	* nntpd.c: Quick and UGLY hack to log own and peer address.
	* TODO: Update.
	* .cvsignore: Add some test files.
	* ALL: fix splint comments that indent broke again. Bug report
	against indent 2.2.6 was filed, because it still breaks comments
	with -nfca -nfc1.
	* xoverutil.c: Add missing closedir(), patch by Ralf Wildenhues.
	* nntpd.c: Make sure that ARTICLE <mid> marks the proper article
	for download. Bug report by Ralf Wildenhues. Fix error reply
	string (patch by Ralf Wildenhues). Replace xstrdup by critstrdup
	(suggested by Ralf Wildenhues).

	* fetchnews.c: Restore the splint comments that indent broke.
	* configure.in: Bump version to 1.9.20.rc7.

2002-03-11  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.20.rc6 ===
	* snprintf.c: Include leafnode.h.
	* leafnode.h: Add vsnprintf prototype.
	* xsnprintf.c: Enhanced.
	* snprintf.c: Fix bogus "overrun" detections.
	* Makefile.am: Update for automake 1.6.
	* configure.in: Update for autoconf 2.53.
	* snprintf.c: Add vsnprintf.
	* ALL: ran through indent.
	* artutil.c: Use NULL instead of 0.
	* artutil.c: Add missing 0 terminator to mastr_vcat call.
	* Makefile.am: Add attributes.h and getline.h to
	liblnutil_a_SOURCES.

	* .cvsignore: Update.
	* tools/.cvsignore: Add Makefile.
	* t/.cvsignore: New.
	* xsnprintf.c: New snprintf checker.
	* xoverutil.c: Silence flawfinder.
	* validatefqdn.c: Silence flawfinder.
	* texpire.c: Tons of type, format string and buffer overrun fixes
	(not exploitable).

	* strdup.c: Silence flawfinder.
	* nntputil.c: Tons of type, format string and buffer overrun fixes
	(not exploitable).

	* nntpd.c: Fix buffer overruns (not exploitable).  Fed through
	indent.

	* newsq.c: Fix buffer overrun (not exploitable).  Fed through
	indent.

	* miscutil.c: Tons of type, format string and buffer overrun fixes
	(not exploitable).  Add overrun() and xsnprintf().

	* lsort.c: Fix buffer overrun (not exploitable).
	* lockfile.c: Silence flawfinder.
	* leafnode.h: Type fixes.
	* fetchnews.c: Fed through indent.
	* fetchnews.c: Tons of type, format string and buffer overrun
	fixes (not exploitable).

	* configutil.c: Tons of type, format string and buffer overrun
	fixes (not exploitable).

	* attributes.h: From 2.0b.
	* applyfilter.c: Properly initialize g->first to ULONG_MAX rather
	than INT_MAX.

	* activutil.c: Use xsnprintf to prevent buffer overruns from
	spooldir (not exploitable).
	* quickmkdir.c: Silence flawfinder.
	* mastring.h: From 2.0b.
	* mastring.c: From 2.0b.
	* Makefile.am: Add mastring.c/.h and xsnprintf check.
	* artutil.c: Fix possible buffer overrun with excessive crossposts
	in store().
	* artutil.c: Drop broken and unused storearticle() function.
	* fetchnews.c: Fix compiler warnings around supersede().
	* leafnode.h: Fix copyright statement.
	* getline.c: Fix copyright statement.
	* configutil.c: Fix copyright statement.  Ralf Wildenhues: Add
	splint annotations. Fix rare memory leaks and OOM management.
	* artutil.c: Ralf Wildenhues: fix memory leak in
	storearticle(). Fix uninitialized variable in store().
	* COPYING.LGPL: Added.
	* COPYING: Fix copyright statement.
	* texpire.c: Fix copyright statement.
	* testgen.c: Fix copyright statement.
	* test1.c: Fix copyright statement.
	* syslog.c: Fix copyright statement.
	* quickmkdir.c: Fix copyright statement.
	* mkstemp.c: Pull in mkstemp() from leafnode 2.0b.
	* gmtoff.c: Fix copyright statement.
	* getline.h: Fix copyright statement.
	* Makefile.am: Add note to config.c that the file is
	auto-generated. Drop env.c.

	* Makefile.am: Fix copyright statement.
	* applyfilter.c: Fix copyright statement.
	* amiroot.c: Add reference to COPYING.LGPL.
	* README: Add hacking and status notes.
	* xoverutil.c: Ralf Wildenhues: fix possible null pointer
	dereferences on badly formatted articles in getxoverline().
	* nntpd.c: Ralf Wildenhues: fix *getheader memory leaks.
	* miscutil.c: Ralf Wildenhues: fix format string bug in lookup().
	* nntputil.c: Add Ralf Wildenhues to Copyright. Ralf Wildenhues:
	add splint annotations.
	* critmem.h: Add copyright statement and license.  Ralf
	Wildenhues: backport critstrdup from 2.0b8, add SPlint
	annotations.

	* leafnode.h: Ralf Wildenhues: SPlint annotations.
	* fetchnews.c: Ralf Wildenhues: SPlint annotations, strdup ->
	critstrdup, memleaks and possible NULL pointer dereference in
	postarticles fixed.

	* critmem.c: Add copyright and license statements.
	* critmem.c: Ralf Wildenhues: add critstrdup from leafnode 2.0b.
	* activutil.c: Ralf Wildenhues: fix memory leaks in mergegroups(),
	changegroupdesc(), writeactive(), readactive(). Turn unchecked
	strdup() into critstrdup().

2002-03-10  Matthias Andree  <matthias.andree@gmx.de>

	* quickmkdir.c: Ralf Wildenhues: add some const keywords to fix
	compiler warnings.

	* nntpd.c: Ralf Wildenhues: don't extract the article number for
	STAT/BODY/HEAD/ARTICLE <MID> form, return 22X 0 <MID> according to
	the current NNTP draft. We anticipate this change for
	compatibility with some clients.

	* miscutil.c: Ralf Wildenhues: introduce compile-time option
	-DTESTMODE which ignores UID switch failures. Don't use in
	production.

	* lsort.c: Ralf Wildenhues: add some const keywords.

	* fetchnews.c: Ralf Wildenhues' patch: fix compiler warnings, fix
	variable shadows and add some const keywords.

	* texpire.8.in: Document that texpire expires individual articles,
	not threads.

	* nntpd.c: Fix pseudo article handling broken by changes that went
	into .rc5. Reported by Ralf Wildenhues.

	* miscutil.c: Introduce SIZE_s as the size of the "s" variable.

	* getaline.c: getaline(): Only print lines read when debug is >
	1. Bug found by Michael O'Quinn.  License: remove infiltration
	clause for leafnode.

	* configure.in: Bump version to 1.9.20.rc6.

2002-03-08  Matthias Andree  <matthias.andree@gmx.de>

	* fetchnews.c: Workaround for yet unknown bug: Also catch SIGPIPE
	to let us still update the XOVER.

2002-03-05  Matthias Andree  <matthias.andree@gmx.de>

        === release 1.9.20.rc5 ===
	* TODO: Update.
	* Makefile.am: Remove /dist from find in disk-hook to fix "make
	dist" troubles when WITH_PCRE=no (for RPM).

	* nntpd.c: fopenart(): Unify "STAT n" and "STAT" (with implicit
	current article pointer) handling (also for ARTICLE/BODY/HEAD) to
	fix inconsistencies reported by Ralf Wildenhues. Further tuning
	may be required should bogus pseudoarticles show up.  doarticle():
	drop printf(...) in header/body copy loops, use fputs(..., stdout)
	instead for efficiency.

	* nntpd.c: Fix two strdup that didn't check their return value; we
	have a new xstrdup function that does that. Found by Ralf
	Wildenhues.  Fix delaybody. Since 1.9.19.ma4, this had been broken
	and would never deliver a body with BODY or ARTICLE. Found by Ralf
	Wildenhues.

	* nntpd.c: Fix NEWGROUPS "GMT" inverse logic bug which used
	local->GMT compensation when the keyword GMT was NOT in place. The
	bug has been introduced in 1.9.20.rc3 and was discovered by Ralf
	Wildenhues.

2002-03-01  Matthias Andree  <matthias.andree@gmx.de>

	* TODO: Update.
	* fetchnews.c: Merge Ralf Wildenhues' patch to fix atoi to strtol.
	* configure.in: Bump version to 1.9.20.rc5.
	* Makefile.am: Prune CVS directories from tarball. Reported by
	Ralf Wildenhues.

	=== release 1.9.20.rc4 ===
	* xoverutil.c: Type and format string fixes.
	* xoverutil.c: Drop arpa/inet.h, not needed in this file.
	* nntpd.c: Feed through indent.
	* leafnode.h: Type and format string fixes.
	* fetchnews.c: Type and format string fixes.  Drop delposted.
	Remove article as soon as successfully posted to any server, to
	prevent moderators from being mailed articles twice. NOTE: put
	your most reliable servers first in the config file!
	Fix SIGSEGV with fetchnews -P.
	* configutil.c: Type and format string fixes.
	* activutil.c: Type and format string fixes.

2002-02-28  Matthias Andree  <matthias.andree@gmx.de>

	* nntpd.c: Return article number 1 instead of 0 for pseudo group
	STAT/HEAD/BODY/ARTICLE.
	* nntpd.c: Fix STAT/HEAD/BODY/ARTICLE with pseudo article with
	implicit article number. Bug reported, found and different fix
	suggested by Ralf Wildenhues.

2002-02-27  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.20.rc3 ===
	* README: Add some documentation on troubleshooting.
	* env.c: Drop inline keywords, they break Sun's Workshop cc.
	* test1.c: Fix compiler warnings, dropping argc/argv.
	* env.c: Feed through protoize. Add some (int) typecasts.
	* nntpd.c: Fix "XOVER 1- yields 420 on pseudogroups" bug reported
	by Ralf Wildenhues. At the same time allow "XOVER -n" syntax.
	* newsq.c: Implement new "-f" option that shows the
	failed.postings queue instead. Change the column headers.
	* newsq.1.in: Document new "-f" option that shows the
	failed.postings queue instead.
	* TODO: Update.
	* README: Update.
	* genlsm.sh.in: Update Maintained-By:.
	* configure.in: Add AM_MAINTAINER_MODE to speed up end user
	builds. If you want to hack on leafnode, please use ./configure
	--enable-maintainer-mode.
	* fetchnews.c: Drop unused variables from delposted().
	* syslog.c: Include leafnode.h, patch by Ralf Wildenhues.
	* nntpd.c: Various type and format string fixes.
	* quickmkdir.c: Include stdlib/string.h. Patch by Ralf Wildenhues.
	* fetchnews.c: Partially restore delposted() handling.
	* texpire.c: Drop whoami() call, now done in initvars().
	* nntputil.c: Change lllen to size_t.
	* nntpd.c: Drop fqdn override to "localhost". Drop whoami(), now
	called from initvars(). Use gmtoff() handling from
	2.0b8_ma10pre. Drop global variable gmt_off, inadequate.
	* miscutil.c: Call whoami() and validatefqdn() from initvars().
	* lockfile.c: Register atexit() function to clean up left-behind
	temporary lock helper files.
	* leafnode.h: Add validatefqdn, gmtoff, drop whoami, change fqdn
	size to a #define.
	* configure.in: Bump version to 1.9.20.rc3.
	* checkgroups.c: Drop whoami() call, now done in initvars().
	* applyfilter.c: Drop whoami() call, now done in initvars().
	* Makefile.am: Add .indent.pro, validatefqdn.c, gmtoff.c.
	* gmtoff.c: new module.

2002-02-26  Matthias Andree  <matthias.andree@gmx.de>

        === release 1.9.20.rc2 ===
	* configure.in: Bump version to 1.9.20.rc2.
	* fetchnews.c: When fetchnews is run with servers down, articles
	may not make it to the upstream, but not to failed.postings
	either, and will be lost without traces at the time delposted() is
	run. We just drop delposted() and rely on postarticles() to remove
	the articles successfully posted, relying on the upstream server
	to reject postings older than its history data base. Bug reported
	against leafnode 2.0b8 by Ivo Schwalbe, <ivo@ivos.de>, Message-ID:
	<jffdg9.1v.ln@abu.ivos.de>, 1.9.19 inquiry by jom1@voonoo.net.

2002-02-20  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.20.rc1 ===
	* nntpd.c: Add Ralf Wildenhues to Copyright.
	* configure.in: Bump version to 1.9.20.rc1.
	* nntpd.c: Ralf Wildenhues found and fixed a buffer underrun in
	leafnode 2.0b8_ma9 and reported it was also present in
	1.9.19. Merging the fix from 2.0b8_ma*.

2002-01-11  Matthias Andree  <matthias.andree@gmx.de>

	=== release 1.9.19.ma4 ===
	* fetchnews.c: Take the workaround Mark Brown
	<broonie@sirena.org.uk>, Debian leafnode package maintainer,
	suggested to limit the impact of zero-sized groupinfo woes, Debian
	Bug#128524. Beware however, this is not a complete fix and does
	only work for setups with exactly one server/supplement line
	(either server or supplement) in /etc/leafndoe/config, on
	multi-server setups, after fixing your authentication information,
	you *MUST* rerun fetchnews -f. Still, it does not make things
	worse for the user, so I took it although I hesitated at
	first. (Matthias Andree)

	* nntputil.c: Add support for NewsCache workaround, keep a copy of
	the line last read by nntpreply().

	* nntpd.c: Take gmtoff from leafnode-2.0b8_ma9rc2 to fix Solaris
	compilation troubles and wrong timezone in logs.

	* Makefile.am: Require automake >= 1.5.  Add copyright.  No longer
	distribute config.c.  Properly set owner of directory holding the
	lockfile (reported by Doug Laidlaw).

	* leafnode.spec.in: Move lockfile to
	/var/spool/news/leaf.node/fetchnews.lck

	* fetchnews.c: Backport NewsCache workaround for upstream posting
	from leafnode 2.0b*

	* COPYING: Put 2002 in (C).
	* configure.in: Require automake >= 2.52, put 2002 in (C), bump
	version.

2001-09-02  Matthias Andree  <matthias.andree@gmx.de>

	* release 1.9.19.ma2
	* updated for autoconf 2.52 and automake 1.5
	* updated PCRE to 3.5
	* Makefile.am: tweaks for automake
	* env.c: shamelessly stolen from FreeBSD 4.4-RC
	(setenv): change bcopy to memcpy
	do __P right

	* nntpd.c: fix unsetenv issues. May memory leak a couple of bytes
	for the TZ environment variable, we cannot fix that portably
	without major effort.

2001-06-16  Matthias Andree  <matthias.andree@gmx.de>
f
	* lockfile.c (safe_mkstemp): umask safe mkstemp
	(lockfile_exists): reimplemented from scratch.

	* miscutil.c: remove lockfile_exists, now available as separate
	file. It was broken beyond repair.

2001-06-07  Matthias Andree  <matthias.andree@gmx.de>

	* activutil.c: remove snprintf which did not check its error code
	and replace by a safe collection of fputs/fprintf.

2001-01-14  Matthias Andree  <matthias.andree@gmx.de>

	* generic: have callers of lockfile_exists() report to stdout if
	locking fails.
	* release: 1.9.18ma4
	* Makefile.am: fix fetchnews dependencies when included PCRE are
	to be used. fix make test when configured for build outside of
	source directory.
	* config.example: document linebuffer parameter
	* configure.in: fix dependencies for included PCRE
	* configutil.c: add "linebuffer" parameter, if set to != 0,
	it will change stdout and stderr to be line buffered.
	* fetchnews.c: tell port in "Trying to connect to..." verbose
	message (only in 1.9.18ma4)
	* filterutil.c: fix pcre.h include location and a minor typo.
	
2000-12-19  Matthias Andree  <matthias.andree@gmx.de>

	* configure.in: remove bash-isms
	* Makefile.am: fix GNU make dependencies, BSD pmake is fine now
	* fetchnews.c: fix some syslog format strings (%d -> %ld)
	* nntpd.c: fix some syslog format strings (%d -> %ld)

2000-09-11  Matthias Andree  <matthias.andree@gmx.de>

	* genlsm.sh.in: generates lsm file automatically
	
	* xoverutil.c: switch to mysyslog and remove mkstemp #ifdefs (now
	handled by autoconf)

	* testgen.c: testcase generator.

	* test1.c: getaline tester.

	* t/: new directory, has test cases for getaline.

	* syslog.c (myopenlog): new function to remove #ifdefs from
	program files. Encapsulate system differences in this file.

	* quickmkdir.c: installation helper tool. 

	* nntpd.c: replace fgets by getaline, fix article number variables
	types to unsigned long, switch to myopenlog.
	
	* miscutil.c: remove snprintf, change xfirst/xlast to unsigned
	long, split critmalloc/critrealloc, strdup, snprintf off, add
	verbose>3-debug to makedir, delete getaline function (too complex,
	yet buggy), fix ngmatch not recognizing * and [ as wildcards.

	* makerpm.sh: removed file
	
	* leafnode.spec.in: have leafnode.spec built by autoconf

	* leafnode.h: cleanup, support for critmem.h and prototypes for
	new and replacement functions, change xfirst/xlast to unsigned long

	* getline.c: new implementation from scratch for systems without
	GNU libc 6. GPL. Uses getc currently.

	* getaline.c: new implementation from scratch, uses getline,
	GPL. Rock solid. Will not break on \0. Does not change \0 to space
	(waste of time, if an article has \0, it's broken, don't try to
	fix).

	* fetchnews.c: fix constants to PATH_MAX, support XOVER, work
	around %y strftime compiler warning, switch to myopenlog

	* doc_german: remove old documentation. outdated.
	
	* critmem.c: split functions off miscutil.c

	* critmem.h: new file

	* configutil.c: change libdir to sysconfdir

	* configure.in: adjust to automake, put -lpcre into PCRELIB rather
	than LIBS, use AC_REPLACE_FUNCS for snprintf strdup mkstemp and
	getline, support --with-spooldir, change --with-confdir to
	override sysconfdir, support --with-lockfile, check rpm build
	directory, add man pages to AC_OUTPUT, echo help message after
	configuration.

	* applyfilter.c: fix article counter type to unsigned long, switch
	to myopenlog

        * man pages: insert proper paths by autoconf
	
	* activutil.c (readactive): fix type of n to ssize_t

	* acconfig.h: new #defines: SPOOLDIR, LOCKFILE, HAVE_GETLINE

	* PCRE_README: new documentation

	* Makefile.am: switch to automake

	* INSTALL: Updated and revised. Removed section on %y yielding
	only last 2 digits of year.

2000-09-06  Matthias Andree  <matthias.andree@gmx.de>

	* lockfile.c: when a stale lock file existed, it would be removed,
	but locking would still fail. Fixed. locking is now retried when
	stale file had been removed.

	* fetchnews.c: move whoami() in front of the lockfile_exists() call
	addendum: move updateactive/writeactive/unlink(lockfile) from
	child to parent process, since with the new lockfile.c, lockfiles
	are no longer shared between processes.
	
	* texpire.c (main): insert whoami(), needed for lockfile recovery

	* applyfilter.c (main): insert whoami(), needed for lockfile recovery

History of 1.9.19 -- changes since 1.9.18:

activutil.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> to
  _compactive() which removes some compiler warnings on FreeBSD.

applyfilter.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
- store() now is declared without all the unused variables.

artutil.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.

configure.in:
- "ar" was not found on Solaris 8. Reported by Robert Kuhn
  <robert@vermtech.de>.

fetchnews.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
- nntpactive(): To avoid a compiler warning, we let strftime()
  produce a four-digit year; in the next line, we skip the
  first two digits, though. Code written by Matthias Andree
  <matthias.andree@gmx.de>.
- getgroup(): removed reset of group numbers when a group was unsubscribed.
  Suggested by o.rousseaux@libertysurf.fr.

filterutil.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.

leafnode.h:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
- store() now is declared without all the unused variables.
- moved various #include statements to the top of the file to make
  leafnode also compile on IRIX 6.2. Reported by Gerhard Lenerz
  <gerhard.lenerz@gmx.de>.

miscutil.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
- removed old getaline(), included new getline() and getaline() from
  leafnode-2.0b8, both written by Matthias Andree <matthias.andree@gmx.de>.

nntpd.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
- gmtoff() returned wrong values. Bug first fixed in Leafnode-2.0b6 by
  Stefan Wiens <s.wi@gmx.net>.
- gmtoff(): if there is no TZ variable set in the environment before
  calling gmtoff(), it will now be unset again afterwards. Patch by
  by <o.rousseaux@libertysurf.fr>.

Makefile.in:
- removed message about disregarding warning when making fetchnews because
  the warning does not occur anymore.
- getline.c, getaline.c and getline.h now included.

xoverutil.c:
- applied a patch by Matthias Andree <matthias.andree@gmx.de> which
  removes some compiler warnings on FreeBSD.
	* configure.in: link pcre library only to those executables that
	need it
	(confdir): make confdir override sysconfdir with appropriate warnings.

=============================================================================
	* miscutil.c (ngmatch): fix bad logic in finding wildcard characters
	(snprintf): change i to type size_t (was int)

History of 1.9.18 -- changes since 1.9.17:

fetchnews.c:
- postarticles(): under certain circumstances, files were not closed.
  Bug found by Carl D. Cravens <raven@phoenyx.net>.
- nntpactive(): if "LIST NEWSGROUPS news.group.name" does not work for the
  first group, it is not attempted for other groups. Suggested by
  Carlos Robinson <cerobinson@teleline.es>.

makerpm.sh:
- patch by Karsten Merker <merker@linuxtag.org> to accommodate new names of
  tarballs changed in 1.9.17.

Miscellaneous:
- renamed CHANGES to ChangeLog.

=============================================================================

History of 1.9.17 -- changes since 1.9.16:

activutil.c:
- fixed a few printf statements which caused warnings on FreeBSD 4.1-STABLE.
  Reported by Ron Rosson <insane@lunatic.oneinsane.net>.

fetchnews.c:
- some time_t variables in getgroup() now casted to int to avoid warnings
  on FreeBSD 4.1-STABLE. Reported by Ron Rosson <insane@lunatic.oneinsane.net>.

Makefile:
- "make dist" now generates one tarball without and one with pcre library.

miscutil.c:
- another patch to getaline() because the previous one did not work
  satisfactorily. NUL bytes are now changed to spaces.

nntpd.c:
- "xhdr [header] <message-id>" did not work correctly (always returned
  the first header with the string length of [header] which became
  obvious when Xref: was asked and Path: returned). Bug reported by
  Andrzej Radecki <radecki@wpk.p.lodz.pl>.
- added the code for correct determination of timezone differences from
  2.x by Joerg Dietrich.

texpire.c:
- crashed with segmentation fault if groupinfo file did not exist. Bug
  described by Shaul Karl <shaulk@israsrv.net.il>; patch by Mark Brown
  <broonie@tardis.ed.ac.uk>.

=============================================================================

History of 1.9.16 -- changes since 1.9.15:

fetchnews.c:
- getgroup(): applied a patch by <o.rousseaux@libertysurf.fr> which
  makes fetchnews fetch news in ascending order.

nntpd.c:
- doxhdr(): now also returns "Newsgroups" header when only pseudo
  article is available. Feature requested by Karen Nakamura <mail@gpsy.com>
  because MT Newswatcher needs it.

=============================================================================

History of 1.9.15 -- changes since 1.9.14:

fetchnews.c:
- nntpactive() now uses LIST instead of LIST ACTIVE.

miscutil.c:
- getaline() now can also handle NUL bytes. Patch by Matthias Andree
  <ma@dt.e-technik.uni-dortmund.de>.

=============================================================================

History of 1.9.14 -- changes since 1.9.13:

fetchnews.c:
- if the second server had no new articles compared to the first one,
  fetchnews would not adjust the counter properly. Bug fixed by
  Peter Katzmann <peter.katzmann@knuut.de>.

makerpm.sh:
- "make rpm" now also works on SuSE. Patch by Juergen Salk
  <juergen.salk@gmx.net>.
- FAQ is now included in RPM. Bug reported by Bjoern Voigt <bjoern@web.de>.

miscutil.c:
- snprintf() was buggy (did not recognize %lu and %ld). Reported by Joerg
  Dietrich <joerg@dietrich.net>.

nntpd.c:
- dopost(): if owndn is set, it is now also included in the Path: (not
  only used for the message ID). Suggested by Mark Brown
  <broonie@tardis.ed.ac.uk>

texpire.c:
- expiregroup(): checks now also if the pointer g exists. Bug reported
  by Peter Katzmann <peter.katzmann@knuut.de>.

xoverutil.c:
- removed stripspace() completely from the code that creates the
  overview lines. This means that leading and trailing blanks are not
  removed any more in any header line, nor are consecutive blanks
  compressed.
- getxoverline(): in the Subject: line, consecutive blanks are now left
  untouched. Requested by Thomas Zajic <zlatko@gmx.at>.

=============================================================================

History of 1.9.13 -- changes since 1.9.12:

configure.in:
- tests now also for snprintf() because it is used in activutil.c.

configutil.c:
- fixed possible overflow bug when providing very large expiry times. Bug
  described by Andreas Ferber <aferber@techfak.uni-bielefeld.de>.

miscutil.c:
- added a homegrown version of snprintf() for systems which don't supply it.

nntpd.c:
- did not compile under *BSD because it defines the timezone in a different
  way. Bug first reported by Ron Rosson <insane@lunatic.oneinsane.net> and
  fixed by Shigeru Ikeda <js3guj@gold.ocn.ne.jp> and Joerg Dietrich
  <joerg@dietrich.net>.

=============================================================================


History of 1.9.12 -- changes since 1.9.11:

activutil.c:
- mergegroup() now sets the name of the newsgroup after the last
  as NULL. Suggested by Claude Michel <cpjm@free.fr>.
- insertgroup() does not change any information of groups which are
  already present. Bug discovered and fixed independently by Johannes
  Stezenbach and Joerg Dietrich <joerg@dietrich.net>.

artutil.c:
- fgetheader(): header doesn't have to include terminal : anymore.

fetchnews.c:
- delposted(): if an article could not be deleted, there was no error
  message. Noted by Matthias Leisi <usenet-03-2000@astrum.ch>.
- nntpactive(): if the whole newsgroups file is fetched from upstream
  servers, the timestamps are set to 0. Bug discovered and fixed by
  Joerg Dietrich <joerg@dietrich.net>.

Makefile.in:
- to install man pages, "install" is now used instead of "cp". Suggested
  by Mike Castle <dalgoda@ix.netcom.com>.

nntpd.c:
- in donewgroups(), the timezone was not considered. Bug described and
  fixed by Joerg Dietrich <joerg@dietrich.net>.
- in doxhdr(), arg was overwritten sometimes for some reasons. Therefore
  it is now copied into a separate buffer which is then used. Bug
  discovered by Johannes Stezenbach.
- dummy article now points to http://www.leafnode.org/ and mentions
  fetchnews instead of fetch. Noted by Hauke Heidtmann
  <haukeheidtmann@gmx.net>. (This was already corrected in the 2.0alpha
  versions.)

texpire.c:
- texpire could crash when directories contained subdirectories whose
  names consisted of digits only. Bug discovered and fixed by
  Georg Borgstroem <geobo@lysator.liu.se>.
- in dogroup(), replaced a rewinddir() call by a closedir() ; opendir().
  Suggested by Stephen Marley <stephen@home.uklinux.net> because of some
  strange infinite loop he ran into.

xoverutil.c:
- "updated x lines in y/.overview" now only logged if debugmode is
  switched on. Suggested by Juergen Salk <juergen.salk@gmx.de>.

=============================================================================

History of 1.9.11 -- changes since 1.9.10:

activutil.c:
- helpfindgroup() modified which speeds up the time to find a group.
  Prompted by benchmarking the code to some code written by Tony de
  Haan <tony@iae.nl>.
- readactive() caused huge memory leaks if called repeatedly because the
  old active was not freed properly. Bug found and fixed by Lloyd Zusman
  <ljz@asfast.com>.

fetchnews.c:
- nntpactive() did not insert new newsgroups correctly. Bug discovered
  and fixed by Joerg Dietrich <joerg@dietrich.net>. This bug was partially
  introduced in 1.9.10 but was partially present already in previous
  versions.

Miscellaneous:
- configure.in now detects old-style BSD syslog. This also involves
  changes in leafnode.h and applyfilter.c, fetchnews.c, nntpd.c and
  texpire.c.
- configure.in readjusted (HAVE_OFFT_8 was not needed)
- configure.in now checks whether kernel includes are installed properly.
  Suggested by Matthias Andree <ma@dt.e-technik.uni-dortmund.de>.
- added a new point to the FAQ. Suggested by Matthias Andree
  <ma@dt.e-technik.uni-dortmund.de>.

=============================================================================

History of 1.9.10 -- changes since 1.9.9:

activutil.c:
- changegroupdesc() crashed when getting a NULL pointer as parameter.
  Bug discovered and fixed by Joerg Dietrich <joerg@dietrich.net>.
- writeactive() stopped writing active file if an empty record was
  encountered. Fixed. (I have no idea where these empty records come
  from in the first place...)
- readactive() now sets first and last article in each group to 1 if they
  are 0.
- writeactive() now should not write empty records to the groupinfo file
  any more
- replaced the old version with the version from leafnode-2.0a9 featuring
  arrays instead of trees. There is one difference: since lsort is already
  called in the makefile, the active file is not re-sorted when reading
  it.

applyfilter.c:
- fixed for new activutil.

checkgroups.c:
- fixed for new activutil.

config.example:
- replaced all "supplement" with "server"

configutil.c:
- corelimit.rlim_cur is now cast to int.

fetchnews.c:
- diverse time_t things casted to int.
- nntpactive() logged too much after last "fix". Fixed.
- fixed nntpactive() for new activutil.
- if "LIST NEWSGROUPS" returned just "215" without any text, fetchnews
  became confused. Reported by Pasqualino Casciano
  <pasqualino.casciano@stud.lrz-muenchen.de>.

miscutil.c:
- somehow, Bruno Rohee's patch escaped the final distribution of 1.9.8
  and 1.9.9. Fixed.

nntpd.c:
- if there is a timeout when calling mgetaline(), leafnode now returns
  400 instead of 421. Suggested by Michael Schlennstedt <schlenn@schlenn.de>.
- doxhdr() now returns (none) if asked for XHDR REFERENCES of an
  article. Suggested by Ted Marston <ted@nowtsfree.freeserve.co.uk>;
  increases compatibility with xrn.
- fixed for new activutil.

texpire.c:
- fixed for new activutil.

xoverutil.c:
- illegal articles are now simply removed.

Miscellaneous:
- added a section about connection loss to the FAQ
- TROUBLESHOOTING section in README moved into separate FAQ document
- changes in config.example and leafnode.8 suggested by Mark Brown
  <broonie@tardis.ed.ac.uk>.

=============================================================================

History of 1.9.9 -- changes since 1.9.8:

Miscellaneous:
- the previous correction in the Makefile actually was not a correction
  but the introduction of a bug because it prevents proper compilation
  if libpcre is not installed already. Fixed back. Reported first by
  Matthias Flohr <mflohr@gmx.de>.

=============================================================================

History of 1.9.8 -- changes since 1.9.7:

fetchnews.c:
- getgroup(): there was still a realloc() too many left which led to
  occasional crashes. Fixed.
- getgroup(): if realloc( x, 0 ) is called twice, the program will crash.
  Fixed.
- getgroup(): if there are no articles to get, we don't go through the
  "XHDR Date" stuff (which seems to be very slow with DNews anyway).
- getgroup(): if a group is unsubscribed, "first" and "last" are set to 1
- fixed a bug in getgroup() which might have lead to premature expiring
  of groups

miscutil.c:
- fixed a bug in ngmatch() (#ifdef was for HAVE_FNMATCH_H instead of
  HAVE_FNMATCH) discovered by Daniel Barron <daniel@jadeb.com>.
- applied a patch by Bruno Rohee <rohee@OpenBSD.ORG> replacing setreuid()
  and setregid() with setuid() and setgid() when possible

nntpd.c:
- donewgroups(): changed code to make it more clear
- donewgroups(): some newsreaders exhibited a Y2K problem and sent 7-digit
  dates. Leafnode can now parse these dates as well.
- markinterest() changed both mtime and atime if file was already
  present. Fixed. (A problem with the expiry mechanism had been reported
  by several people but it was quite difficult to track it down.)

texpire.c:
- article numbers are not reset when a group is empty because this
  results in new articles not being displayed in low-traffic groups.

xoverutil.c:
- applied a patch by Bruno Rohee <rohee@OpenBSD.ORG> replacing mktemp()
  with mkstemp() if possible
- removed the error message that occurred if a directory contained
  newsgroups starting with a digit

Miscellaneous:
- /var/spool/news/failed.postings was not installed during "make install"
- added "fetchnews -n" to the troubleshooting section of the README.
- small bug in Makefile.in corrected (-lpcre was linked twice with
  applyfilter)
- small bug in makerpm.sh fixed (version number was hard-coded).

=============================================================================

History of 1.9.7 -- changes since 1.9.6:

fetchnews.c:
- new function tabtospace() to handle tab-ified article headers. Written
  by Radoslaw Gancarz <r_g@priv2.onet.pl>. (This problem is treated
  differently in leafnode-2.0a7.)
- getgroup(): somehow a bug which I thought had been fixed crept in again.
  If a newsgroup line starts with more than one space, fetchnews would
  not delete the last characters when deleting spaces. Bug found by
  Manfred Weihs <e9525662@student.tuwien.ac.at> and Thomas Themel
  <tthemel@gmx.net>. (Actually, I have no idea what will happen with
  leafnode-2.0a7 in this case.)

Miscellaneous:
- "make rpm" now works; thanks to Karsten Merker <merker@guug.de> for
  the patch (major modifications in makerpm.sh and Makefile.in)

=============================================================================

History of 1.9.6 -- changes since 1.9.5:

fetchnews.c:
- getgroup: if any article was killed by min/maxlines or maxage, not all
  remaining articles in that group were fetched. Reported by
  Jeff East <an972@freenet.carleton.ca>.

=============================================================================

History of 1.9.5 -- changes since 1.9.4:

activutil.c:
- When groupinfo was not a file, leafnode would crash. Fixed.
- Misc. castings done.
- isinteresting() now works case-insensitive.
- A closedir was missing in fakeactive(). Fixed.

config.example:
- added lines for "hostname" and "filterfile" parameter.

config.h.in:
- Support for libshadow and libcrypt added (not needed yet).
- Misc. changes.

configure.in:
- Cleaned up.
- Timezone problems fixed.
- IPv6 support improved.
- Checking for shadow library (not needed yet).

configutil.c:
- Server now logged with LOG_DEBUG instead of LOG_INFO (like the rest of
  the configuration).

fetchnews.c:
- No more lowercase conversion of newsgroups names.
- If some essential header was not found, fetchnews segfaulted. Fixed.
- Calls to tgetaline() removed.
- If upstream server understood XGTITLE, new groups and their descriptions
  were not entered in active file. Fixed (hopefully).

filterutil.c:
- If no filterfile is present, return FALSE.

miscutil.c:
- getpid() is now casted to int.
- tolower() now casts its argument.
- lowercase() removed.
- Year 2000 problem fixed.
- Timezone problems fixed.

newsq.c:
- st.st_size is now copied in a variable first and printed later (otherwise
  we had troubles with warnings etc. on various operating systems, including
  HP/UX, Digital Unix and *BSD).
- #include <sys/types.h> for HP/UX and certain variants of BSD.

nntpd.c:
- Y2K fix in donewgroups().
- No more conversion to lowercase of newsgroups names.
- Complains now if configuration file cannot be read.
- Empty lines on input are ignored.

nntputil.c:
- tgetaline() removed.

texpire.c:
- dogroup(): when determining the first and last articles in the
  group, we now stat() every article and check whether it is a
  regular file. This saves troubles with groups like alt.2600
  where a directory alt/2600 exists and the 2600 was mistaken as
  an article number.

xoverutil.c:
- Information about updating .overview files is not displayed on stdout
  anymore.

Miscellaneous:
- New file lsort.c, to properly resort groupinfo file.

Changes of 1.9.4-ma1-bn1 included:
---------------------------------

- Fixed a few non-portable constructs in the update.sh script

Changes of 1.9.4-ma1 included:
-----------------------------

INSTALL:7: added information about SuSE --prefix=/usr
INSTALL:78: added pointers to hosts_access(5) and hosts_options(5)

Makefile.in:53: moved @cp pcre/libpcre.a libpcre.a into libpcre.a: actions
Makefile.in:57: prepended $(MFLAGS) and $(MAKEFLAGS) with dash (`-')
Makefile.in:96: clean also removes *~ and \#*
Makefile.in:98: prepended $(MFLAGS) and $(MAKEFLAGS) with dash (`-')
	ll 57,98 fixes stop emacs barfing on make -k "unknown target k"
Makefile.in:101: realclean also removes *.rej and *.orig
Makefile.in:161ff: split uninstall into uninstall and uninstall-bins
	uninstall-bins will not touch $(SPOOLDIR) and $(LIBDIR)

configutil.c:106: initializers added: p = 0, q = 0

activutil.c:167: initializer added: desc = 0

miscutil.c:145: made namelen unsigned

nntputil.c:196: corrected parentheses in #define 
nntputil.c:206: made struct servent *sp static (was auto) 
nntputil.c:210: made int i static (was register, should not hurt, indexes
	only servers)

fetchnews.c:216: inserted comparison against date: string, fixed
	some strange SIGSEGV I experienced
fetchnews.c:731++: added fast XHDR header check for maxage speedup
	speeds up maxage purging if some other site dumped loads of
	old news into some high-traffic newsgroup. 
fetchnews.c:738: initializer added: aage = 0
fetchnews.c:1059: warning re. strftime %y yielding 2 digits is ok and 
	conforms to RFC-977 which respects Y2k issues. 
fetchnews.c:1209: stat() checks for errors and skips . and ..

xoverutil.c:301: skips . and .. directory entries

=============================================================================

History of 1.9.4 -- changes since 1.9.3:

libutil:
=======

180799: xoverutil: getxover() now logs corrected XOVER lines to syslog
	instead of printing them to stdout (this should have happened
	before).

nntpd:
=====

160799: added more verbose error message in dopost() if an article could
	not be posted (code written by Matthias Andree
	<mandree@sx1.HRZ.Uni-Dortmund.DE>).
160799: removed an unnecessary open() call in dopost() (probably a cut-
	and-paste error)
160799: in doarticle(), moved free(p) into previous if.. condition.
	Suggested by Matthias Andree <mandree@sx1.HRZ.Uni-Dortmund.DE>.

Miscellaneous:
=============

170799: changed several occurences of /usr/lib to /etc in the manpages.
	Problem first noted by Stefan Ladwig <stefan.ladwig@privat.kkf.net>.
150799: pcre(7) now installs correctly. Bug found by Diedrich Ehlerding
	<diedrich.ehlerding@t-online.de>.

=============================================================================

History of 1.9.3 -- changes since 1.9.3b6:

fetchnews:
=========

150799: age(): time_struct is now set to zero before filling it with
	variables. Fix by <wiml@netcom.com>.

libutil:
=======

100799: filterutil: autodetection of various pcre versions now allows
	compiling with pre-existing versions on a system.
090799: filterutil: now only the matched pattern is logged to LOG_DEBUG,
	and this happens only if the debugmode is switched on
070799: xoverutil: "illegal articles" (i.e. articles which don't have
	correct XOVER information) are now removed again (it is checked
	before whether these are really articles).
070799: configutil: "fqdn" is now the same as "hostname" in the
	configuration file. (Necessary because of a mistake in a
	FAQ by Jonas Luster which made it into LINUX magazine.)

nntpd:
=====

150799: NEWGROUPS would sometimes return all groups because struct
	timearray (in donewgroups()) was sometimes only partially
	initialized. Bug reported and fix provided by <wiml@netcom.com>.

Miscellaneous:
=============

150799: updated German documentation by Alexander Reinwarth
	<a.reinwarth@gmx.de>.
150799: created acconfig.h (courtesy Mark Brown <broonie@tardis.ed.ac.uk>)
140799: replaced pcre.3 with pcre.7 (courtesy Mark Brown
	<broonie@tardis.ed.ac.uk>)
100799: configure.in: fiddled, together with Mark Brown
	<broonie@tardis.ed.ac.uk>, a lot with the autodetection of various
	pcre versions.
090799: Makefile.in: install pcre.3 only if no libpcre is found on the
	system. Suggested by Mark Brown <broonie@tardis.ed.ac.uk>.
070799: Makefile.in: libpcre is now built before compiling of the main
	programs

=============================================================================

History of 1.9.3b6 -- changes since 1.9.3b5:

fetchnews:
=========

280699: getgroup(): case-insensitive recognition of newsgroups did not
	work yet. Now the Newsgroups: header is explicitely converted
	to lower case before storing the files.

libutil:
=======

010799: activutil: writeactive() now converts all existing groups to
	lowercase
300699: activutil: insertgroup() now converts groupname to lowercase
	before inserting it into tree
280699: filterutil: readfilter() would enter BS into the cleartext fields.
	Fixed.

nntpd:
=====

050799: included patch for IPv6 by Mark Brown <broonie@tardis.ed.ac.uk>.

Miscellaneous:
=============

050799: calling ./configure with --with-ipv6 will enable IPv6.
050799: fixed Mark's patch from yesterday.
040799: gcc-specific compiler flags are now only set if gcc was indeed
	detected. Patch by Mark Brown <broonie@tardis.ed.ac.uk>.
010799: If libpcre was already installed by something else, this would not
	be recognized properly. Bug reported by Mark Brown
	<broonie@tardis.ed.ac.uk>.

=============================================================================

History of 1.9.3b5 -- changes since 1.9.3b4:

applyfilter:
===========

270699: files are only stat()ed if they start with a digit
270699: applyfilter now checks at most the first 5000 bytes of an article
	(which should be more than enough to accommodate headers). This
	avoids lots of realloc()s.
270699: program crashed when encountering articles without bodies. Now
	these articles are deleted.

libutil:
=======

270699: activutil: isinteresting(), insertgroup() and findgroup() are now
	case-insensitive
270699: miscutil: new function lowercase() (from 1.10b2)
270699: filterutil: now logs matched expression to LOG_DEBUG
270699: filterutil: now works with pcre instead of the libc regexp. This
	leads to a further speed increase. Suggested by Sven Paulus
	<sven@karlsruhe.org>.

Miscellaneous:
=============

270699: update.sh: now re-sorts the groupinfo file in a case-insensitive
	manner. Must be called when updating from 1.9.2 or smaller.
270699: Makefile.in now created with autoconf-2.13 instead of 2.10.

=============================================================================

History of 1.9.3b4 -- changes since 1.9.3b3:

fetchnews:
=========

260699: getgroup(): doing things with an uninitialized variable (which
	was also unnecessary) could lead to segfaults. Bug discovered
	by Mark Brown <broonie@tardis.ed.ac.uk>.

newsq:
=====

160699: output format changed (code written by Matthias Andree
	<mandree@sx1.HRZ.Uni-Dortmund.DE>)

=============================================================================

History of 1.9.3b3 -- changes since 1.9.3b2:

applyfilter:
===========

240699: now also checks for kept files
230699: now delete message-id links immediately together with others. This
	saves a lot of time.
230699: added "if (debugmode)" in front of various "syslog(LOG_DEBUG,...)"
	statements

fetchnews:
=========

240699: replaced getaline() with tgetaline() where appropriate
220699: inserted an additional fflush(stdout) into main() to avoid
	double logging of messages. Fix provided by Stefan Troeger
	<stefan.troeger@wirtschaft.tu-chemnitz.de>.

libutil:
=======

240699: configutil: username and password are not logged any more in clear
	text to LOG_DEBUG
240699: nntputil: new function tgetaline() which is a wrapper for getaline()
	that honours timeouts. timeout considered is that of the current
	server. (Originally introduced 110499 in 1.10b1)

nntpd:
=====

240699: parser() rewritten. Now the connection is closed after 15 minutes
	of inactivity

Miscellaneous:
=============

230699: Makefile.in: patch by Philippe De Muyter <phdm@macqel.be> to
	compile leafnode in a separate directory
220699: removed all the rpm stuff from configure.in and put it into
	makerpm.sh. This also leads to changes in Makefile.in. However,
	"make rpm" does not work (breaks with "bad user/group").

=============================================================================

History of 1.9.3b2 -- changes since 1.9.3b1:

fetchnews:
=========

210699: openlog() now called with "fetchnews" instead of "fetch"

libutil:
=======

210699: miscutil: rfctime(): fiddled with the timezone. Bug reported by
	Sven Paulus <sven@karlsruhe.org> (rfctime did some odd rounding).

nntpd:
=====

210699: doxhdr(): handles now also "xhdr [header] a-" correctly
210699: removed a debug call from fopenart()

=============================================================================

History of 1.9.3b1 -- changes since 1.9.2:

applyfilter:
===========

150399: for some reason, the config file was read twice (which lead to
	crashes). Fixed.

fetch/fetchnews:
===============

210699: renamed fetch to fetchnews to avoid potential conflicts with
	other programs
100499: getgroup(): fetch would crash with a segmentation fault if all
	headers began with whitespace because of an uninitialized
	variable. Bug report and patch provided by Stephan Block
	<block@enst.fr>.
020499: new function _ignore_answer() (not used yet)
220399: added "if (debugmode)" in front of various "syslog(LOG_DEBUG,...)"
	statements
210399: postarticles(): we had forgotten to remove the putaline() which
	resulted in complete screw-up of articles posted. Fixed.
200399: main(): we always authenticate if we have a username entry for
	the current_server. The reason is that it is not always obvious
	whether you have to authenticate yourself at the remote server
	or not. Problem reported by Mark Lutz <Mark.Lutz@usa.net>.
200399: postarticles(): we don't use putaline any more to post bodies
	because the line length of bodies is not restricted and lines
	> 1023 chars crashed sprintf(). Bug reported by Sven Paulus
	<sven@karlsruhe.org>.
200399: getgroup(): replaced possible / in Message-IDs with @ (like in
	lookup()).
190399: problems with dots at the beginning of lines fixed. Insisted upon
	(rightly!) by Johnny Tevessen <j.tevessen@gmx.net>.
190399: delposted() looks for stale articles in out.going. Patch by
	Joerg Dietrich <uzsv7x@ibm.rhrz.uni-bonn.de>.
170399: getgroup(): reply to HEAD and BODY are now checked only for the
	first two digits to make fetch work with more broken upstream
	servers.
170399: getgroup() crashed when checking for a Lines: header which was
	not present. Fixed. Independently discovered by Juha Pohjalainen
	<jmp@iki.fi> and Jarle Rongved <rongved@online.no>.
160399: nntpactive(): LIST NEWSGROUPS should now work also with faulty replies
	(like the ones produced by INN 1.5.1).
160399: processupstream(): no more logging of getaline()s when reading
	from files in /var/spool/news/leaf.node/
140399: fetch -P would delete lockfiles not produced by it. Fixed.
120399: getgroup(): parsing for maxbytes didn't work. Reported by
	Friedhelm Hinrichs <F.Hinrichs@tu-bs.de>. My fix will still
	fail if XHDR get out of sync, but the other option (to compare
	the whole array every time) is not very elegant either.
120399: age(): included some fixes provided by Friedhelm Hinrichs
	<F.Hinrichs@tu-bs.de>.
090399: output of XHDR is now not logged to LOG_DEBUG anymore.
090399: added a warning message in nntpactive() to indicate to users
	whether they should use "nodesc = 1" in their config files
070399: fixed a bug (reported by Jeff Grossman <jeff@stikman.com>) in
	processupstream(). When "linux.announce" and "comp.os.linux.announce"
	were fetched from the same server, fetch had sometimes problems
	to store the correct last article number for "linux.announce".

libutil:
=======

130499: configutil: raised default timeout to 30 seconds (from 10, which
	would sometimes hit on my local server).
030499: artutil: fixed a bug in fgetheader(): to always get a header, it
	is necessary to rewind the file before doing the search
020499: included lots of tabs instead of spaces into the code of
	activutil.c
210399: xoverutil: no more logging of "wrote .../.overview" to stdout
	because this did confuse so many people (despite it being mentioned
	in the docs)
170399: xoverutil & nntputil: replaced all atoi() with strtol()
170399: configutil: readconfig() now parses the actual value of
	create_all_links. Suggested by Taisuke Yamada <tai@imasy.or.jp>.
170399: configutil: replaced all atoi() with strtol()
160399: xoverutil: moved legalxoverline() to texpire.c and changed a
	parameter. This reduces the size of fetch and nntpd by about 3 kBytes
	and the size of texpire by almost 20 kBytes.
150399: updateactive(): "if ( fopen(...) > 0 )" changed to "if
	( fopen(...) != NULL )". Bug reported and fix provided by
	Johnny Teveen <j.tevessen@gmx.de>.
140399: xoverutil: logging of faulty xoverlines now to LOG_DEBUG instead of
	LOG_INFO.
120399: configutil: maxbytes was ignored if maxlines was not set as well.
	Fixed. Reported by Friedhelm Hinrichs <F.Hinrichs@tu-bs.de>.
070399: miscutil: new functions findinlist() and freelist().
070399: miscutil: removed a potentially confusing error message from
	lockfile_exists() which was introduced for testing purposes in 1.9.1.

nntpd:
=====

120499: doxhdr() failed on XHDR [header] from-to. Reported and patched
        by Steven Flintham <steven@lemma.demon.co.uk>.
120499: dolist() now doesn't call chdir anymore which caused leafnode
	to forget the directory of the current group. Bug reported by
	Steven Flintham <steven@lemma.demon.co.uk> and Thomas J.
	Merritt <tjm@codegen.com>.
160699: dopost(): if posting fails, error is now 441 instead of 440 (as
	it should be). Fixed by Matthias Andree 
	<mandree@sx1.HRZ.Uni-Dortmund.DE>.
090399: fleshed out dohelp(); patch by Ed Carp <erc@pobox.com>.

texpire:
=======

230399: faulty syslog() statement fixed which lead to a segfault
160399: moved legalxoverline() here from xoverutil.c
140399: removed double logging of faulty xoverlines

Miscellaneous:
=============

210699: Makefile.in: changed "chown user.group" to "chown user:group".
	Suggested by many people (I forgot who).
210699: selected the interesting bits from 1.10b2 to put them into 1.9.3.
150699: README: added some more description to the troubleshooting entry
070699: configure.in: RPMSOURCEDIR and some other variables were created
	by grepping the output of "rpm --showrc". With new versions of
	rpm this grep would sometimes yield more than one hit, leading
	to garbled configure scripts. Bug described by Matt Armstrong
	<matt@lickey.com> (lots of other people stumbled upon this, but
	Matt was the only one who managed to investigate it in depth making
	it easy to fix it).
010699: Makefile.in: USRDIR was not created if not present. Bug discovered
	by Rene Wuttke <rene@wuttke.net>.
040499: german manpages by Alexander Reinwarth <a.reinwarth@gmx.de>.
020499: Makefile.in: changed the gids in "install -g gid" from "root" to "0"
	(there is no group called "root" on FreeBSD).
190399: lots of (int) castings changed to (unsigned char). Patch provided
	by Johnny Tevessen <j.tevessen@gmx.net>
180399: german README, courtesy of Alexander Reinwarth <a.reinwarth@gmx.de>
170399: german INSTALL, courtesy of Alexander Stielau <aleks@zedat.fu-berlin.de>

=============================================================================

History of 1.9.2 -- changes since 1.9.1:

Miscellaneous:
=============

030399: leafnode.h: had forgotten to include <sys/types.h> before <regex.h>
	which resulted in compilation errors

=============================================================================

History of 1.9.1 -- changes since 1.9:

fetch:
=====

220299: articles fetched are now also counted correctly if delaybody is
	set. Bug reported and fixed by Rey IJben <rey@linuxrules.xs4all.nl>.
170299: getgroup(): if /var/spool/news/message.id/ subdirectories are
	not present, they are now created as needed. Patch provided by
	Max Matveev <max@melbourne.sgi.com>
170299: processupstream(): error message was done with a zero pointer.
	Bug reported and fixed by Max Matveev <max@melbourne.sgi.com>
	and Stephan Block <block@enst.fr>
140299: postarticles(): haveid was initialized at the wrong place. Bug
	reported by Jeff Grossman <jeff@stikman.com>.
140299: getgroup(): "artlimit" is now tested after "initiallimit" (like
	in leafnode+-2.4). Bug reported by Rey IJben
	<rey@linuxrules.xs4all.nl>.
140299: getgroup(): "initiallimit" is now only applied if the last article
	number of a newsgroup on the local server is 1.
140299: moved the "struct stringlist" declaration to leafnode.h
140299: getgroup(): moved checking from lines back into the general
	checking of headers. XHDR was very slow, especially when logging
	LOG_DEBUG.
140299: main(): using current_server in main loop instead of servers
	(doesn't matter but is easier to understand)
140299: nntpactive() now uses the global variable current_server instead
	of a local variable

libutil:
=======

030399: activutil: fixed a mistake in insertgroup() which had removed all
	the group descriptions
150299: activutil: did some benchmarking
	1) getting 5000 lines from active file and building a new tree with
	   insertgroup() (current algorithm if you use fetch for the very
	   first time or with -f):
	   1 min 10 sec, of these were 61 secs user time; load 88.1%
	2) building tree by using readactive(), then getting 5000 lines from
	   active file on stdin and rebuilding tree with insertgroup():
	   3 sec, of these were 2 secs user time; load 84.7%
	3) getting 5000 lines from active file and concatenating them in
	   memory by using critrealloc() and strcat() (no sorting!):
	   2 min 45 sec, of these were 141 secs user time; load 86.0%
	4) getting 5000 lines from active file and putting them into a
	   stringlist (unsorted):
	   < 1 sec; load 92.0%
	=> insertgroup() must be improved
140299: miscutil: the lockfile mechanism does not always work. Now, if the
	lockfile can be opened but not parsed, 1 is returned. If the lockfile
	cannot be opened errors are written to LOG_ERR (experimental)

nntpd:
=====

160299: managed to build wildcard matching into dolist() and list()
160299: major overhaul of doarticle() because it could be forced to
	segfault reproducibly
160299: fopenpseudoart() partially taken from leafnode+-2.4
160299: error() taken from leafnode+-2.4

texpire:
=======

210299: groupexpire didn't work on globs. Bug reported and fixed by
	Walt Mankowski <waltman@netaxs.com>

Miscellaneous:
=============

230299: new file makerpm.sh which constructs RPMs on the fly. Template
	was originally submitted by Karsten Merker <merker@guug.de> and
	heavily modified.
170299: Makefile.in: $PREFIX_USR now also used for the $LIBDIR
160299: lots of castings in isspace(), isalpha(), isalnum() and isdigit()
	to avoid stupid warnings on Suns
160299: we don't need sys_nerr and sys_errlist anymore because of the
	change in nntpd.c error().
140299: added create_all_links to config.example

=============================================================================

History of 1.9 -- changes since 1.8.1:

applyfilter:
===========

030299: optimized the filtering algorithm; filtering is now at least twice
	as fast (I ran a benchmark with a 146 line filter file:
			query present	query not present
	  old version	  12.8 sec          17.1 sec
	  new version	   5.3 sec	     7.7 sec)
020299: first and last article of a filtered newsgroup should now be
	set correctly
210199: added locking mechanism to applyfilter
190199: added applyfilter(8) to the distribution

fetch:
=====

130299: postarticles(): in some cases, fetch would complain about directory
	names not being posted due to uninitialized variables. Fixed. Bug
	discovered by Jeff Grossman <jeff@stikman.com>.
120299: postarticles() now logs the number of articles posted if fetch
	is called with -v to news.info . Suggested by Jeff Grossman
	<jeff@stikman.com>.
120299: main(): changed the patch of Jeff East somewhat (reply was
	assumed to be filled correctly by nntpreply() which it was not).
110299: main(): authorizing for posting articles improved. Patch by
	Jeff East <an972@freenet.carleton.ca>
090299: postarticles(): for some unknown reason, fgetheader() was able to
	retrieve Message-IDs from . and .. therefore directories are now
	explicitely excluded from posting
090299: getgroup(): the Supersede:s code causes fetch to hang. Fixed this
	by commenting it out with #ifdef NOTYET
090299: main(): authorizing was not done for posting articles. Bug found
	and fixed by Jeff East <an972@freenet.carleton.ca>
080299: postarticles(): improved Supersedes: handling (still nonfunctional).
	For some odd reason, Supersedes: headers were actually looked for
	in the Lines: header.
080299: postarticles(): changed logging of mistakes a bit
070299: nntpactive(): fixed a problem that a LIST ACTIVE was always only
	done for the first server, not for the others. This includes
	writing two new functions, checkactive() and updateactive(),
	which also reduces the number of disk accesses somewhat. Bug
	discovered by Jens-Uwe Rumstich <rumstich@informatik.hu-berlin.de>.
070299: processupstream(): error message added if an "interesting" group
	was not found in the groupinfo file
070299: processupstream(): apparently, there were sometimes problems if
	the server files (/var/spool/news/leaf.node/my.server.name) did
	exist but were empty. Now, empty files are ignored and not read.
060299: age(): now I can also parse written-out weekday names
040299: getgroup(): applied a patch by Arne Wichmann <aw@anhrefn.saar.de>
	which will avoid unsubscribing groups that have little traffic
040299: postarticles(): some text changed
040299: supersede(): removed an unnecessary "syslog( LOG_DEBUG, ... )"
040299: getgroup(): evaluated a stat structure which was not filled
	beforehand. This obviously led to unwanted unsubscriptions.
	I have no idea when this error was introduced. Problem reported
	by Dirk Dettmering <dettmer@pc16154.pharmazie.uni-marburg.de>
	and David Steuber <david@david-steuber.com>.
040299: getgroup(): changed syslog message when skipping groups
030299: getgroup(): fixed a bug which truncated all headers by the
	last char and was introduced yesterday
020299: getgroup(): assembly of multiline headers was faulty. Headers
	were concatenated directly and a linefeed put afterwards. Now,
	linefeeds are put between the two parts (and only if the first
	part exists at all).
010299: if fetch is called with -P, it does not care for the presence
	of the lockfile any more (not necessary)
310199: postarticles(): if an article with the same message id was
	already upstream, error treatment was not always consistent.
	Code changed by Joerg Dietrich <uzsv7x@ibm.rhrz.uni-bonn.de>.
210199: fetch_new.c contains a asynchronously working version of fetch
	which stores articles in /var/spool/news/in.coming/<message-id>
	but does not sort them in yet. This will have to wait until
	the code for rnews is running. fetch_new.c is not part of the
	1.9 distribution.
210199: made TIMEOUT_LONG, TIMEOUT_SHORT and TIMEOUT_ACTIVE configurable
200199: declared current_server here (and not in leafnode.h anymore)
	This reduces the code size of nntpd and texpire by about 20 kBytes
	(including symbols).
200199: replaced a clumsy if... construction in main() with a more
	elegant switch ... case
190199: added code to handle Supersedes: headers
190199: if fork() fails, fetch now tells something about the reason
190199: included a setsid() call in the fork(). This fixes the problem
	that fetch is killed by the end of sudo or the ppd. Problem
	reported by Jo Moskalewski <JoMo@schwaben.de> and Joerg Dietrich
	<uzsv7x@ibm.rhrz.uni-bonn.de>.
180199: newsgroups with . at the beginning are not allowed (RFC1036,
	son-of-rfc1036). Reverted change from 150199.
180199: removed an error condition in getgroup() which resulted from an
	uninitialized variable
180199: removed a looping condition in getgroup() which I had introduced
	yesterday
170199: fetch now checks before posting whether a posting with the same
	message id is already upstream
170199: gave getgroup() a facelift which will make it (hopefully) a little
	faster. Basically, I replaced the clumsy error stuff with a lot of
	continue commands and removed some superfluous if... constructs.
170199: corrected a silly mistake in getgroup() (trying to log an int with
	syslog("%s") led to a segfault)
160199: aborting fetch with Ctrl-C will now skip fetching but xoverfiles
	will be generated
160199: minlines and maxlines are now also checked via XHDR
160199: removed an obsolete fflush() from main
150199: removed an obsolete nntpdisconnect() from main which did not
	exactly speed up fetch
150199: apparently there exist newsgroups which start with a . in the
	name. fetch ignored these so far. Bug reported and fixed by
	A. Olaru <aolaru@datacomm.ch>.
150199: now maxbytes really checks for bytes, not lines
130199: more error checking when storing articles (suggested by Maarten
	Geurts <mgeurts@tip.nl>, who is currently trying to port leafnode
	to NT)
100199: fixed a bug when posting failed (reported by Michael Stroeder,
	<s_stroed@ira.uka.de>).
100199: if -P is given, active file should not been written (but was).
	Fixed.
090199: modified -P option that filters are now not read in that case
	(this helps with some segfaults while posting)
060199: changed some code in nntpactive() to make fetch deal more
	robustly with failing hardware clocks. Problem reported by
	Peter Kronfuss <pkronfuss@ycom.or.at>.
040199: new option -P : only post articles. First suggested (including
	code) by Michael Mauch <elmicha@unidui.uni-duisburg.de>.
040199: age(): now also able to parse dates of the form
	    Date: Sun,  3 Jan 1999 14:35:24 +0100
	instead of
	    Date: Sun, 03 Jan 1999 14:35:24 +0100
030199: postarticles(): articles are now not logged anymore into LOG_DEBUG

libutil:
=======

120299: configutil: stabilized parse_line() against empty lines
120299: configutil & artutil: re-introduced create_all_links (requested by
	Alan Shutko <ats@acm.org>)
110299: xoverutil: if UIO_MAXIOV is not defined, set it to 16 (regardless
	of what it might be called)
110299: miscutil: initvar(), when getting a NULL argument, will now not
	perform setregid() etc. changes. Needed for some instances of
	nntpd, although I would have preferred to see the nntpd also run
	as user news.
110299: miscutil: patched getaline() to work with binary files. Patch by
	Matthias Andree <mandree@dosis.uni-dortmund.de>.
100299: configutil: yesterday's fix completely messed up parsing. Fixed.
090299: configutil: trailing non-alnums were removed (for example, passwords
	could only end with [a-zA-Z0-9]). Bug discovered by Erik Beckers
	<erik.beckers@planet-interkom.de>.
070299: miscutil: new function ngmatch() matches a pattern to a string.
	Was previously in texpire.
060299: xoverutil: Lines: header were mandatory in getxoverline(). Now
	they are not any more. While doing this, I played a bit more
	with the function. Independently found by Mark Hannon
	<mark.hannon@stockholm.mail.telia.com> and <henke@phoenix.net>.
040299: artutil: messed with storearticle() (still unused)
030299: filterutil: readfilter() now does not log filter contents to
	LOG_DEBUG anymore
290199: filterutil: readfilter() now immediately returns if "filterfile"
	is empty. Bug reported by Dirk Dettmering
	<dettmer@pc16154.pharmazie.uni-marburg.de>.
280199: configutil: added configurability for the right part of the
	message ID (hostname)
280199: moved buildpseudoart() from artutil.c to nntpd.c
250199: artutil: fgetheader() allocated not enough memory which could
	lead to segfaults. Bug reported and fixed in 1.8.1 (getheader())
	by Michael Schwendt <schwendt@my-dejanews.com> (was probably
	the reason for the segfaults in 1.8.1).
220199: artutil: added new procedure storearticle() (currently unused)
210199: configutil: added configurability of timeout (per server),
	TIMEOUT_SHORT, TIMEOUT_LONG and READ_INTERVALL (now timeout_short,
	timeout_long and timeout_active). Defaults are as in previous
	versions. The names of the new parameters (except "timeout")
	are compatible with leafnode+-2.4
210199: configutil: made existing features compatible with leafnode+-2.4
210199: moved lockfile_exists() from fetch.c to miscutil.c because it
	is also needed in texpire and applyfilter
200199: moved putaline() from miscutil.c back to nntputil.c
180199: activutil: readactive() now checks whether groupinfo is a file
170199: artutil: store() now always writes Xref: lines
170199: moved putaline() from nntputil.c to miscutil.c
170199: nntputil: improved DEBUG logging in authenticate()
160199: artutil: replaced getheaders() with getheader() and fgetheader()
150199: miscutil: new function initvar() which initializes some global
	variables
150199: miscutil: minor fix in getaline() with respect to debugging
150199: nntputil: minor fix in putaline() with respect to debugging
150199: filterutil(): readfilter() now ignores empty lines and lines starting
	with # (to allow for comments). Suggested by A. Olaru
	<aolaru@datacomm.ch>
150199: filterutil: filter was not initialized properly. Fixed.
150199: xoverutil: getxover() would produce strange xfirst and xlast
	numbers if a directory was empty. Now, xfirst and xlast are
	set to 1.
150199: xoverutil: getxover(), when called from nntpd, would delete
	"illegal articles" (whatever that was) which sometimes lead to the
	destruction of whole directories in the spool. Now "illegal articles"
	are just ignored. Reported by Joerg Dietrich
	<uzsv7x@ibm.rhrz.uni-bonn.de> and possibly Evert Meulie
	<evert@royal.net>.
150199: artutil: getheaders() would always insert an additional linebreak
	before "other headers". Fixed.
100199: activutil: if newsgroup description is updated and new description
	is '-x-' or 'local grp', it is ignored.
100199: removed doubly defined variables s (was in miscutil and configutil),
	headers (in miscutil and artutil) and expire_base (configutil and
	texpire). Reported by John R. Schrader <jrschrader@mainz-online.de>.
090199: filterutil: fiddled with readfilter() because the filterlist
	could be the cause for certain segfaults
050199: artutil: getheaders() would segfault at times. Fixed (hopefully).
	Bug reported by Vladimir Litovka <doka@root.webest.com> and others.
030199: artutil: getheaders() always assumed that the file in question
	indeed contained headers. Now it tests whether this assumption
	is correct. Reported and fixed by Matthias Andree
	<mandree@dosis.uni-dortmund.de>

nntpd:
=====

110299: main() now calls initvar() with a NULL argument
050299: parser(): miscellaneous changes to speed it up a bit. Command line
	length is now generally restricted to 1000 chars. Commands are
	not converted to lowercase anymore since comparison is done
	with strcasecmp() anyway. If buffer overflow is tried, leafnode
	now responds with 500 instead of 400 and continues to work (of
	course this opens the door to DoS attacks)
020299: parser(): quit does not call rereadactive()
020299: parser(): some logging added
280199: generateMessageID(): made right part of message ID configurable
280199: moved buildpseudoart() from artutil.c to nntpd.c
280199: rewrote fopenart() because it did not always open pseudo articles
	when it was supposed to
280199: removed printf to nntpout (actually removed earlier, but not
	logged in here)
210199: rereadactive() is now called for every command. This might slow
	down the performance a tiny bit but ensures that active is always
	kept recent.
180199: tried to minimize the calls to getxover()
170199: LIST EXTENSIONS now lists OVER and LISTGROUP.
170199: OVER command supported (supposed to replace XOVER).
170199: dolistgroup() now returns 411 if group is unknown.
170199: if a LIST command cannot be parsed properly, dolist() now returns
	503 instead of 501.
170199: removed "if ( g->last > g->first )" condition in list() which
	cannot occur anymore
170199: STAT <message-id> now returns article numbers where appropriate
	(same goes for HEAD, BODY and ARTICLE)
170199: implemented LAST and NEXT more correctly
150199: removed dostat() again and fiddled a lot with doarticle() instead.
	doarticle() now also returns Message-IDs, as requested by RFC977
	(apparently needed for using GNUs).
150199: in doxhdr() and doxover(), made sure that there was a change
	to a group directory before getxover() was called. This involved
	some more drastical changes in doxover().
130199: made NEWNEWS compliant with the new standard (can now parse both
	two- and four-digit years)
120199: XOVER may now also return 420 if article range is out of real
	range
120199: fiddled a bit with doarticle()
120199: introduced dostat() to correctly answer STAT requests (needed for
	pine). STAT <message-id> does not work yet, however. Bug reported
	by Evert Meulie <evert@royal.net>.
100199: markinterest(): if...else construction was ambiguous. Fixed.
	Reported by John R. Schrader <jrschrader@mainz-online.de>.
040199: fopenart(): opening an article with a non-existant message id
	would lead to a crash because it was tried to open a pseudo
	article when no group was selected. Fixed.
040199: doarticle(): it was not possible to get articles by Message-ID.
	Fixed. Bug reported by Matthias Andree <mandree@dosis.uni-dortmund.de>

texpire:
=======

070299: some more changes by Kazushi (changed ints into unsigned longs, and
	other stuff)
070299: wildcard matching moved to miscutil.c
220199: groupexpire now understands glob(1) wildcard patterns
210199: added locking mechanism to texpire
190199: merged code with leafnode+-2.4
190199: texpire now also checks /var/spool/news/message.id/000/
100199: expiremsgid(): if...else construction was ambiguous. Fixed.
	Reported by John R. Schrader <jrschrader@mainz-online.de>.
100199: removed doubly defined variables expire_base (configutil and
	texpire). Reported by John R. Schrader <jrschrader@mainz-online.de>.

Miscellaneous:
=============

130299: README: troubleshooting section expanded
110299: Makefile.in: install-sh must be mode 755 in the tar.gz file. Fixed.
110299: Makefile.in: install flag -s now coded as $(STRIP). Suggested by
	Matthias Andree <mandree@dosis.uni-dortmund.de>
100299: messed around with configure.in because it sometimes would not
	define the HAVE_SYS_NERR even if it was present. Now we define
	it explicitely.
070299: configure.in & Makefile.in: some adjustments to create rpm's.
	(Variables are written into the Makefile, but are not usable yet.)
070299: configure.in: with some installations, sys_nerr is defined in
	stdio.h. Therefore, we now also check stdio.h for sys_nerr.
	Reported by Jeff Grossman <jeff@stikman.com>.
070299: Makefile.in: set $USR_PREFIX to @prefix@ instead of /usr/local .
	This makes it possible to call "configure" with "--prefix=/usr"
	to relocate the leafnode binaries to /usr/sbin and /usr/bin.
070299: added ngmatch() to leafnode.h
030299: fixed an error in texpire.8
020299: Makefile.in: "make clean" now keeps config.h and Makefile; to remove
	them as well, do "make realclean".
020299: Makefile.in: had forgotten newsq in "make all"
310199: removed a "#define HAVE_SYS_NERR" from leafnode.h which previously
	seemed necessary to correctly build leafnode on my system but
	generated lots of warnings on other systems
280199: rewrote newsq in C
270199: made some corrections to Makefile.in so that "make install" will
	compile cleanly (reported by Juergen Vollmer <vollmer@cocolab.de>)
210199: removed scarce_links from leafnode.h
210199: configure.in: added a test for the existence of sys_nerr and removed
	"#ifdef __hpux__" and "#ifdef sun"
200199: added "#ifdef __hpux__" to leafnode.h
190199: moved to compiling with autoconf, changed INSTALL accordingly
150199: fiddled a bit with the documentation
150199: removed blocked() declaration functions from leafnode.h
140199: nice copyright remark in checkgroups.c (was missing)
130199: changed the maxage in the config.example file to 10 (the default).
	Suggested by Maarten Geurts <mgeurts@tip.nl>.
090199: install now called with -c for better BSD compatibility (without
	-c, BSD install removes the original files)
090199: newsq now installed with mode 755 instead of 750 (suggested by
	Joerg Dietrich <uzsv7x@ibm.rhrz.uni-bonn.de>)
050199: changed Makefile to work with plan /bin/sh instead of bash (by
	Andy Doran <andy@psn.ie>)
050199: leafnode.h: added patch for FreeBSD, courtesy of Andy Doran
	<andy@psn.ie>
050199: fiddled a bit with the Makefile to avoid putting test code in the
	final archive when doing a "make dist"
040199: removed two files with test source which inadvertantly popped up
	in 1.8.1
040199: changed some more things in README.
040199: removed the warning about changing upstream servers from leafnode.8
	and added a paragraph on it in the README.
040199: reintroduced the creation of libutil.a from the Makefile. This
	makes the resulting executables much smaller (except fetch) and
	less memory-hungry. "ar" is called as $(AR) and "ranlib" is called
	explicitely since $(RANLIB) does not work on my system and
	$(AR) -s does not work on NetBSD. In the future, it might be
	necessary to switch to automake/autoconf.

=============================================================================

History of 1.8.1 -- changes since 1.8:

libutil:
=======

211298: activutil: if the first article of a newsgroup is 0, it is set to 1.
	The last article is set to 1 if it is smaller than the first one.
	This will fix problems with Netscape which barfs if encountering
	zero article numbers. Reported by Peter Katzmann
	<peter@katzmann.fd.shuttle.de>.
211298: filterutil: forgot to #include <syslog.h>. Fixed.
191298: filterutil: glibc2-based distributions (RedHat 5.2, Debian 2.0)
	demand that <sys/types.h> be included before <regex.h>. Bug reported
	and fixed by Trever Adams <highlander@teleteam.net>.

checkgroups:
===========

211298: removed an unnecessary #include <syslog.h>

fetch:
=====

020199: fetch could crash if an "article x already stored" message was logged.
	The reason was that an old or uninitialized filehandle was being
	checked. Bug reported and fixed by Joe Hutchinson
	<joeh@netspace.net.au>
020199: age() did not calculate proper ages when the year was changing.
	Fixed. (Bug was already present in 1.4 and had been reported for
	1.8 by Jose Rosales <jrosales@tdv.net> and Stefan Luetkebrune
	<s.luetkebrune@ndh.net>)
211298: fixed a typo in main()

nntpd:
=====

231298: some changes in doxhdr()
231298: some changes in dolistgroup() to deal properly with empty
	newsgroups
211298: changed doxover() and doxhdr() to account for empty directories
211298: removed lots of unnecessary "\r\n" from syslogs
191298: if access time change of files in interesting.groups failed,
	error message was garbled (reported by Harald Kretzschmar
	<hk@thuer.slf.uunet.de>). Fixed.

Miscellaneous:
=============

020199: added a patch for NetBSD to leafnode.h (provided by Anders Dinsen,
	<dinsen@danbbs.dk>)

=============================================================================
 
History of 1.8 -- changes since 1.7.1:

libutil:
=======

131298: filterutil: filtering seems to work now, but it is fairly slow. I
	wrote a little program to remove all the spam from alt.religion.
	scientology.
131298: activutil: in readactive(), the last article is now set to at least
	1 (was 0). Age is set to 0 (was 1).
131298: activutil: added isinteresting() from fetch.c
131298: artutil: new file. Received buildpseudoart() from miscutil,
	store() from fetch.c and new function getheaders().
131298: "create_all_links = no" is now the default and cannot be switched
	off. As mentioned by Arnt Gulbrandsen, this invites problems if new
	newsgroups are subscribed to because the Xref: lines are not
	properly modified. We'll look into this later :-)
131298: activutil: messed around with insertgroup() to remove segfaults
	(apparently successfully).
121298: removed declaration of errno and h_errno from various files
121298: filterutil: new (at the moment empty)
101298: miscutil: chdirgroup() now returns 1 if successful, 0 if not.

fetch:
=====

171298: crosspostlimit was not honoured anymore (in getgroup()). Fixed.
141298: removed some logging from getgroup()
141298: intelligently enough, I made a bug when building in filtering
	support which would result in only the last header being filtered
	on. Fixed.
131298: replaced all occurences of snprintf() with sprintf() to make
	leafnode compile on OSF1
131298: managed to build filtering support into fetch
131298: postarticles() does not close connections any more.
131298: fetch now only posts an article to a server if the server has this
	group. Many servers kill a connection if they get a posting which
	they cannot process.
131298: moved store() to artutil.c and isinteresting() to activutil.c
121298: fetch would run into problems when a newsgroup name was completely
	contained in another newsgroup name *and* the order in the
	/var/spool/news/leaf.node/server.name file was such that the
	longer name came first. Bug reported and tracked down by
	Kent B. Hansen <kent.hansen@bigfoot.com>. Fixed (hopefully).

nntpd:
=====

141298: dopost() would delete empty lines from postings (apparently
	introduced yesterday). Fixed.
131298: replaced all occurences of snprintf() with sprintf() to make
	leafnode compile on OSF1
131298: first attempt to implement local groups failed because getxover()
	would remove the articles which were constructed
121298: markinterest(): open() with APPEND flag would not change the mtime,
	therefore we now change the mtime by calling utime() and only
	call fopen() when utime fails with ENOENT (problems were reported
	by various people, among them Trever Adams <highlander@teleteam.net>)
121298: rewrote doxhdr(); deals now properly with new newsgroups
121298: rewrote dolistgroup()
101298: introduced a new global variable "pseudogroup" which is TRUE if
	the current newsgroup is a newly created one (i.e. without
	spool directory and .overview file), FALSE otherwise. This variable
	is set by dogroup() and dolistgroup().
101298: in dogroup() and dolistgroup(), whether a group is "pseudo" is now
	determined by checking whether its directory exists or not.

texpire:
=======

121298: added a "\n" to one log message (reported and fixed by Michael
	Schwendt, <sidplay@geocities.com>)

misc:
====

171298: fixed a typo in INSTALL (discovered by Michael Dreher,
	<micha@planet-interkom.de>)
141298: added some rudimentary documentation about the filtering to
	INSTALL
131298: Makefile: added libs for Suns
131298: leafnode.h: messed around to compile leafnode on Suns and HP-UX
121298: leafnode.h: #include <time.h> (for time_t)
121298: removed the creation of libutil.a from the Makefile. The various
	object files are now individually linked together. This avoids
	calling "ar" and possibly "ranlib" which may be not installed on
	other systems. Suggested by Anders Dinsen <dinsen@danbbs.dk>
	who compiled leafnode-1.7.1 on NetBSD 1.3.2

=============================================================================

History of 1.7.1 -- changes since 1.7:

libutil:
=======

091298: configutil: fixed a bug in readconfig() which crippled the "nodesc"
	option. The format of "nodesc" is now different: it is put on a
	separate line.
081298: activutil: replaced the for{} loop for removal of spurious '\0'
	bytes with calls to memchr(). This makes the operation at least
	twice as fast if the groupinfo file is not corrupted. If the
	groupinfo file is corrupted, the operation becomes rather slow,
	however (which is maybe not too bad since it makes users notice :-).

misc:
====

091298: fixed "nodesc" description in leafnode.8 and config.example
081298: some changes to the README file

=============================================================================

History of 1.7 -- changes since 1.6.2:

libutil:
=======

031298: configutil: included some code for parsing "nodesc" parameters with
	servers
031298: configutil: removed code for postserver; we don't need it anymore
221198: configutil: posting would not work anymore. Fixed.
211198: configutil: messed up and repaired parse_line()
211198: xoverutil: removed a superfluous "#include <setjmp.h>"
211198: deleted sfgets() from nntputil
211198: moved getaline() from nntputil to miscutil
211198: configutil: now every server can have its own port, username and
	password (suggested by Joey Hess <joey@kitenet.net>)
211198: miscutil: chdirgroup() did always create new directories (annoying
	when using Netscape). Fixed.
201198: configutil: some changes with regard to starting of debugging
201198: configutil: new parameter maxbytes. Instead of actually determining
	how many bytes a message has, maxbytes calculates the maximal number
	of lines such a message might have and works then with maxlines.
	This reduces NNTP traffic but might be deleterious for program listings
	and similar stuff.
191198: configutil: new parameter minlines
181198: activutil: readactive(): stuff is now not free()d anymore at the
	beginning of the procedure (caused segfaults)
131198: configutil: debugmode > 1 now makes all programs produce corefiles
131198: activutil: blocked stuff from leafnode-1.5 removed
131198: activutil: readactive(): stuff no more static
131198: activutil: readactive(): active is now always cleared
091198: activutil: complete rewrite of readactive() since it would still
	segfault at times.
061198: nntputil: new function nntpdisconnect() which makes all the proper
	tests and then disconnects an NNTP connection.
311098: xoverutil: getxover() returns now 0 when directory is empty
301098: configutil: new parameter "debugmode". If set, the programs will
	continue to generate lots of output to the news.debug syslog
	facility. Otherwise, they won't.

fetch:
=====

051298: if a new server is added in the config file, fetch now gets the
	full list of newsgroups the first time.
041298: articles are now posted to all upstream servers that allow posting.
	To achieve this, the filenames of successfully posted articles are
	put into a list and all entries in this list are deleted later with
	the new function delposted(). This is probably not bug-free at all
	yet.
031298: code for postservers removed: fetch now realizes whether a server
	allows posting or not and only in the former case will try to post
	articles
031298: code for servers which don't support XGTITLE or LIST NEWSGROUPS
	is now partially configurable: option should be
	server = your.server.host nodesc
221198: lockfile_exists() introduced: makes all proper tests and removes
	stuff from the main file. Suggested by Bjrn Frantzen <bjoff@bgnett.no>
211198: getgroup(): fixed an instance of sloppy programming (introduced by
	myself in 1.6.2) that lead to a bug when I rewrote the code for parsing
	the config file
211198: getgroup(): fixed a bug when article was already present (error
	message "unable to store article: "). It is unclear at the moment
	what causes articles to be fetched twice. It is also unclear what
	"Invalid argument" means when returned by stat().
201198: getgroup(): fixed a bug in the code which would result in odd
	behaviour of fetch if verbosity was off and a group contained
	no new articles
201198: getgroup(): for some odd reason fetch forgot to automatically
	unsubscribe newsgroups (this bug was introduced in 1.6). Fixed.
191198: added parameter "minlines" because of spamming with empty articles
	of alt.religion.scientology
181198: corrected a small error when calculating initial limits (reported
	by Diana Schirmer <diana.schirmer@t-online.de>)
171198: some authentication code put into main(), courtesy of Jeff East
	<an972@freenet.carleton.ca>
101198: new code for upstream servers which neither support XGTITLE nor
	LIST NEWSGROUPS properly (see detailed explanation under misc).
091198: fixed problems with delayed body fetching and multiple servers
	(reported by Holger Graf <Holger.Graf@gmx.net>).
061198: removed double call of usage() from main()
061198: included -f option in usage()
061198: fetch would sometimes not disconnect properly. Bug and fix reported
	by Peter Hirdina <Peter.Hirdina@gmx.net> and Juergen Richter
	<richter@wohnheim.uni-ulm.de>.
061198: fixed a typo in age()
061198: fetch now logs its version number to news.debug
301098: added debugmode thingy
281098: removed a possible cause of segfaults if /var/spool/news/active.read
	did not exist (in nntpactive()).
251098: fetch would ignore lines beginning with a dot. Fixed. Reported
	by Michael Guertler <guertler@cs.bonn.edu>.
221098: fetch crashed if the permissions of /var/lock/news were messed up
	(which they should never have been, but apparently some people
	messed around with permissions). Now fetch terminates with proper
	error message. Reported by Peter Hirdina <Peter.Hirdina@gmx.net>.

nntpd:
=====

211198: pseudo articles now do not refer to http://www.troll.no/ anymore.
211198: removed superfluous declaration of fqdn[64]
101198: removed creation of dotfiles in dolistgroup()
091198: when a client would use LIST OVERVIEW.FMT after GROUP, XOVER would
	not work properly anymore. Reported and fixed by Michael Schwendt
	<sidplay@geocities.com>. (This bugfix makes the news client of
	StarOffice work properly.)
061198: markinterest(): interesting.groups/news.groups.name is now opened
	with O_APPEND instead of O_TRUNC. (Opening the file with O_TRUNC
	would delete previously marked articles when using the "delaybody"
	option.) Bug report and fix provided by Holger Graf
	<grafh@t-online.de>.
311098: for some reason nntpd would not log incoming commands anymore
	if debugmode was on. Fixed.
301098: added debugmode thingy

texpire:
=======

211198: total deletes are now also logged to news.info
201198: messed around with the expiry algorithm
061198: added logging of version number to news.debug
061198: added a usage message
061198: added -f option (don't check atimes of files, important when
	you grep through a spool directory or otherwise read files in
	the spool directory manually)
301098: added debugmode thingy

checkgroups:
===========

301098: more informative error message if checkgroups file could not
	be opened

misc:
====

031298: documentation for "nodesc" added
031298: Makefile: #define HAVE_XGTITLE removed (now configurable)
211198: gave up the project to give each function its own file since size
	reduction is at most 10 kBytes after stripping (before stripping
	there is even size increase):
		"old"			"new"
		20464  checkgroups*	14640
		51824  fetch*		46976
		48560  nntpd*		44088
		33800  texpire*		23368
211198: updated leafnode.8 and config.example (which did not include
	an example of a supplementary server either)
201198: updated leafnode.8 to include "minlines" and "maxbytes"
101198: updated README
101198: Makefile: new #define HAVE_XGTITLE (by default switched on) must
	be switched off if upstream newsserver supports neither "XGTITLE
	news.group.name" nor "LIST NEWSGROUPS news.group.name" (reported
	by Richard Poole <rp202@rp202.demon.co.uk>)
091198: fixed a typo in newsq.1 (reported by Lenz Grimmer <grimmer@suse.de>)
091198: changed Makefile: newsq is now also installed (in /usr/local/bin)
091198: updated TODO file
091198: added CREDITS file
061198: added documentation for -f to texpire.8
061198: added documentation for debugmode to leafnode.8

=============================================================================

History of 1.6.2 -- changes since 1.6.1:

libutil:
=======

181098: activutil.c:fakeactive(): when the directory could not be opened,
	the name should appear in the logfile which it did not. Bug report
	and fix provided by Peter Mutsaers (plm@xs4all.nl).

fetch.c:
=======

201098: fetch now writes its PID into the lockfile. Suggestion by
	Joey Hess <joey@kitenet.net>.
181098: fetch would not delete its lockfile when unable to read its config
	file or unable to find an upstream server therein. Bug reported by
	PhiR  <Gerlach@mygale.org>.
181098: processupstream(): fetch segfaulted when trying to read from a new
	server. Bug reports and fixes provided by Edgar Toernig (froese@gmx.de)
	and kise@imicom.or.jp.

nntpd.c:
=======

131098: apparently I missed a slash when inserting Joerg Dietrich's
	patch in rereadactive() -- fixed

texpire.c:
=========

201098: when expiring a group, texpire now also resets the numbers of the
	first and last articles; not doing this would lead to problems
	with initialfetch which was ignored in these cases (reported by
	Benjamin Schweizer <SternSZ@gmx.de>)

Miscellaneous:
=============

181098: "make dist" does not fail anymore if the directory already exists in
	which the distribution is built
181098: corrected a bug in the Makefile which would try to link leafnode
	with libutil.a's installed elsewhere in a libdir (reported by
	Daniel Fraga <chapolin@inc101.internetcom.com.br>)
131098: changed version number to 1.6.2
131098: some changes in the Makefile (suggested by Michael Mayer
	<mmayer@muenster.de>)

=============================================================================

History of 1.6.1 -- changes since 1.6:

fetch.c:
=======

091098: fixed a bug in getgroup(): in concert with "maxlines" being set
	to a value, fetch would report every article being too long (but
	properly reject only those which really were). Now fetch only
	complains about articles which are indeed too long. (Bug reported
	by Hannes Birnbacher <ad-soft@t-online.de>)

nntpd.c:
=======

091098: removed creation of dotfiles in dogroup()
091098: fixed a bug in doarticle() which made it impossible to display
	a pseudo-article of a new newsgroup.
091098: fixed a bug in dolistgroup() which made it impossible to display
	a pseudo-article of a new newsgroup.
091098: fixed a bug in dogroup() which made it impossible to select a
	new newsgroup or to display its pseudo-article (I have no idea
	when I introduced this...).
091098: fixed a bug in rereadactive() (leafnode tried to open 
	/usr/lib/leafnode/groupinfo instead of
	/var/spool/news/leaf.node/groupinfo) (bug report and fix by Joerg
	Dietrich, uzsv7x@ibm.rhrz.uni-bonn.de).

Miscellaneous:
=============

101098: changed version number to 1.6.1
091098: added "maxlines" to config.example
091098: changed the Makefile somewhat to allow for various CHANGES files

=============================================================================

History of 1.6 -- changes since 1.4:

util.c:
======

230998: activutil: new procedure fakeactive() produces essential active
	information from scratch (does not rely on either groupinfo or
	.overview files). fakeactive() is called from fetch when used
	with the -f parameter.
210998: activutil: readactive() hopefully now will detect a defective
	(i.e. truncated) groupinfo file, abort cleanly and give an error
	message. Previously readactive() just crashed, leading to
	segmentation faults in fetch and nntpd.
210998: activutil: helpwriteactive() hopefully now recognizes if writing
	fails (for example because of a full disk)
230898: configutil: initialized expire_base (if not, texpire crashes with
	segfault). Bug detected & fixed by Timo Giesselmann <gmann@on-line.de>
200898: xoverutil: removed an unnecessary call to legalxoverline()
	from getxover() (which was not used anyway)
200898: xoverutil: getxoverline() accepts messages without bodies
	(important for "delaybody" option). However, in this case
	bogus Byte: entries will be created in the .overview file
200898: xoverutil: getxoverline() now believes in upstream Lines: headers
	(but still computes its own if not provided)
200898: xoverutil: fixed legalxoverline() which by default returned 1
190898: activutil: made code of writeactive() more foolproof (hopefully)
190898: xoverutil: empty articles are not deleted anymore if delaybody != 0
190898: configutil: delaybody generated an incorrected logfile entry
160898: xoverutil: switched off debugging in getxoverline()
030898: activutil: readactive() rewritten to make modified format possible
	without re-reading active file from upstream servers
030898: activutil: writeactive() rewritten to accomodate the date
030898: activutil: insertgroup() does not take information from upstream
	servers anymore
030898: configutil: first server to suck news from is also used as post server
030898: configutil: added some support for multiple post servers
030898: configutil: primary server and supplementary servers are now
	equivalent.
030898: configutil: servers are now queried front-to-back
030898: split up util.c into several files, to achieve smaller executables.
	Changes in these executables will still be subsumed under util.c
	for the time being
020898: fixed a bug when writing the groupinfo file
200798: "crosspostlimit" now "int" instead of "unsigned int"
200798: fixed a bug when writing the groupinfo file
170798: some changes to create proper XOVER information when reading new
	groups. tin pre-1.4 release 980514 used to hang when starting to
	read new groups. This is now fixed; however, tin now doesn't see
	the "default" article... :-(
170798: introduced new global variable "debug" to keep the logfile somewhat
	smaller
070798: added parameter create_all_links
200698: fixed a bug introduced on 180698 which corrupted the groupinfo file
180698: if groupinfo file cannot be written, old groupinfo file is not
	deleted any more
270598: implemented the changes of leafnode-1.5(enz)
120598: enhanced debugging capabilities drastically (you can now listen
	to leafnode talking :-)
060598: added "maxage" parameter to /usr/lib/leafnode/config
020598: added "post" parameter to /usr/lib/leafnode/config which allows
	posting through an additional server (or maybe I should go through
	replay.com?)
020598: changed readconfig() to accommodate groupexpire options (Arnt
	will kill me for this :-)
010598: even more massive changes in readconfig which works now even better
	(I discovered strtok() and strsep())
300498: more changes in readconfig which does now not work any more :-(
270498: more massive changes in readconfig which now works :-)
190298: changes in readconfig

fetch.c:
=======

230998: "fetch -f" now calls fakeactive() and does not attempt to read
	the active file any more
230998: replaced two occurances of isalpha() with isalnum() to allow
	for top-level hierarchies which start with digits
230998: nntpactive(): when getting new groups, now first LIST ACTIVE
	and then LIST NEWSGROUPS is issued (LIST NEWSGROUPS alone does
	only return groups which have a description which results in an
	incomplete groupinfo file)
210998: lockfile mechanism didn't work anymore because I took Stevens too
	literally. Now the lockfile is only deleted when fetch ends.
	Disadvantage: if fetch crashes, the lockfile is not removed at all.
070998: nntpactive(): LIST NEWSGROUPS [news.group] was not properly
	terminated which apparently caused errors in entering new
	files (reported by Tobias Burnus <tobias.burnus@uumail.de>)
310898: getgroup(): .overview files are not removed by fetch anymore
310898: nntpactive(): active.read was not created if not already there
	(reported by Tobias Burnus <tobias.burnus@uumail.de>)
210898: getbody(): new bodies now get new article numbers, old ones are
	removed, xover line is changed appropriately
210898: getgroup(): omitted an error condition in yesterday's fixing attempt
200898: getgroup(): article files were not closed when "delaybody" was
	set which resulted in the duplication of headers
160898: fetch now logs Subject:s of discarded articles
140898: fixxover() reintroduced because the call of texpire did not work
	correctly (note that the removal of fixxover() is not indicated
	below but probably occured on 050898)
050898: added parameter "maxlines" to avoid very large articles
050898: nntpactive() is now called for every server on the list which makes
	it possible to read groups which are only held by certain servers
050898: nntpactive() now reads newsgroups descriptions with NEWGROUPS
	except for very large intervals. LIST ACTIVE is completely omitted
	and newsgroups counted from 1 instead.
050898: readactive() and writeactive() were not called anymore; re-inserted
030898: supplementary servers and primary server are now handled by the
	same procedure (which makes sense and saves space)
220798: fixed a bug which would corrupt multiple-line headers
220798: no more IHAVE since it doesn't work on most servers anyway
220798: modified getgroup() to accommodate multiline headers
210798: fixed a bug in getgroup(): fetch would try to get nonexistent
	articles because optimization was not correctly accounted for
210798: fixed a bug when processing supplements: fetch would write the
	groupinfo file (although unnecessary), thus causing a lot of
	unnecessary traffic
200798: lockfile is now actually created (this got lost somehow during
	messing with the code)
200798: turned off logging for forked process
200798: fixed a bug in handling of "crosspostlimits" (groups were not
	counted correctly)
200798: fixed a bug: news articles were retrieved even when the group
	was being skipped in the future
180798: added support for maximal number of crosspostings
170798: error messages mentioned in 070798 removed by rewrite of
	getgroup()
170798: major rewrite of getgroup(): fetch now fetches HEAD and BODY of
	each article separately and performs some kind of checks
170798: implemented some of the changes of leafnode 1.5(enz) (untested)
070798: added parameter create_all_links (if set to "no" only hardlinks
	into "interesting" groups are created). This works apparently,
	although /var/log/news.messages contains a lot of error messages:
	fetch[31989]: Error No such file or directory when opening (null)
	These occur between fetching the header and the rest of the
	article. They also occur when an article is not crossposted.
250698: added a possibly important error message when an article cannot be
	written into the news spool
150698: now using READ_INTERVALL for rereading of active file instead
	of TIMEOUT_LONG (makes more sense)
120598: added some system to the number of "v"s:
	"fetch": barfs if critical errors occur
	"fetch -v": barfs if non-critical errors occur
	"fetch -vv": puts out additional information about groups
	"fetch -vvv": puts out additional information about articles
	"fetch -vvvv": for debugging purposes
120598: first semi-successful query of supplementary servers
060598: added "maxage" parameter (aging function already provided by
	leafnode 1.4 but not used)
020598: some support for posting to one additional server
020598: some more ints changed to longs
010598: some changes in handling of supplementary servers (still broken).
010598: usesupplement is now a global variable.
270498: "47 bug" removed (fetch did never report more than 47 outstanding
	articles, even when there were hundreds)
270498: changed some definitions of article numbers from int to long (there
	may well be more than 32767 articles in a group)
190298: lockfile is created later now (I don't know if this is really
	a clever idea)
310198: some changes in fetching group descriptions
310198: some things logged to syslog instead of writing them to the screen
220198: some more error messages logged instead of printed to console
220198: option -n implemented (no automatical expiry of groups: very
	sensible for holidays or one-person servers :-)
220198: improved (?) some "verbose" messages
220198: "usesupplement" set to 1 in main()

nntpd.c:
=======

210898: messed with fopenpseudoart() (twice)
200898: pseudo articles now properly displayed in tin
200898: dolistgroup() now returns proper output for pseudo articles
200898: doxover() now returns proper overview line for pseudo articles
200898: changed some logging in nntpd
060898: changed some logging in nntpd
050898: implemented NEWGROUPS (time zone information is ignored)
180798: implemented some of the changes of leafnode 1.5(enz) (untested)
170798: improved logging in general :-)
170798: improved logging in doarticle()
170798: improved logging in dogroup()
170798: improved logging in dolistgroup()
170798: LISTGROUP without group now returns 412 instead of 481.
170798: LISTGROUP of an empty group now returns an empty list instead of
	"481 Overview information not available". This fixes the problem
	that tin hangs with empty newsgroups.
170798: NEXT/LAST now return correct return codes if the latest/oldest
	article has been reached
170798: XOVER now also works properly with new newsgroups
010598: LIST OVERVIEW.FMT implemented
220198: useless "dostat" declaration removed

texpire.c:
=========

310898: dogroup(): remove .overview if group becomes emptied
200898: removed legal() (replaced by legalxoverline() from xoverutil.c)
020598: fixed a small bug in expiremsgid()
020598: groupexpire implemented
020598: -v option implemented
020598: verbose logging

Miscellaneous:
=============

280998: Arnt Gulbrandsen will not maintain leafnode anymore.
280998: update of README
230998: update of README
210998: more changes in the manpages for checkgroups
200998: update of README
060998: slight updates in checkgroups and its manpage
010998: "make update" correctly documented (in INSTALL and README)
010998: "make update" now works correctly (calls update.sh with parameters)
310898: fixed a small error in the Makefile (reported by Tom Schlangen,
	<t.schlangen@ndh.net>)
230898: "update" included into Makefile (doesn't work correctly yet)
230898: "uninstall" included into Makefile
230898: Makefile modified
160898: Makefile modified
160898: improved update script: groupinfo now converted and new file for
	main server generated
060898: added update script
060898: slight bug in Makefile fixed
050898: added documentation for "maxlines"
050898: improved (?) the documentation a little
050898: removed the HOWTO from the Makefile since it is outdated with
	respect to 1.6
050898: removed the server field from the struct newsgroup
050898: fixed a small bug in the Makefile: the lockfile directory that was
	created was wrong
030898: groupinfo and the various server files are now kept in
	/var/spool/news/leaf.node/<filename>. Makefile and INSTALL have been
	changed appropriately
030898: added support for split of util.c in Makefile
220798: added documentation for "maxcrosspost"
200798: lockfile now in /var/lock/news to be compatible to old versions
170798: "delaybody" documented
170798: Makefile now zips the patch up
270598: changed config.example to incorporate the new options of
	leafnode-1.5(enz)
270598: changed Makefile according to leafnode-1.5(enz); omitted
	rules for install-bin and update, however.
270598: added patches from leafnode-1.5(enz) to leafnode.h
270598: added newsq.1 from leafnode-1.5(enz)
270598: fixed a bug in the Makefile
020598: changed config.example
020598: lots of ints changed to unsigned longs
020598: leafnode.8 updated
020598: texpire.8 updated
010598: fixed bug in config.example (maxfetch was designated "maxcount")
300498: removed rfc977 and rfc1036 from the package
300498: added leafnode mini-HOWTO
300498: global rewrite of leafnode.8 (also posted to
	de.comp.os.linux.networking)
250498: Makefile: replaced "cp" and "chmod" calls with "install"
	(suggested by Axel Eble <aeble@controlware.de>)
140298: added rfc977 and rfc1036 to the package
220198: Makefile: added "patch" ("make patch" will generate a patch)
220198: Makefile: permission for $SPOOLDIR now 2755 (was 2750)
220198: leafnode.8: maxfetch was designated "maxcount"; fixed
220198: fetch.8: added documentation for -n
Changes 1.5(enz) --> 1.6:

Leafnode 1.6 was built on the sources of 1.4 because the sources of 1.5(enz)
became only available later. Here are the changes introduced by 1.6 with
respect to 1.5(enz):
* It is possible to use multiple upstream servers
* Blocking of newsgroups has been disabled again.
* Added new option "create_all_links" which is set by default. If unset,
  fetch only stores links of crosspostings posted to "interesting" groups.
* Several new options to filter downloads:
  "maxlines" to set a maximal size of postings to download
  "crosspostlimit" to filter out spam
  "maxage" to cope with burps of upstream servers
* New option "groupexpire" to selectively modulate expiry time for certain
  newsgroups.
* Bug fixes (as usual)
See also the more detailed ChangeLog below which lists the changes with
respect to 1.4.

Author: Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de>
Date: October 1998

------------------------------------------------------------------------------

Changes 1.4-7 --> 1.5(enz):

* Headers and bodies of articles can be downloaded separately if the
  "delaybody" option is set. In this case, if someone attempts to read a
  message body he gets a text telling him that the message has been marked
  for download by fetch. The files in $SPOOL_DIR/interesting.groups are
  used for storing the numbers of marked messages.
* The complete rereading of the newsgroup list from the remote server is
  done less frequently now (READ_INTERVALL in leafnode.h set to 90 days).
  Instead, fetch uses the NEWGROUPS command every time it is run.
* Some changes were made concerning the pseudo mail that is shown when a
  group is opened for the first time (telling some infos about leafnode).
  It did not work satisfyingly before.
* Blocking of certain newsgroups is possible.

Author: Markus Enzenberger <enz@cip.physik.uni-muenchen.de>
Date: April 1998

------------------------------------------------------------------------------

Changes 1.4 --> 1.4-7:

* This version is identical to leafnode-1.4, except for some little fixes
  mostly provided by redhat and debian.
* The empty files put in /var/spool/news/interesting.groups were preceded
  by a period, for example: .alt.os.linux instead of the proper
  alt.os.linux etc.
* The config file now reads 'maxfetch' instead of the incorrect 'maxcount'.
* Makefile changed to allow it to create the subdirectories in
  /var/spool/news/message.id without a problem when you do make install.

Author: Kent Robotti <robotti@erols.com>
Date: March 1998

------------------------------------------------------------------------------

Version 1.4

Written  by  Arnt Gulbrandsen <agulbra@troll.no> and copy-
right 1995 Troll Tech AS, Postboks  6133  Etterstad,  0602
Oslo, Norway, fax +47 22646949.

=============================================================================

Version history:
* Arnt Gulbrandsen <agulbra@troll.no> wrote versions 0.9 to 1.4 (only
  1.0 and 1.4 were publicly released).
* Kent Robotti <robotti@erols.com> published a slightly changed
  version of leafnode as leafnode-1.4.7 in March 1998.
* leafnode-1.5(enz) is leafnode-1.5 by Markus Enzenberger
  <enz@cip.physik.uni-muenchen.de> which was released in April 1998.
  It incorporated all (?) changes made in leafnode-1.4.7.
* Various versions of leafnode-1.4jp were published by Kazushi (Jam)
  Marukawa <jam@pobox.com> in Spring 1998. (Patches are available from
  http://www.io.com/~kazushi/freeware/#leafnode). Further development
  commenced, the software is now being called leafnode+ and is
  actively being developed (http://www.io.com/~kazushi/leafnode+/).
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published a
  patched leafnode version from May 12th, 1998 as leafnode-1.4.1.
  This version did not have any code of leafnode-1.5(enz) in it.
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published a
  patched leafnode version from July 20th, 1998 as leafnode-1.6alpha.
  This version incorporated most of the leafnode-1.5(enz) patches.
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published a
  patched leafnode version from August 16th, 1998 as leafnode-1.6b.
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published
  leafnode-1.6 on October 3rd, 1998.
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published
  leafnode-1.6.1 on October ??th, 1998.
* Cornelius Krasel <krasel@wpxx02.toxi.uni-wuerzburg.de> published
  leafnode-1.6.2 on October 22th, 1998.