File: ChangeLog

package info (click to toggle)
xapian-core 1.4.3-2%2Bdeb9u3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 21,412 kB
  • sloc: cpp: 113,868; ansic: 8,723; sh: 4,433; perl: 836; makefile: 566; tcl: 317; python: 40
file content (40783 lines) | stat: -rw-r--r-- 1,552,733 bytes parent folder | download | duplicates (2)
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
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808
16809
16810
16811
16812
16813
16814
16815
16816
16817
16818
16819
16820
16821
16822
16823
16824
16825
16826
16827
16828
16829
16830
16831
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842
16843
16844
16845
16846
16847
16848
16849
16850
16851
16852
16853
16854
16855
16856
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878
16879
16880
16881
16882
16883
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912
16913
16914
16915
16916
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927
16928
16929
16930
16931
16932
16933
16934
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945
16946
16947
16948
16949
16950
16951
16952
16953
16954
16955
16956
16957
16958
16959
16960
16961
16962
16963
16964
16965
16966
16967
16968
16969
16970
16971
16972
16973
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
17933
17934
17935
17936
17937
17938
17939
17940
17941
17942
17943
17944
17945
17946
17947
17948
17949
17950
17951
17952
17953
17954
17955
17956
17957
17958
17959
17960
17961
17962
17963
17964
17965
17966
17967
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
18178
18179
18180
18181
18182
18183
18184
18185
18186
18187
18188
18189
18190
18191
18192
18193
18194
18195
18196
18197
18198
18199
18200
18201
18202
18203
18204
18205
18206
18207
18208
18209
18210
18211
18212
18213
18214
18215
18216
18217
18218
18219
18220
18221
18222
18223
18224
18225
18226
18227
18228
18229
18230
18231
18232
18233
18234
18235
18236
18237
18238
18239
18240
18241
18242
18243
18244
18245
18246
18247
18248
18249
18250
18251
18252
18253
18254
18255
18256
18257
18258
18259
18260
18261
18262
18263
18264
18265
18266
18267
18268
18269
18270
18271
18272
18273
18274
18275
18276
18277
18278
18279
18280
18281
18282
18283
18284
18285
18286
18287
18288
18289
18290
18291
18292
18293
18294
18295
18296
18297
18298
18299
18300
18301
18302
18303
18304
18305
18306
18307
18308
18309
18310
18311
18312
18313
18314
18315
18316
18317
18318
18319
18320
18321
18322
18323
18324
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334
18335
18336
18337
18338
18339
18340
18341
18342
18343
18344
18345
18346
18347
18348
18349
18350
18351
18352
18353
18354
18355
18356
18357
18358
18359
18360
18361
18362
18363
18364
18365
18366
18367
18368
18369
18370
18371
18372
18373
18374
18375
18376
18377
18378
18379
18380
18381
18382
18383
18384
18385
18386
18387
18388
18389
18390
18391
18392
18393
18394
18395
18396
18397
18398
18399
18400
18401
18402
18403
18404
18405
18406
18407
18408
18409
18410
18411
18412
18413
18414
18415
18416
18417
18418
18419
18420
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
18465
18466
18467
18468
18469
18470
18471
18472
18473
18474
18475
18476
18477
18478
18479
18480
18481
18482
18483
18484
18485
18486
18487
18488
18489
18490
18491
18492
18493
18494
18495
18496
18497
18498
18499
18500
18501
18502
18503
18504
18505
18506
18507
18508
18509
18510
18511
18512
18513
18514
18515
18516
18517
18518
18519
18520
18521
18522
18523
18524
18525
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
18672
18673
18674
18675
18676
18677
18678
18679
18680
18681
18682
18683
18684
18685
18686
18687
18688
18689
18690
18691
18692
18693
18694
18695
18696
18697
18698
18699
18700
18701
18702
18703
18704
18705
18706
18707
18708
18709
18710
18711
18712
18713
18714
18715
18716
18717
18718
18719
18720
18721
18722
18723
18724
18725
18726
18727
18728
18729
18730
18731
18732
18733
18734
18735
18736
18737
18738
18739
18740
18741
18742
18743
18744
18745
18746
18747
18748
18749
18750
18751
18752
18753
18754
18755
18756
18757
18758
18759
18760
18761
18762
18763
18764
18765
18766
18767
18768
18769
18770
18771
18772
18773
18774
18775
18776
18777
18778
18779
18780
18781
18782
18783
18784
18785
18786
18787
18788
18789
18790
18791
18792
18793
18794
18795
18796
18797
18798
18799
18800
18801
18802
18803
18804
18805
18806
18807
18808
18809
18810
18811
18812
18813
18814
18815
18816
18817
18818
18819
18820
18821
18822
18823
18824
18825
18826
18827
18828
18829
18830
18831
18832
18833
18834
18835
18836
18837
18838
18839
18840
18841
18842
18843
18844
18845
18846
18847
18848
18849
18850
18851
18852
18853
18854
18855
18856
18857
18858
18859
18860
18861
18862
18863
18864
18865
18866
18867
18868
18869
18870
18871
18872
18873
18874
18875
18876
18877
18878
18879
18880
18881
18882
18883
18884
18885
18886
18887
18888
18889
18890
18891
18892
18893
18894
18895
18896
18897
18898
18899
18900
18901
18902
18903
18904
18905
18906
18907
18908
18909
18910
18911
18912
18913
18914
18915
18916
18917
18918
18919
18920
18921
18922
18923
18924
18925
18926
18927
18928
18929
18930
18931
18932
18933
18934
18935
18936
18937
18938
18939
18940
18941
18942
18943
18944
18945
18946
18947
18948
18949
18950
18951
18952
18953
18954
18955
18956
18957
18958
18959
18960
18961
18962
18963
18964
18965
18966
18967
18968
18969
18970
18971
18972
18973
18974
18975
18976
18977
18978
18979
18980
18981
18982
18983
18984
18985
18986
18987
18988
18989
18990
18991
18992
18993
18994
18995
18996
18997
18998
18999
19000
19001
19002
19003
19004
19005
19006
19007
19008
19009
19010
19011
19012
19013
19014
19015
19016
19017
19018
19019
19020
19021
19022
19023
19024
19025
19026
19027
19028
19029
19030
19031
19032
19033
19034
19035
19036
19037
19038
19039
19040
19041
19042
19043
19044
19045
19046
19047
19048
19049
19050
19051
19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
19067
19068
19069
19070
19071
19072
19073
19074
19075
19076
19077
19078
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
19165
19166
19167
19168
19169
19170
19171
19172
19173
19174
19175
19176
19177
19178
19179
19180
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
19212
19213
19214
19215
19216
19217
19218
19219
19220
19221
19222
19223
19224
19225
19226
19227
19228
19229
19230
19231
19232
19233
19234
19235
19236
19237
19238
19239
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
19283
19284
19285
19286
19287
19288
19289
19290
19291
19292
19293
19294
19295
19296
19297
19298
19299
19300
19301
19302
19303
19304
19305
19306
19307
19308
19309
19310
19311
19312
19313
19314
19315
19316
19317
19318
19319
19320
19321
19322
19323
19324
19325
19326
19327
19328
19329
19330
19331
19332
19333
19334
19335
19336
19337
19338
19339
19340
19341
19342
19343
19344
19345
19346
19347
19348
19349
19350
19351
19352
19353
19354
19355
19356
19357
19358
19359
19360
19361
19362
19363
19364
19365
19366
19367
19368
19369
19370
19371
19372
19373
19374
19375
19376
19377
19378
19379
19380
19381
19382
19383
19384
19385
19386
19387
19388
19389
19390
19391
19392
19393
19394
19395
19396
19397
19398
19399
19400
19401
19402
19403
19404
19405
19406
19407
19408
19409
19410
19411
19412
19413
19414
19415
19416
19417
19418
19419
19420
19421
19422
19423
19424
19425
19426
19427
19428
19429
19430
19431
19432
19433
19434
19435
19436
19437
19438
19439
19440
19441
19442
19443
19444
19445
19446
19447
19448
19449
19450
19451
19452
19453
19454
19455
19456
19457
19458
19459
19460
19461
19462
19463
19464
19465
19466
19467
19468
19469
19470
19471
19472
19473
19474
19475
19476
19477
19478
19479
19480
19481
19482
19483
19484
19485
19486
19487
19488
19489
19490
19491
19492
19493
19494
19495
19496
19497
19498
19499
19500
19501
19502
19503
19504
19505
19506
19507
19508
19509
19510
19511
19512
19513
19514
19515
19516
19517
19518
19519
19520
19521
19522
19523
19524
19525
19526
19527
19528
19529
19530
19531
19532
19533
19534
19535
19536
19537
19538
19539
19540
19541
19542
19543
19544
19545
19546
19547
19548
19549
19550
19551
19552
19553
19554
19555
19556
19557
19558
19559
19560
19561
19562
19563
19564
19565
19566
19567
19568
19569
19570
19571
19572
19573
19574
19575
19576
19577
19578
19579
19580
19581
19582
19583
19584
19585
19586
19587
19588
19589
19590
19591
19592
19593
19594
19595
19596
19597
19598
19599
19600
19601
19602
19603
19604
19605
19606
19607
19608
19609
19610
19611
19612
19613
19614
19615
19616
19617
19618
19619
19620
19621
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
19634
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
19670
19671
19672
19673
19674
19675
19676
19677
19678
19679
19680
19681
19682
19683
19684
19685
19686
19687
19688
19689
19690
19691
19692
19693
19694
19695
19696
19697
19698
19699
19700
19701
19702
19703
19704
19705
19706
19707
19708
19709
19710
19711
19712
19713
19714
19715
19716
19717
19718
19719
19720
19721
19722
19723
19724
19725
19726
19727
19728
19729
19730
19731
19732
19733
19734
19735
19736
19737
19738
19739
19740
19741
19742
19743
19744
19745
19746
19747
19748
19749
19750
19751
19752
19753
19754
19755
19756
19757
19758
19759
19760
19761
19762
19763
19764
19765
19766
19767
19768
19769
19770
19771
19772
19773
19774
19775
19776
19777
19778
19779
19780
19781
19782
19783
19784
19785
19786
19787
19788
19789
19790
19791
19792
19793
19794
19795
19796
19797
19798
19799
19800
19801
19802
19803
19804
19805
19806
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826
19827
19828
19829
19830
19831
19832
19833
19834
19835
19836
19837
19838
19839
19840
19841
19842
19843
19844
19845
19846
19847
19848
19849
19850
19851
19852
19853
19854
19855
19856
19857
19858
19859
19860
19861
19862
19863
19864
19865
19866
19867
19868
19869
19870
19871
19872
19873
19874
19875
19876
19877
19878
19879
19880
19881
19882
19883
19884
19885
19886
19887
19888
19889
19890
19891
19892
19893
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
19925
19926
19927
19928
19929
19930
19931
19932
19933
19934
19935
19936
19937
19938
19939
19940
19941
19942
19943
19944
19945
19946
19947
19948
19949
19950
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
19964
19965
19966
19967
19968
19969
19970
19971
19972
19973
19974
19975
19976
19977
19978
19979
19980
19981
19982
19983
19984
19985
19986
19987
19988
19989
19990
19991
19992
19993
19994
19995
19996
19997
19998
19999
20000
20001
20002
20003
20004
20005
20006
20007
20008
20009
20010
20011
20012
20013
20014
20015
20016
20017
20018
20019
20020
20021
20022
20023
20024
20025
20026
20027
20028
20029
20030
20031
20032
20033
20034
20035
20036
20037
20038
20039
20040
20041
20042
20043
20044
20045
20046
20047
20048
20049
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091
20092
20093
20094
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
20194
20195
20196
20197
20198
20199
20200
20201
20202
20203
20204
20205
20206
20207
20208
20209
20210
20211
20212
20213
20214
20215
20216
20217
20218
20219
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
20244
20245
20246
20247
20248
20249
20250
20251
20252
20253
20254
20255
20256
20257
20258
20259
20260
20261
20262
20263
20264
20265
20266
20267
20268
20269
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20280
20281
20282
20283
20284
20285
20286
20287
20288
20289
20290
20291
20292
20293
20294
20295
20296
20297
20298
20299
20300
20301
20302
20303
20304
20305
20306
20307
20308
20309
20310
20311
20312
20313
20314
20315
20316
20317
20318
20319
20320
20321
20322
20323
20324
20325
20326
20327
20328
20329
20330
20331
20332
20333
20334
20335
20336
20337
20338
20339
20340
20341
20342
20343
20344
20345
20346
20347
20348
20349
20350
20351
20352
20353
20354
20355
20356
20357
20358
20359
20360
20361
20362
20363
20364
20365
20366
20367
20368
20369
20370
20371
20372
20373
20374
20375
20376
20377
20378
20379
20380
20381
20382
20383
20384
20385
20386
20387
20388
20389
20390
20391
20392
20393
20394
20395
20396
20397
20398
20399
20400
20401
20402
20403
20404
20405
20406
20407
20408
20409
20410
20411
20412
20413
20414
20415
20416
20417
20418
20419
20420
20421
20422
20423
20424
20425
20426
20427
20428
20429
20430
20431
20432
20433
20434
20435
20436
20437
20438
20439
20440
20441
20442
20443
20444
20445
20446
20447
20448
20449
20450
20451
20452
20453
20454
20455
20456
20457
20458
20459
20460
20461
20462
20463
20464
20465
20466
20467
20468
20469
20470
20471
20472
20473
20474
20475
20476
20477
20478
20479
20480
20481
20482
20483
20484
20485
20486
20487
20488
20489
20490
20491
20492
20493
20494
20495
20496
20497
20498
20499
20500
20501
20502
20503
20504
20505
20506
20507
20508
20509
20510
20511
20512
20513
20514
20515
20516
20517
20518
20519
20520
20521
20522
20523
20524
20525
20526
20527
20528
20529
20530
20531
20532
20533
20534
20535
20536
20537
20538
20539
20540
20541
20542
20543
20544
20545
20546
20547
20548
20549
20550
20551
20552
20553
20554
20555
20556
20557
20558
20559
20560
20561
20562
20563
20564
20565
20566
20567
20568
20569
20570
20571
20572
20573
20574
20575
20576
20577
20578
20579
20580
20581
20582
20583
20584
20585
20586
20587
20588
20589
20590
20591
20592
20593
20594
20595
20596
20597
20598
20599
20600
20601
20602
20603
20604
20605
20606
20607
20608
20609
20610
20611
20612
20613
20614
20615
20616
20617
20618
20619
20620
20621
20622
20623
20624
20625
20626
20627
20628
20629
20630
20631
20632
20633
20634
20635
20636
20637
20638
20639
20640
20641
20642
20643
20644
20645
20646
20647
20648
20649
20650
20651
20652
20653
20654
20655
20656
20657
20658
20659
20660
20661
20662
20663
20664
20665
20666
20667
20668
20669
20670
20671
20672
20673
20674
20675
20676
20677
20678
20679
20680
20681
20682
20683
20684
20685
20686
20687
20688
20689
20690
20691
20692
20693
20694
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705
20706
20707
20708
20709
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724
20725
20726
20727
20728
20729
20730
20731
20732
20733
20734
20735
20736
20737
20738
20739
20740
20741
20742
20743
20744
20745
20746
20747
20748
20749
20750
20751
20752
20753
20754
20755
20756
20757
20758
20759
20760
20761
20762
20763
20764
20765
20766
20767
20768
20769
20770
20771
20772
20773
20774
20775
20776
20777
20778
20779
20780
20781
20782
20783
20784
20785
20786
20787
20788
20789
20790
20791
20792
20793
20794
20795
20796
20797
20798
20799
20800
20801
20802
20803
20804
20805
20806
20807
20808
20809
20810
20811
20812
20813
20814
20815
20816
20817
20818
20819
20820
20821
20822
20823
20824
20825
20826
20827
20828
20829
20830
20831
20832
20833
20834
20835
20836
20837
20838
20839
20840
20841
20842
20843
20844
20845
20846
20847
20848
20849
20850
20851
20852
20853
20854
20855
20856
20857
20858
20859
20860
20861
20862
20863
20864
20865
20866
20867
20868
20869
20870
20871
20872
20873
20874
20875
20876
20877
20878
20879
20880
20881
20882
20883
20884
20885
20886
20887
20888
20889
20890
20891
20892
20893
20894
20895
20896
20897
20898
20899
20900
20901
20902
20903
20904
20905
20906
20907
20908
20909
20910
20911
20912
20913
20914
20915
20916
20917
20918
20919
20920
20921
20922
20923
20924
20925
20926
20927
20928
20929
20930
20931
20932
20933
20934
20935
20936
20937
20938
20939
20940
20941
20942
20943
20944
20945
20946
20947
20948
20949
20950
20951
20952
20953
20954
20955
20956
20957
20958
20959
20960
20961
20962
20963
20964
20965
20966
20967
20968
20969
20970
20971
20972
20973
20974
20975
20976
20977
20978
20979
20980
20981
20982
20983
20984
20985
20986
20987
20988
20989
20990
20991
20992
20993
20994
20995
20996
20997
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014
21015
21016
21017
21018
21019
21020
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
21052
21053
21054
21055
21056
21057
21058
21059
21060
21061
21062
21063
21064
21065
21066
21067
21068
21069
21070
21071
21072
21073
21074
21075
21076
21077
21078
21079
21080
21081
21082
21083
21084
21085
21086
21087
21088
21089
21090
21091
21092
21093
21094
21095
21096
21097
21098
21099
21100
21101
21102
21103
21104
21105
21106
21107
21108
21109
21110
21111
21112
21113
21114
21115
21116
21117
21118
21119
21120
21121
21122
21123
21124
21125
21126
21127
21128
21129
21130
21131
21132
21133
21134
21135
21136
21137
21138
21139
21140
21141
21142
21143
21144
21145
21146
21147
21148
21149
21150
21151
21152
21153
21154
21155
21156
21157
21158
21159
21160
21161
21162
21163
21164
21165
21166
21167
21168
21169
21170
21171
21172
21173
21174
21175
21176
21177
21178
21179
21180
21181
21182
21183
21184
21185
21186
21187
21188
21189
21190
21191
21192
21193
21194
21195
21196
21197
21198
21199
21200
21201
21202
21203
21204
21205
21206
21207
21208
21209
21210
21211
21212
21213
21214
21215
21216
21217
21218
21219
21220
21221
21222
21223
21224
21225
21226
21227
21228
21229
21230
21231
21232
21233
21234
21235
21236
21237
21238
21239
21240
21241
21242
21243
21244
21245
21246
21247
21248
21249
21250
21251
21252
21253
21254
21255
21256
21257
21258
21259
21260
21261
21262
21263
21264
21265
21266
21267
21268
21269
21270
21271
21272
21273
21274
21275
21276
21277
21278
21279
21280
21281
21282
21283
21284
21285
21286
21287
21288
21289
21290
21291
21292
21293
21294
21295
21296
21297
21298
21299
21300
21301
21302
21303
21304
21305
21306
21307
21308
21309
21310
21311
21312
21313
21314
21315
21316
21317
21318
21319
21320
21321
21322
21323
21324
21325
21326
21327
21328
21329
21330
21331
21332
21333
21334
21335
21336
21337
21338
21339
21340
21341
21342
21343
21344
21345
21346
21347
21348
21349
21350
21351
21352
21353
21354
21355
21356
21357
21358
21359
21360
21361
21362
21363
21364
21365
21366
21367
21368
21369
21370
21371
21372
21373
21374
21375
21376
21377
21378
21379
21380
21381
21382
21383
21384
21385
21386
21387
21388
21389
21390
21391
21392
21393
21394
21395
21396
21397
21398
21399
21400
21401
21402
21403
21404
21405
21406
21407
21408
21409
21410
21411
21412
21413
21414
21415
21416
21417
21418
21419
21420
21421
21422
21423
21424
21425
21426
21427
21428
21429
21430
21431
21432
21433
21434
21435
21436
21437
21438
21439
21440
21441
21442
21443
21444
21445
21446
21447
21448
21449
21450
21451
21452
21453
21454
21455
21456
21457
21458
21459
21460
21461
21462
21463
21464
21465
21466
21467
21468
21469
21470
21471
21472
21473
21474
21475
21476
21477
21478
21479
21480
21481
21482
21483
21484
21485
21486
21487
21488
21489
21490
21491
21492
21493
21494
21495
21496
21497
21498
21499
21500
21501
21502
21503
21504
21505
21506
21507
21508
21509
21510
21511
21512
21513
21514
21515
21516
21517
21518
21519
21520
21521
21522
21523
21524
21525
21526
21527
21528
21529
21530
21531
21532
21533
21534
21535
21536
21537
21538
21539
21540
21541
21542
21543
21544
21545
21546
21547
21548
21549
21550
21551
21552
21553
21554
21555
21556
21557
21558
21559
21560
21561
21562
21563
21564
21565
21566
21567
21568
21569
21570
21571
21572
21573
21574
21575
21576
21577
21578
21579
21580
21581
21582
21583
21584
21585
21586
21587
21588
21589
21590
21591
21592
21593
21594
21595
21596
21597
21598
21599
21600
21601
21602
21603
21604
21605
21606
21607
21608
21609
21610
21611
21612
21613
21614
21615
21616
21617
21618
21619
21620
21621
21622
21623
21624
21625
21626
21627
21628
21629
21630
21631
21632
21633
21634
21635
21636
21637
21638
21639
21640
21641
21642
21643
21644
21645
21646
21647
21648
21649
21650
21651
21652
21653
21654
21655
21656
21657
21658
21659
21660
21661
21662
21663
21664
21665
21666
21667
21668
21669
21670
21671
21672
21673
21674
21675
21676
21677
21678
21679
21680
21681
21682
21683
21684
21685
21686
21687
21688
21689
21690
21691
21692
21693
21694
21695
21696
21697
21698
21699
21700
21701
21702
21703
21704
21705
21706
21707
21708
21709
21710
21711
21712
21713
21714
21715
21716
21717
21718
21719
21720
21721
21722
21723
21724
21725
21726
21727
21728
21729
21730
21731
21732
21733
21734
21735
21736
21737
21738
21739
21740
21741
21742
21743
21744
21745
21746
21747
21748
21749
21750
21751
21752
21753
21754
21755
21756
21757
21758
21759
21760
21761
21762
21763
21764
21765
21766
21767
21768
21769
21770
21771
21772
21773
21774
21775
21776
21777
21778
21779
21780
21781
21782
21783
21784
21785
21786
21787
21788
21789
21790
21791
21792
21793
21794
21795
21796
21797
21798
21799
21800
21801
21802
21803
21804
21805
21806
21807
21808
21809
21810
21811
21812
21813
21814
21815
21816
21817
21818
21819
21820
21821
21822
21823
21824
21825
21826
21827
21828
21829
21830
21831
21832
21833
21834
21835
21836
21837
21838
21839
21840
21841
21842
21843
21844
21845
21846
21847
21848
21849
21850
21851
21852
21853
21854
21855
21856
21857
21858
21859
21860
21861
21862
21863
21864
21865
21866
21867
21868
21869
21870
21871
21872
21873
21874
21875
21876
21877
21878
21879
21880
21881
21882
21883
21884
21885
21886
21887
21888
21889
21890
21891
21892
21893
21894
21895
21896
21897
21898
21899
21900
21901
21902
21903
21904
21905
21906
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919
21920
21921
21922
21923
21924
21925
21926
21927
21928
21929
21930
21931
21932
21933
21934
21935
21936
21937
21938
21939
21940
21941
21942
21943
21944
21945
21946
21947
21948
21949
21950
21951
21952
21953
21954
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
21976
21977
21978
21979
21980
21981
21982
21983
21984
21985
21986
21987
21988
21989
21990
21991
21992
21993
21994
21995
21996
21997
21998
21999
22000
22001
22002
22003
22004
22005
22006
22007
22008
22009
22010
22011
22012
22013
22014
22015
22016
22017
22018
22019
22020
22021
22022
22023
22024
22025
22026
22027
22028
22029
22030
22031
22032
22033
22034
22035
22036
22037
22038
22039
22040
22041
22042
22043
22044
22045
22046
22047
22048
22049
22050
22051
22052
22053
22054
22055
22056
22057
22058
22059
22060
22061
22062
22063
22064
22065
22066
22067
22068
22069
22070
22071
22072
22073
22074
22075
22076
22077
22078
22079
22080
22081
22082
22083
22084
22085
22086
22087
22088
22089
22090
22091
22092
22093
22094
22095
22096
22097
22098
22099
22100
22101
22102
22103
22104
22105
22106
22107
22108
22109
22110
22111
22112
22113
22114
22115
22116
22117
22118
22119
22120
22121
22122
22123
22124
22125
22126
22127
22128
22129
22130
22131
22132
22133
22134
22135
22136
22137
22138
22139
22140
22141
22142
22143
22144
22145
22146
22147
22148
22149
22150
22151
22152
22153
22154
22155
22156
22157
22158
22159
22160
22161
22162
22163
22164
22165
22166
22167
22168
22169
22170
22171
22172
22173
22174
22175
22176
22177
22178
22179
22180
22181
22182
22183
22184
22185
22186
22187
22188
22189
22190
22191
22192
22193
22194
22195
22196
22197
22198
22199
22200
22201
22202
22203
22204
22205
22206
22207
22208
22209
22210
22211
22212
22213
22214
22215
22216
22217
22218
22219
22220
22221
22222
22223
22224
22225
22226
22227
22228
22229
22230
22231
22232
22233
22234
22235
22236
22237
22238
22239
22240
22241
22242
22243
22244
22245
22246
22247
22248
22249
22250
22251
22252
22253
22254
22255
22256
22257
22258
22259
22260
22261
22262
22263
22264
22265
22266
22267
22268
22269
22270
22271
22272
22273
22274
22275
22276
22277
22278
22279
22280
22281
22282
22283
22284
22285
22286
22287
22288
22289
22290
22291
22292
22293
22294
22295
22296
22297
22298
22299
22300
22301
22302
22303
22304
22305
22306
22307
22308
22309
22310
22311
22312
22313
22314
22315
22316
22317
22318
22319
22320
22321
22322
22323
22324
22325
22326
22327
22328
22329
22330
22331
22332
22333
22334
22335
22336
22337
22338
22339
22340
22341
22342
22343
22344
22345
22346
22347
22348
22349
22350
22351
22352
22353
22354
22355
22356
22357
22358
22359
22360
22361
22362
22363
22364
22365
22366
22367
22368
22369
22370
22371
22372
22373
22374
22375
22376
22377
22378
22379
22380
22381
22382
22383
22384
22385
22386
22387
22388
22389
22390
22391
22392
22393
22394
22395
22396
22397
22398
22399
22400
22401
22402
22403
22404
22405
22406
22407
22408
22409
22410
22411
22412
22413
22414
22415
22416
22417
22418
22419
22420
22421
22422
22423
22424
22425
22426
22427
22428
22429
22430
22431
22432
22433
22434
22435
22436
22437
22438
22439
22440
22441
22442
22443
22444
22445
22446
22447
22448
22449
22450
22451
22452
22453
22454
22455
22456
22457
22458
22459
22460
22461
22462
22463
22464
22465
22466
22467
22468
22469
22470
22471
22472
22473
22474
22475
22476
22477
22478
22479
22480
22481
22482
22483
22484
22485
22486
22487
22488
22489
22490
22491
22492
22493
22494
22495
22496
22497
22498
22499
22500
22501
22502
22503
22504
22505
22506
22507
22508
22509
22510
22511
22512
22513
22514
22515
22516
22517
22518
22519
22520
22521
22522
22523
22524
22525
22526
22527
22528
22529
22530
22531
22532
22533
22534
22535
22536
22537
22538
22539
22540
22541
22542
22543
22544
22545
22546
22547
22548
22549
22550
22551
22552
22553
22554
22555
22556
22557
22558
22559
22560
22561
22562
22563
22564
22565
22566
22567
22568
22569
22570
22571
22572
22573
22574
22575
22576
22577
22578
22579
22580
22581
22582
22583
22584
22585
22586
22587
22588
22589
22590
22591
22592
22593
22594
22595
22596
22597
22598
22599
22600
22601
22602
22603
22604
22605
22606
22607
22608
22609
22610
22611
22612
22613
22614
22615
22616
22617
22618
22619
22620
22621
22622
22623
22624
22625
22626
22627
22628
22629
22630
22631
22632
22633
22634
22635
22636
22637
22638
22639
22640
22641
22642
22643
22644
22645
22646
22647
22648
22649
22650
22651
22652
22653
22654
22655
22656
22657
22658
22659
22660
22661
22662
22663
22664
22665
22666
22667
22668
22669
22670
22671
22672
22673
22674
22675
22676
22677
22678
22679
22680
22681
22682
22683
22684
22685
22686
22687
22688
22689
22690
22691
22692
22693
22694
22695
22696
22697
22698
22699
22700
22701
22702
22703
22704
22705
22706
22707
22708
22709
22710
22711
22712
22713
22714
22715
22716
22717
22718
22719
22720
22721
22722
22723
22724
22725
22726
22727
22728
22729
22730
22731
22732
22733
22734
22735
22736
22737
22738
22739
22740
22741
22742
22743
22744
22745
22746
22747
22748
22749
22750
22751
22752
22753
22754
22755
22756
22757
22758
22759
22760
22761
22762
22763
22764
22765
22766
22767
22768
22769
22770
22771
22772
22773
22774
22775
22776
22777
22778
22779
22780
22781
22782
22783
22784
22785
22786
22787
22788
22789
22790
22791
22792
22793
22794
22795
22796
22797
22798
22799
22800
22801
22802
22803
22804
22805
22806
22807
22808
22809
22810
22811
22812
22813
22814
22815
22816
22817
22818
22819
22820
22821
22822
22823
22824
22825
22826
22827
22828
22829
22830
22831
22832
22833
22834
22835
22836
22837
22838
22839
22840
22841
22842
22843
22844
22845
22846
22847
22848
22849
22850
22851
22852
22853
22854
22855
22856
22857
22858
22859
22860
22861
22862
22863
22864
22865
22866
22867
22868
22869
22870
22871
22872
22873
22874
22875
22876
22877
22878
22879
22880
22881
22882
22883
22884
22885
22886
22887
22888
22889
22890
22891
22892
22893
22894
22895
22896
22897
22898
22899
22900
22901
22902
22903
22904
22905
22906
22907
22908
22909
22910
22911
22912
22913
22914
22915
22916
22917
22918
22919
22920
22921
22922
22923
22924
22925
22926
22927
22928
22929
22930
22931
22932
22933
22934
22935
22936
22937
22938
22939
22940
22941
22942
22943
22944
22945
22946
22947
22948
22949
22950
22951
22952
22953
22954
22955
22956
22957
22958
22959
22960
22961
22962
22963
22964
22965
22966
22967
22968
22969
22970
22971
22972
22973
22974
22975
22976
22977
22978
22979
22980
22981
22982
22983
22984
22985
22986
22987
22988
22989
22990
22991
22992
22993
22994
22995
22996
22997
22998
22999
23000
23001
23002
23003
23004
23005
23006
23007
23008
23009
23010
23011
23012
23013
23014
23015
23016
23017
23018
23019
23020
23021
23022
23023
23024
23025
23026
23027
23028
23029
23030
23031
23032
23033
23034
23035
23036
23037
23038
23039
23040
23041
23042
23043
23044
23045
23046
23047
23048
23049
23050
23051
23052
23053
23054
23055
23056
23057
23058
23059
23060
23061
23062
23063
23064
23065
23066
23067
23068
23069
23070
23071
23072
23073
23074
23075
23076
23077
23078
23079
23080
23081
23082
23083
23084
23085
23086
23087
23088
23089
23090
23091
23092
23093
23094
23095
23096
23097
23098
23099
23100
23101
23102
23103
23104
23105
23106
23107
23108
23109
23110
23111
23112
23113
23114
23115
23116
23117
23118
23119
23120
23121
23122
23123
23124
23125
23126
23127
23128
23129
23130
23131
23132
23133
23134
23135
23136
23137
23138
23139
23140
23141
23142
23143
23144
23145
23146
23147
23148
23149
23150
23151
23152
23153
23154
23155
23156
23157
23158
23159
23160
23161
23162
23163
23164
23165
23166
23167
23168
23169
23170
23171
23172
23173
23174
23175
23176
23177
23178
23179
23180
23181
23182
23183
23184
23185
23186
23187
23188
23189
23190
23191
23192
23193
23194
23195
23196
23197
23198
23199
23200
23201
23202
23203
23204
23205
23206
23207
23208
23209
23210
23211
23212
23213
23214
23215
23216
23217
23218
23219
23220
23221
23222
23223
23224
23225
23226
23227
23228
23229
23230
23231
23232
23233
23234
23235
23236
23237
23238
23239
23240
23241
23242
23243
23244
23245
23246
23247
23248
23249
23250
23251
23252
23253
23254
23255
23256
23257
23258
23259
23260
23261
23262
23263
23264
23265
23266
23267
23268
23269
23270
23271
23272
23273
23274
23275
23276
23277
23278
23279
23280
23281
23282
23283
23284
23285
23286
23287
23288
23289
23290
23291
23292
23293
23294
23295
23296
23297
23298
23299
23300
23301
23302
23303
23304
23305
23306
23307
23308
23309
23310
23311
23312
23313
23314
23315
23316
23317
23318
23319
23320
23321
23322
23323
23324
23325
23326
23327
23328
23329
23330
23331
23332
23333
23334
23335
23336
23337
23338
23339
23340
23341
23342
23343
23344
23345
23346
23347
23348
23349
23350
23351
23352
23353
23354
23355
23356
23357
23358
23359
23360
23361
23362
23363
23364
23365
23366
23367
23368
23369
23370
23371
23372
23373
23374
23375
23376
23377
23378
23379
23380
23381
23382
23383
23384
23385
23386
23387
23388
23389
23390
23391
23392
23393
23394
23395
23396
23397
23398
23399
23400
23401
23402
23403
23404
23405
23406
23407
23408
23409
23410
23411
23412
23413
23414
23415
23416
23417
23418
23419
23420
23421
23422
23423
23424
23425
23426
23427
23428
23429
23430
23431
23432
23433
23434
23435
23436
23437
23438
23439
23440
23441
23442
23443
23444
23445
23446
23447
23448
23449
23450
23451
23452
23453
23454
23455
23456
23457
23458
23459
23460
23461
23462
23463
23464
23465
23466
23467
23468
23469
23470
23471
23472
23473
23474
23475
23476
23477
23478
23479
23480
23481
23482
23483
23484
23485
23486
23487
23488
23489
23490
23491
23492
23493
23494
23495
23496
23497
23498
23499
23500
23501
23502
23503
23504
23505
23506
23507
23508
23509
23510
23511
23512
23513
23514
23515
23516
23517
23518
23519
23520
23521
23522
23523
23524
23525
23526
23527
23528
23529
23530
23531
23532
23533
23534
23535
23536
23537
23538
23539
23540
23541
23542
23543
23544
23545
23546
23547
23548
23549
23550
23551
23552
23553
23554
23555
23556
23557
23558
23559
23560
23561
23562
23563
23564
23565
23566
23567
23568
23569
23570
23571
23572
23573
23574
23575
23576
23577
23578
23579
23580
23581
23582
23583
23584
23585
23586
23587
23588
23589
23590
23591
23592
23593
23594
23595
23596
23597
23598
23599
23600
23601
23602
23603
23604
23605
23606
23607
23608
23609
23610
23611
23612
23613
23614
23615
23616
23617
23618
23619
23620
23621
23622
23623
23624
23625
23626
23627
23628
23629
23630
23631
23632
23633
23634
23635
23636
23637
23638
23639
23640
23641
23642
23643
23644
23645
23646
23647
23648
23649
23650
23651
23652
23653
23654
23655
23656
23657
23658
23659
23660
23661
23662
23663
23664
23665
23666
23667
23668
23669
23670
23671
23672
23673
23674
23675
23676
23677
23678
23679
23680
23681
23682
23683
23684
23685
23686
23687
23688
23689
23690
23691
23692
23693
23694
23695
23696
23697
23698
23699
23700
23701
23702
23703
23704
23705
23706
23707
23708
23709
23710
23711
23712
23713
23714
23715
23716
23717
23718
23719
23720
23721
23722
23723
23724
23725
23726
23727
23728
23729
23730
23731
23732
23733
23734
23735
23736
23737
23738
23739
23740
23741
23742
23743
23744
23745
23746
23747
23748
23749
23750
23751
23752
23753
23754
23755
23756
23757
23758
23759
23760
23761
23762
23763
23764
23765
23766
23767
23768
23769
23770
23771
23772
23773
23774
23775
23776
23777
23778
23779
23780
23781
23782
23783
23784
23785
23786
23787
23788
23789
23790
23791
23792
23793
23794
23795
23796
23797
23798
23799
23800
23801
23802
23803
23804
23805
23806
23807
23808
23809
23810
23811
23812
23813
23814
23815
23816
23817
23818
23819
23820
23821
23822
23823
23824
23825
23826
23827
23828
23829
23830
23831
23832
23833
23834
23835
23836
23837
23838
23839
23840
23841
23842
23843
23844
23845
23846
23847
23848
23849
23850
23851
23852
23853
23854
23855
23856
23857
23858
23859
23860
23861
23862
23863
23864
23865
23866
23867
23868
23869
23870
23871
23872
23873
23874
23875
23876
23877
23878
23879
23880
23881
23882
23883
23884
23885
23886
23887
23888
23889
23890
23891
23892
23893
23894
23895
23896
23897
23898
23899
23900
23901
23902
23903
23904
23905
23906
23907
23908
23909
23910
23911
23912
23913
23914
23915
23916
23917
23918
23919
23920
23921
23922
23923
23924
23925
23926
23927
23928
23929
23930
23931
23932
23933
23934
23935
23936
23937
23938
23939
23940
23941
23942
23943
23944
23945
23946
23947
23948
23949
23950
23951
23952
23953
23954
23955
23956
23957
23958
23959
23960
23961
23962
23963
23964
23965
23966
23967
23968
23969
23970
23971
23972
23973
23974
23975
23976
23977
23978
23979
23980
23981
23982
23983
23984
23985
23986
23987
23988
23989
23990
23991
23992
23993
23994
23995
23996
23997
23998
23999
24000
24001
24002
24003
24004
24005
24006
24007
24008
24009
24010
24011
24012
24013
24014
24015
24016
24017
24018
24019
24020
24021
24022
24023
24024
24025
24026
24027
24028
24029
24030
24031
24032
24033
24034
24035
24036
24037
24038
24039
24040
24041
24042
24043
24044
24045
24046
24047
24048
24049
24050
24051
24052
24053
24054
24055
24056
24057
24058
24059
24060
24061
24062
24063
24064
24065
24066
24067
24068
24069
24070
24071
24072
24073
24074
24075
24076
24077
24078
24079
24080
24081
24082
24083
24084
24085
24086
24087
24088
24089
24090
24091
24092
24093
24094
24095
24096
24097
24098
24099
24100
24101
24102
24103
24104
24105
24106
24107
24108
24109
24110
24111
24112
24113
24114
24115
24116
24117
24118
24119
24120
24121
24122
24123
24124
24125
24126
24127
24128
24129
24130
24131
24132
24133
24134
24135
24136
24137
24138
24139
24140
24141
24142
24143
24144
24145
24146
24147
24148
24149
24150
24151
24152
24153
24154
24155
24156
24157
24158
24159
24160
24161
24162
24163
24164
24165
24166
24167
24168
24169
24170
24171
24172
24173
24174
24175
24176
24177
24178
24179
24180
24181
24182
24183
24184
24185
24186
24187
24188
24189
24190
24191
24192
24193
24194
24195
24196
24197
24198
24199
24200
24201
24202
24203
24204
24205
24206
24207
24208
24209
24210
24211
24212
24213
24214
24215
24216
24217
24218
24219
24220
24221
24222
24223
24224
24225
24226
24227
24228
24229
24230
24231
24232
24233
24234
24235
24236
24237
24238
24239
24240
24241
24242
24243
24244
24245
24246
24247
24248
24249
24250
24251
24252
24253
24254
24255
24256
24257
24258
24259
24260
24261
24262
24263
24264
24265
24266
24267
24268
24269
24270
24271
24272
24273
24274
24275
24276
24277
24278
24279
24280
24281
24282
24283
24284
24285
24286
24287
24288
24289
24290
24291
24292
24293
24294
24295
24296
24297
24298
24299
24300
24301
24302
24303
24304
24305
24306
24307
24308
24309
24310
24311
24312
24313
24314
24315
24316
24317
24318
24319
24320
24321
24322
24323
24324
24325
24326
24327
24328
24329
24330
24331
24332
24333
24334
24335
24336
24337
24338
24339
24340
24341
24342
24343
24344
24345
24346
24347
24348
24349
24350
24351
24352
24353
24354
24355
24356
24357
24358
24359
24360
24361
24362
24363
24364
24365
24366
24367
24368
24369
24370
24371
24372
24373
24374
24375
24376
24377
24378
24379
24380
24381
24382
24383
24384
24385
24386
24387
24388
24389
24390
24391
24392
24393
24394
24395
24396
24397
24398
24399
24400
24401
24402
24403
24404
24405
24406
24407
24408
24409
24410
24411
24412
24413
24414
24415
24416
24417
24418
24419
24420
24421
24422
24423
24424
24425
24426
24427
24428
24429
24430
24431
24432
24433
24434
24435
24436
24437
24438
24439
24440
24441
24442
24443
24444
24445
24446
24447
24448
24449
24450
24451
24452
24453
24454
24455
24456
24457
24458
24459
24460
24461
24462
24463
24464
24465
24466
24467
24468
24469
24470
24471
24472
24473
24474
24475
24476
24477
24478
24479
24480
24481
24482
24483
24484
24485
24486
24487
24488
24489
24490
24491
24492
24493
24494
24495
24496
24497
24498
24499
24500
24501
24502
24503
24504
24505
24506
24507
24508
24509
24510
24511
24512
24513
24514
24515
24516
24517
24518
24519
24520
24521
24522
24523
24524
24525
24526
24527
24528
24529
24530
24531
24532
24533
24534
24535
24536
24537
24538
24539
24540
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
24558
24559
24560
24561
24562
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583
24584
24585
24586
24587
24588
24589
24590
24591
24592
24593
24594
24595
24596
24597
24598
24599
24600
24601
24602
24603
24604
24605
24606
24607
24608
24609
24610
24611
24612
24613
24614
24615
24616
24617
24618
24619
24620
24621
24622
24623
24624
24625
24626
24627
24628
24629
24630
24631
24632
24633
24634
24635
24636
24637
24638
24639
24640
24641
24642
24643
24644
24645
24646
24647
24648
24649
24650
24651
24652
24653
24654
24655
24656
24657
24658
24659
24660
24661
24662
24663
24664
24665
24666
24667
24668
24669
24670
24671
24672
24673
24674
24675
24676
24677
24678
24679
24680
24681
24682
24683
24684
24685
24686
24687
24688
24689
24690
24691
24692
24693
24694
24695
24696
24697
24698
24699
24700
24701
24702
24703
24704
24705
24706
24707
24708
24709
24710
24711
24712
24713
24714
24715
24716
24717
24718
24719
24720
24721
24722
24723
24724
24725
24726
24727
24728
24729
24730
24731
24732
24733
24734
24735
24736
24737
24738
24739
24740
24741
24742
24743
24744
24745
24746
24747
24748
24749
24750
24751
24752
24753
24754
24755
24756
24757
24758
24759
24760
24761
24762
24763
24764
24765
24766
24767
24768
24769
24770
24771
24772
24773
24774
24775
24776
24777
24778
24779
24780
24781
24782
24783
24784
24785
24786
24787
24788
24789
24790
24791
24792
24793
24794
24795
24796
24797
24798
24799
24800
24801
24802
24803
24804
24805
24806
24807
24808
24809
24810
24811
24812
24813
24814
24815
24816
24817
24818
24819
24820
24821
24822
24823
24824
24825
24826
24827
24828
24829
24830
24831
24832
24833
24834
24835
24836
24837
24838
24839
24840
24841
24842
24843
24844
24845
24846
24847
24848
24849
24850
24851
24852
24853
24854
24855
24856
24857
24858
24859
24860
24861
24862
24863
24864
24865
24866
24867
24868
24869
24870
24871
24872
24873
24874
24875
24876
24877
24878
24879
24880
24881
24882
24883
24884
24885
24886
24887
24888
24889
24890
24891
24892
24893
24894
24895
24896
24897
24898
24899
24900
24901
24902
24903
24904
24905
24906
24907
24908
24909
24910
24911
24912
24913
24914
24915
24916
24917
24918
24919
24920
24921
24922
24923
24924
24925
24926
24927
24928
24929
24930
24931
24932
24933
24934
24935
24936
24937
24938
24939
24940
24941
24942
24943
24944
24945
24946
24947
24948
24949
24950
24951
24952
24953
24954
24955
24956
24957
24958
24959
24960
24961
24962
24963
24964
24965
24966
24967
24968
24969
24970
24971
24972
24973
24974
24975
24976
24977
24978
24979
24980
24981
24982
24983
24984
24985
24986
24987
24988
24989
24990
24991
24992
24993
24994
24995
24996
24997
24998
24999
25000
25001
25002
25003
25004
25005
25006
25007
25008
25009
25010
25011
25012
25013
25014
25015
25016
25017
25018
25019
25020
25021
25022
25023
25024
25025
25026
25027
25028
25029
25030
25031
25032
25033
25034
25035
25036
25037
25038
25039
25040
25041
25042
25043
25044
25045
25046
25047
25048
25049
25050
25051
25052
25053
25054
25055
25056
25057
25058
25059
25060
25061
25062
25063
25064
25065
25066
25067
25068
25069
25070
25071
25072
25073
25074
25075
25076
25077
25078
25079
25080
25081
25082
25083
25084
25085
25086
25087
25088
25089
25090
25091
25092
25093
25094
25095
25096
25097
25098
25099
25100
25101
25102
25103
25104
25105
25106
25107
25108
25109
25110
25111
25112
25113
25114
25115
25116
25117
25118
25119
25120
25121
25122
25123
25124
25125
25126
25127
25128
25129
25130
25131
25132
25133
25134
25135
25136
25137
25138
25139
25140
25141
25142
25143
25144
25145
25146
25147
25148
25149
25150
25151
25152
25153
25154
25155
25156
25157
25158
25159
25160
25161
25162
25163
25164
25165
25166
25167
25168
25169
25170
25171
25172
25173
25174
25175
25176
25177
25178
25179
25180
25181
25182
25183
25184
25185
25186
25187
25188
25189
25190
25191
25192
25193
25194
25195
25196
25197
25198
25199
25200
25201
25202
25203
25204
25205
25206
25207
25208
25209
25210
25211
25212
25213
25214
25215
25216
25217
25218
25219
25220
25221
25222
25223
25224
25225
25226
25227
25228
25229
25230
25231
25232
25233
25234
25235
25236
25237
25238
25239
25240
25241
25242
25243
25244
25245
25246
25247
25248
25249
25250
25251
25252
25253
25254
25255
25256
25257
25258
25259
25260
25261
25262
25263
25264
25265
25266
25267
25268
25269
25270
25271
25272
25273
25274
25275
25276
25277
25278
25279
25280
25281
25282
25283
25284
25285
25286
25287
25288
25289
25290
25291
25292
25293
25294
25295
25296
25297
25298
25299
25300
25301
25302
25303
25304
25305
25306
25307
25308
25309
25310
25311
25312
25313
25314
25315
25316
25317
25318
25319
25320
25321
25322
25323
25324
25325
25326
25327
25328
25329
25330
25331
25332
25333
25334
25335
25336
25337
25338
25339
25340
25341
25342
25343
25344
25345
25346
25347
25348
25349
25350
25351
25352
25353
25354
25355
25356
25357
25358
25359
25360
25361
25362
25363
25364
25365
25366
25367
25368
25369
25370
25371
25372
25373
25374
25375
25376
25377
25378
25379
25380
25381
25382
25383
25384
25385
25386
25387
25388
25389
25390
25391
25392
25393
25394
25395
25396
25397
25398
25399
25400
25401
25402
25403
25404
25405
25406
25407
25408
25409
25410
25411
25412
25413
25414
25415
25416
25417
25418
25419
25420
25421
25422
25423
25424
25425
25426
25427
25428
25429
25430
25431
25432
25433
25434
25435
25436
25437
25438
25439
25440
25441
25442
25443
25444
25445
25446
25447
25448
25449
25450
25451
25452
25453
25454
25455
25456
25457
25458
25459
25460
25461
25462
25463
25464
25465
25466
25467
25468
25469
25470
25471
25472
25473
25474
25475
25476
25477
25478
25479
25480
25481
25482
25483
25484
25485
25486
25487
25488
25489
25490
25491
25492
25493
25494
25495
25496
25497
25498
25499
25500
25501
25502
25503
25504
25505
25506
25507
25508
25509
25510
25511
25512
25513
25514
25515
25516
25517
25518
25519
25520
25521
25522
25523
25524
25525
25526
25527
25528
25529
25530
25531
25532
25533
25534
25535
25536
25537
25538
25539
25540
25541
25542
25543
25544
25545
25546
25547
25548
25549
25550
25551
25552
25553
25554
25555
25556
25557
25558
25559
25560
25561
25562
25563
25564
25565
25566
25567
25568
25569
25570
25571
25572
25573
25574
25575
25576
25577
25578
25579
25580
25581
25582
25583
25584
25585
25586
25587
25588
25589
25590
25591
25592
25593
25594
25595
25596
25597
25598
25599
25600
25601
25602
25603
25604
25605
25606
25607
25608
25609
25610
25611
25612
25613
25614
25615
25616
25617
25618
25619
25620
25621
25622
25623
25624
25625
25626
25627
25628
25629
25630
25631
25632
25633
25634
25635
25636
25637
25638
25639
25640
25641
25642
25643
25644
25645
25646
25647
25648
25649
25650
25651
25652
25653
25654
25655
25656
25657
25658
25659
25660
25661
25662
25663
25664
25665
25666
25667
25668
25669
25670
25671
25672
25673
25674
25675
25676
25677
25678
25679
25680
25681
25682
25683
25684
25685
25686
25687
25688
25689
25690
25691
25692
25693
25694
25695
25696
25697
25698
25699
25700
25701
25702
25703
25704
25705
25706
25707
25708
25709
25710
25711
25712
25713
25714
25715
25716
25717
25718
25719
25720
25721
25722
25723
25724
25725
25726
25727
25728
25729
25730
25731
25732
25733
25734
25735
25736
25737
25738
25739
25740
25741
25742
25743
25744
25745
25746
25747
25748
25749
25750
25751
25752
25753
25754
25755
25756
25757
25758
25759
25760
25761
25762
25763
25764
25765
25766
25767
25768
25769
25770
25771
25772
25773
25774
25775
25776
25777
25778
25779
25780
25781
25782
25783
25784
25785
25786
25787
25788
25789
25790
25791
25792
25793
25794
25795
25796
25797
25798
25799
25800
25801
25802
25803
25804
25805
25806
25807
25808
25809
25810
25811
25812
25813
25814
25815
25816
25817
25818
25819
25820
25821
25822
25823
25824
25825
25826
25827
25828
25829
25830
25831
25832
25833
25834
25835
25836
25837
25838
25839
25840
25841
25842
25843
25844
25845
25846
25847
25848
25849
25850
25851
25852
25853
25854
25855
25856
25857
25858
25859
25860
25861
25862
25863
25864
25865
25866
25867
25868
25869
25870
25871
25872
25873
25874
25875
25876
25877
25878
25879
25880
25881
25882
25883
25884
25885
25886
25887
25888
25889
25890
25891
25892
25893
25894
25895
25896
25897
25898
25899
25900
25901
25902
25903
25904
25905
25906
25907
25908
25909
25910
25911
25912
25913
25914
25915
25916
25917
25918
25919
25920
25921
25922
25923
25924
25925
25926
25927
25928
25929
25930
25931
25932
25933
25934
25935
25936
25937
25938
25939
25940
25941
25942
25943
25944
25945
25946
25947
25948
25949
25950
25951
25952
25953
25954
25955
25956
25957
25958
25959
25960
25961
25962
25963
25964
25965
25966
25967
25968
25969
25970
25971
25972
25973
25974
25975
25976
25977
25978
25979
25980
25981
25982
25983
25984
25985
25986
25987
25988
25989
25990
25991
25992
25993
25994
25995
25996
25997
25998
25999
26000
26001
26002
26003
26004
26005
26006
26007
26008
26009
26010
26011
26012
26013
26014
26015
26016
26017
26018
26019
26020
26021
26022
26023
26024
26025
26026
26027
26028
26029
26030
26031
26032
26033
26034
26035
26036
26037
26038
26039
26040
26041
26042
26043
26044
26045
26046
26047
26048
26049
26050
26051
26052
26053
26054
26055
26056
26057
26058
26059
26060
26061
26062
26063
26064
26065
26066
26067
26068
26069
26070
26071
26072
26073
26074
26075
26076
26077
26078
26079
26080
26081
26082
26083
26084
26085
26086
26087
26088
26089
26090
26091
26092
26093
26094
26095
26096
26097
26098
26099
26100
26101
26102
26103
26104
26105
26106
26107
26108
26109
26110
26111
26112
26113
26114
26115
26116
26117
26118
26119
26120
26121
26122
26123
26124
26125
26126
26127
26128
26129
26130
26131
26132
26133
26134
26135
26136
26137
26138
26139
26140
26141
26142
26143
26144
26145
26146
26147
26148
26149
26150
26151
26152
26153
26154
26155
26156
26157
26158
26159
26160
26161
26162
26163
26164
26165
26166
26167
26168
26169
26170
26171
26172
26173
26174
26175
26176
26177
26178
26179
26180
26181
26182
26183
26184
26185
26186
26187
26188
26189
26190
26191
26192
26193
26194
26195
26196
26197
26198
26199
26200
26201
26202
26203
26204
26205
26206
26207
26208
26209
26210
26211
26212
26213
26214
26215
26216
26217
26218
26219
26220
26221
26222
26223
26224
26225
26226
26227
26228
26229
26230
26231
26232
26233
26234
26235
26236
26237
26238
26239
26240
26241
26242
26243
26244
26245
26246
26247
26248
26249
26250
26251
26252
26253
26254
26255
26256
26257
26258
26259
26260
26261
26262
26263
26264
26265
26266
26267
26268
26269
26270
26271
26272
26273
26274
26275
26276
26277
26278
26279
26280
26281
26282
26283
26284
26285
26286
26287
26288
26289
26290
26291
26292
26293
26294
26295
26296
26297
26298
26299
26300
26301
26302
26303
26304
26305
26306
26307
26308
26309
26310
26311
26312
26313
26314
26315
26316
26317
26318
26319
26320
26321
26322
26323
26324
26325
26326
26327
26328
26329
26330
26331
26332
26333
26334
26335
26336
26337
26338
26339
26340
26341
26342
26343
26344
26345
26346
26347
26348
26349
26350
26351
26352
26353
26354
26355
26356
26357
26358
26359
26360
26361
26362
26363
26364
26365
26366
26367
26368
26369
26370
26371
26372
26373
26374
26375
26376
26377
26378
26379
26380
26381
26382
26383
26384
26385
26386
26387
26388
26389
26390
26391
26392
26393
26394
26395
26396
26397
26398
26399
26400
26401
26402
26403
26404
26405
26406
26407
26408
26409
26410
26411
26412
26413
26414
26415
26416
26417
26418
26419
26420
26421
26422
26423
26424
26425
26426
26427
26428
26429
26430
26431
26432
26433
26434
26435
26436
26437
26438
26439
26440
26441
26442
26443
26444
26445
26446
26447
26448
26449
26450
26451
26452
26453
26454
26455
26456
26457
26458
26459
26460
26461
26462
26463
26464
26465
26466
26467
26468
26469
26470
26471
26472
26473
26474
26475
26476
26477
26478
26479
26480
26481
26482
26483
26484
26485
26486
26487
26488
26489
26490
26491
26492
26493
26494
26495
26496
26497
26498
26499
26500
26501
26502
26503
26504
26505
26506
26507
26508
26509
26510
26511
26512
26513
26514
26515
26516
26517
26518
26519
26520
26521
26522
26523
26524
26525
26526
26527
26528
26529
26530
26531
26532
26533
26534
26535
26536
26537
26538
26539
26540
26541
26542
26543
26544
26545
26546
26547
26548
26549
26550
26551
26552
26553
26554
26555
26556
26557
26558
26559
26560
26561
26562
26563
26564
26565
26566
26567
26568
26569
26570
26571
26572
26573
26574
26575
26576
26577
26578
26579
26580
26581
26582
26583
26584
26585
26586
26587
26588
26589
26590
26591
26592
26593
26594
26595
26596
26597
26598
26599
26600
26601
26602
26603
26604
26605
26606
26607
26608
26609
26610
26611
26612
26613
26614
26615
26616
26617
26618
26619
26620
26621
26622
26623
26624
26625
26626
26627
26628
26629
26630
26631
26632
26633
26634
26635
26636
26637
26638
26639
26640
26641
26642
26643
26644
26645
26646
26647
26648
26649
26650
26651
26652
26653
26654
26655
26656
26657
26658
26659
26660
26661
26662
26663
26664
26665
26666
26667
26668
26669
26670
26671
26672
26673
26674
26675
26676
26677
26678
26679
26680
26681
26682
26683
26684
26685
26686
26687
26688
26689
26690
26691
26692
26693
26694
26695
26696
26697
26698
26699
26700
26701
26702
26703
26704
26705
26706
26707
26708
26709
26710
26711
26712
26713
26714
26715
26716
26717
26718
26719
26720
26721
26722
26723
26724
26725
26726
26727
26728
26729
26730
26731
26732
26733
26734
26735
26736
26737
26738
26739
26740
26741
26742
26743
26744
26745
26746
26747
26748
26749
26750
26751
26752
26753
26754
26755
26756
26757
26758
26759
26760
26761
26762
26763
26764
26765
26766
26767
26768
26769
26770
26771
26772
26773
26774
26775
26776
26777
26778
26779
26780
26781
26782
26783
26784
26785
26786
26787
26788
26789
26790
26791
26792
26793
26794
26795
26796
26797
26798
26799
26800
26801
26802
26803
26804
26805
26806
26807
26808
26809
26810
26811
26812
26813
26814
26815
26816
26817
26818
26819
26820
26821
26822
26823
26824
26825
26826
26827
26828
26829
26830
26831
26832
26833
26834
26835
26836
26837
26838
26839
26840
26841
26842
26843
26844
26845
26846
26847
26848
26849
26850
26851
26852
26853
26854
26855
26856
26857
26858
26859
26860
26861
26862
26863
26864
26865
26866
26867
26868
26869
26870
26871
26872
26873
26874
26875
26876
26877
26878
26879
26880
26881
26882
26883
26884
26885
26886
26887
26888
26889
26890
26891
26892
26893
26894
26895
26896
26897
26898
26899
26900
26901
26902
26903
26904
26905
26906
26907
26908
26909
26910
26911
26912
26913
26914
26915
26916
26917
26918
26919
26920
26921
26922
26923
26924
26925
26926
26927
26928
26929
26930
26931
26932
26933
26934
26935
26936
26937
26938
26939
26940
26941
26942
26943
26944
26945
26946
26947
26948
26949
26950
26951
26952
26953
26954
26955
26956
26957
26958
26959
26960
26961
26962
26963
26964
26965
26966
26967
26968
26969
26970
26971
26972
26973
26974
26975
26976
26977
26978
26979
26980
26981
26982
26983
26984
26985
26986
26987
26988
26989
26990
26991
26992
26993
26994
26995
26996
26997
26998
26999
27000
27001
27002
27003
27004
27005
27006
27007
27008
27009
27010
27011
27012
27013
27014
27015
27016
27017
27018
27019
27020
27021
27022
27023
27024
27025
27026
27027
27028
27029
27030
27031
27032
27033
27034
27035
27036
27037
27038
27039
27040
27041
27042
27043
27044
27045
27046
27047
27048
27049
27050
27051
27052
27053
27054
27055
27056
27057
27058
27059
27060
27061
27062
27063
27064
27065
27066
27067
27068
27069
27070
27071
27072
27073
27074
27075
27076
27077
27078
27079
27080
27081
27082
27083
27084
27085
27086
27087
27088
27089
27090
27091
27092
27093
27094
27095
27096
27097
27098
27099
27100
27101
27102
27103
27104
27105
27106
27107
27108
27109
27110
27111
27112
27113
27114
27115
27116
27117
27118
27119
27120
27121
27122
27123
27124
27125
27126
27127
27128
27129
27130
27131
27132
27133
27134
27135
27136
27137
27138
27139
27140
27141
27142
27143
27144
27145
27146
27147
27148
27149
27150
27151
27152
27153
27154
27155
27156
27157
27158
27159
27160
27161
27162
27163
27164
27165
27166
27167
27168
27169
27170
27171
27172
27173
27174
27175
27176
27177
27178
27179
27180
27181
27182
27183
27184
27185
27186
27187
27188
27189
27190
27191
27192
27193
27194
27195
27196
27197
27198
27199
27200
27201
27202
27203
27204
27205
27206
27207
27208
27209
27210
27211
27212
27213
27214
27215
27216
27217
27218
27219
27220
27221
27222
27223
27224
27225
27226
27227
27228
27229
27230
27231
27232
27233
27234
27235
27236
27237
27238
27239
27240
27241
27242
27243
27244
27245
27246
27247
27248
27249
27250
27251
27252
27253
27254
27255
27256
27257
27258
27259
27260
27261
27262
27263
27264
27265
27266
27267
27268
27269
27270
27271
27272
27273
27274
27275
27276
27277
27278
27279
27280
27281
27282
27283
27284
27285
27286
27287
27288
27289
27290
27291
27292
27293
27294
27295
27296
27297
27298
27299
27300
27301
27302
27303
27304
27305
27306
27307
27308
27309
27310
27311
27312
27313
27314
27315
27316
27317
27318
27319
27320
27321
27322
27323
27324
27325
27326
27327
27328
27329
27330
27331
27332
27333
27334
27335
27336
27337
27338
27339
27340
27341
27342
27343
27344
27345
27346
27347
27348
27349
27350
27351
27352
27353
27354
27355
27356
27357
27358
27359
27360
27361
27362
27363
27364
27365
27366
27367
27368
27369
27370
27371
27372
27373
27374
27375
27376
27377
27378
27379
27380
27381
27382
27383
27384
27385
27386
27387
27388
27389
27390
27391
27392
27393
27394
27395
27396
27397
27398
27399
27400
27401
27402
27403
27404
27405
27406
27407
27408
27409
27410
27411
27412
27413
27414
27415
27416
27417
27418
27419
27420
27421
27422
27423
27424
27425
27426
27427
27428
27429
27430
27431
27432
27433
27434
27435
27436
27437
27438
27439
27440
27441
27442
27443
27444
27445
27446
27447
27448
27449
27450
27451
27452
27453
27454
27455
27456
27457
27458
27459
27460
27461
27462
27463
27464
27465
27466
27467
27468
27469
27470
27471
27472
27473
27474
27475
27476
27477
27478
27479
27480
27481
27482
27483
27484
27485
27486
27487
27488
27489
27490
27491
27492
27493
27494
27495
27496
27497
27498
27499
27500
27501
27502
27503
27504
27505
27506
27507
27508
27509
27510
27511
27512
27513
27514
27515
27516
27517
27518
27519
27520
27521
27522
27523
27524
27525
27526
27527
27528
27529
27530
27531
27532
27533
27534
27535
27536
27537
27538
27539
27540
27541
27542
27543
27544
27545
27546
27547
27548
27549
27550
27551
27552
27553
27554
27555
27556
27557
27558
27559
27560
27561
27562
27563
27564
27565
27566
27567
27568
27569
27570
27571
27572
27573
27574
27575
27576
27577
27578
27579
27580
27581
27582
27583
27584
27585
27586
27587
27588
27589
27590
27591
27592
27593
27594
27595
27596
27597
27598
27599
27600
27601
27602
27603
27604
27605
27606
27607
27608
27609
27610
27611
27612
27613
27614
27615
27616
27617
27618
27619
27620
27621
27622
27623
27624
27625
27626
27627
27628
27629
27630
27631
27632
27633
27634
27635
27636
27637
27638
27639
27640
27641
27642
27643
27644
27645
27646
27647
27648
27649
27650
27651
27652
27653
27654
27655
27656
27657
27658
27659
27660
27661
27662
27663
27664
27665
27666
27667
27668
27669
27670
27671
27672
27673
27674
27675
27676
27677
27678
27679
27680
27681
27682
27683
27684
27685
27686
27687
27688
27689
27690
27691
27692
27693
27694
27695
27696
27697
27698
27699
27700
27701
27702
27703
27704
27705
27706
27707
27708
27709
27710
27711
27712
27713
27714
27715
27716
27717
27718
27719
27720
27721
27722
27723
27724
27725
27726
27727
27728
27729
27730
27731
27732
27733
27734
27735
27736
27737
27738
27739
27740
27741
27742
27743
27744
27745
27746
27747
27748
27749
27750
27751
27752
27753
27754
27755
27756
27757
27758
27759
27760
27761
27762
27763
27764
27765
27766
27767
27768
27769
27770
27771
27772
27773
27774
27775
27776
27777
27778
27779
27780
27781
27782
27783
27784
27785
27786
27787
27788
27789
27790
27791
27792
27793
27794
27795
27796
27797
27798
27799
27800
27801
27802
27803
27804
27805
27806
27807
27808
27809
27810
27811
27812
27813
27814
27815
27816
27817
27818
27819
27820
27821
27822
27823
27824
27825
27826
27827
27828
27829
27830
27831
27832
27833
27834
27835
27836
27837
27838
27839
27840
27841
27842
27843
27844
27845
27846
27847
27848
27849
27850
27851
27852
27853
27854
27855
27856
27857
27858
27859
27860
27861
27862
27863
27864
27865
27866
27867
27868
27869
27870
27871
27872
27873
27874
27875
27876
27877
27878
27879
27880
27881
27882
27883
27884
27885
27886
27887
27888
27889
27890
27891
27892
27893
27894
27895
27896
27897
27898
27899
27900
27901
27902
27903
27904
27905
27906
27907
27908
27909
27910
27911
27912
27913
27914
27915
27916
27917
27918
27919
27920
27921
27922
27923
27924
27925
27926
27927
27928
27929
27930
27931
27932
27933
27934
27935
27936
27937
27938
27939
27940
27941
27942
27943
27944
27945
27946
27947
27948
27949
27950
27951
27952
27953
27954
27955
27956
27957
27958
27959
27960
27961
27962
27963
27964
27965
27966
27967
27968
27969
27970
27971
27972
27973
27974
27975
27976
27977
27978
27979
27980
27981
27982
27983
27984
27985
27986
27987
27988
27989
27990
27991
27992
27993
27994
27995
27996
27997
27998
27999
28000
28001
28002
28003
28004
28005
28006
28007
28008
28009
28010
28011
28012
28013
28014
28015
28016
28017
28018
28019
28020
28021
28022
28023
28024
28025
28026
28027
28028
28029
28030
28031
28032
28033
28034
28035
28036
28037
28038
28039
28040
28041
28042
28043
28044
28045
28046
28047
28048
28049
28050
28051
28052
28053
28054
28055
28056
28057
28058
28059
28060
28061
28062
28063
28064
28065
28066
28067
28068
28069
28070
28071
28072
28073
28074
28075
28076
28077
28078
28079
28080
28081
28082
28083
28084
28085
28086
28087
28088
28089
28090
28091
28092
28093
28094
28095
28096
28097
28098
28099
28100
28101
28102
28103
28104
28105
28106
28107
28108
28109
28110
28111
28112
28113
28114
28115
28116
28117
28118
28119
28120
28121
28122
28123
28124
28125
28126
28127
28128
28129
28130
28131
28132
28133
28134
28135
28136
28137
28138
28139
28140
28141
28142
28143
28144
28145
28146
28147
28148
28149
28150
28151
28152
28153
28154
28155
28156
28157
28158
28159
28160
28161
28162
28163
28164
28165
28166
28167
28168
28169
28170
28171
28172
28173
28174
28175
28176
28177
28178
28179
28180
28181
28182
28183
28184
28185
28186
28187
28188
28189
28190
28191
28192
28193
28194
28195
28196
28197
28198
28199
28200
28201
28202
28203
28204
28205
28206
28207
28208
28209
28210
28211
28212
28213
28214
28215
28216
28217
28218
28219
28220
28221
28222
28223
28224
28225
28226
28227
28228
28229
28230
28231
28232
28233
28234
28235
28236
28237
28238
28239
28240
28241
28242
28243
28244
28245
28246
28247
28248
28249
28250
28251
28252
28253
28254
28255
28256
28257
28258
28259
28260
28261
28262
28263
28264
28265
28266
28267
28268
28269
28270
28271
28272
28273
28274
28275
28276
28277
28278
28279
28280
28281
28282
28283
28284
28285
28286
28287
28288
28289
28290
28291
28292
28293
28294
28295
28296
28297
28298
28299
28300
28301
28302
28303
28304
28305
28306
28307
28308
28309
28310
28311
28312
28313
28314
28315
28316
28317
28318
28319
28320
28321
28322
28323
28324
28325
28326
28327
28328
28329
28330
28331
28332
28333
28334
28335
28336
28337
28338
28339
28340
28341
28342
28343
28344
28345
28346
28347
28348
28349
28350
28351
28352
28353
28354
28355
28356
28357
28358
28359
28360
28361
28362
28363
28364
28365
28366
28367
28368
28369
28370
28371
28372
28373
28374
28375
28376
28377
28378
28379
28380
28381
28382
28383
28384
28385
28386
28387
28388
28389
28390
28391
28392
28393
28394
28395
28396
28397
28398
28399
28400
28401
28402
28403
28404
28405
28406
28407
28408
28409
28410
28411
28412
28413
28414
28415
28416
28417
28418
28419
28420
28421
28422
28423
28424
28425
28426
28427
28428
28429
28430
28431
28432
28433
28434
28435
28436
28437
28438
28439
28440
28441
28442
28443
28444
28445
28446
28447
28448
28449
28450
28451
28452
28453
28454
28455
28456
28457
28458
28459
28460
28461
28462
28463
28464
28465
28466
28467
28468
28469
28470
28471
28472
28473
28474
28475
28476
28477
28478
28479
28480
28481
28482
28483
28484
28485
28486
28487
28488
28489
28490
28491
28492
28493
28494
28495
28496
28497
28498
28499
28500
28501
28502
28503
28504
28505
28506
28507
28508
28509
28510
28511
28512
28513
28514
28515
28516
28517
28518
28519
28520
28521
28522
28523
28524
28525
28526
28527
28528
28529
28530
28531
28532
28533
28534
28535
28536
28537
28538
28539
28540
28541
28542
28543
28544
28545
28546
28547
28548
28549
28550
28551
28552
28553
28554
28555
28556
28557
28558
28559
28560
28561
28562
28563
28564
28565
28566
28567
28568
28569
28570
28571
28572
28573
28574
28575
28576
28577
28578
28579
28580
28581
28582
28583
28584
28585
28586
28587
28588
28589
28590
28591
28592
28593
28594
28595
28596
28597
28598
28599
28600
28601
28602
28603
28604
28605
28606
28607
28608
28609
28610
28611
28612
28613
28614
28615
28616
28617
28618
28619
28620
28621
28622
28623
28624
28625
28626
28627
28628
28629
28630
28631
28632
28633
28634
28635
28636
28637
28638
28639
28640
28641
28642
28643
28644
28645
28646
28647
28648
28649
28650
28651
28652
28653
28654
28655
28656
28657
28658
28659
28660
28661
28662
28663
28664
28665
28666
28667
28668
28669
28670
28671
28672
28673
28674
28675
28676
28677
28678
28679
28680
28681
28682
28683
28684
28685
28686
28687
28688
28689
28690
28691
28692
28693
28694
28695
28696
28697
28698
28699
28700
28701
28702
28703
28704
28705
28706
28707
28708
28709
28710
28711
28712
28713
28714
28715
28716
28717
28718
28719
28720
28721
28722
28723
28724
28725
28726
28727
28728
28729
28730
28731
28732
28733
28734
28735
28736
28737
28738
28739
28740
28741
28742
28743
28744
28745
28746
28747
28748
28749
28750
28751
28752
28753
28754
28755
28756
28757
28758
28759
28760
28761
28762
28763
28764
28765
28766
28767
28768
28769
28770
28771
28772
28773
28774
28775
28776
28777
28778
28779
28780
28781
28782
28783
28784
28785
28786
28787
28788
28789
28790
28791
28792
28793
28794
28795
28796
28797
28798
28799
28800
28801
28802
28803
28804
28805
28806
28807
28808
28809
28810
28811
28812
28813
28814
28815
28816
28817
28818
28819
28820
28821
28822
28823
28824
28825
28826
28827
28828
28829
28830
28831
28832
28833
28834
28835
28836
28837
28838
28839
28840
28841
28842
28843
28844
28845
28846
28847
28848
28849
28850
28851
28852
28853
28854
28855
28856
28857
28858
28859
28860
28861
28862
28863
28864
28865
28866
28867
28868
28869
28870
28871
28872
28873
28874
28875
28876
28877
28878
28879
28880
28881
28882
28883
28884
28885
28886
28887
28888
28889
28890
28891
28892
28893
28894
28895
28896
28897
28898
28899
28900
28901
28902
28903
28904
28905
28906
28907
28908
28909
28910
28911
28912
28913
28914
28915
28916
28917
28918
28919
28920
28921
28922
28923
28924
28925
28926
28927
28928
28929
28930
28931
28932
28933
28934
28935
28936
28937
28938
28939
28940
28941
28942
28943
28944
28945
28946
28947
28948
28949
28950
28951
28952
28953
28954
28955
28956
28957
28958
28959
28960
28961
28962
28963
28964
28965
28966
28967
28968
28969
28970
28971
28972
28973
28974
28975
28976
28977
28978
28979
28980
28981
28982
28983
28984
28985
28986
28987
28988
28989
28990
28991
28992
28993
28994
28995
28996
28997
28998
28999
29000
29001
29002
29003
29004
29005
29006
29007
29008
29009
29010
29011
29012
29013
29014
29015
29016
29017
29018
29019
29020
29021
29022
29023
29024
29025
29026
29027
29028
29029
29030
29031
29032
29033
29034
29035
29036
29037
29038
29039
29040
29041
29042
29043
29044
29045
29046
29047
29048
29049
29050
29051
29052
29053
29054
29055
29056
29057
29058
29059
29060
29061
29062
29063
29064
29065
29066
29067
29068
29069
29070
29071
29072
29073
29074
29075
29076
29077
29078
29079
29080
29081
29082
29083
29084
29085
29086
29087
29088
29089
29090
29091
29092
29093
29094
29095
29096
29097
29098
29099
29100
29101
29102
29103
29104
29105
29106
29107
29108
29109
29110
29111
29112
29113
29114
29115
29116
29117
29118
29119
29120
29121
29122
29123
29124
29125
29126
29127
29128
29129
29130
29131
29132
29133
29134
29135
29136
29137
29138
29139
29140
29141
29142
29143
29144
29145
29146
29147
29148
29149
29150
29151
29152
29153
29154
29155
29156
29157
29158
29159
29160
29161
29162
29163
29164
29165
29166
29167
29168
29169
29170
29171
29172
29173
29174
29175
29176
29177
29178
29179
29180
29181
29182
29183
29184
29185
29186
29187
29188
29189
29190
29191
29192
29193
29194
29195
29196
29197
29198
29199
29200
29201
29202
29203
29204
29205
29206
29207
29208
29209
29210
29211
29212
29213
29214
29215
29216
29217
29218
29219
29220
29221
29222
29223
29224
29225
29226
29227
29228
29229
29230
29231
29232
29233
29234
29235
29236
29237
29238
29239
29240
29241
29242
29243
29244
29245
29246
29247
29248
29249
29250
29251
29252
29253
29254
29255
29256
29257
29258
29259
29260
29261
29262
29263
29264
29265
29266
29267
29268
29269
29270
29271
29272
29273
29274
29275
29276
29277
29278
29279
29280
29281
29282
29283
29284
29285
29286
29287
29288
29289
29290
29291
29292
29293
29294
29295
29296
29297
29298
29299
29300
29301
29302
29303
29304
29305
29306
29307
29308
29309
29310
29311
29312
29313
29314
29315
29316
29317
29318
29319
29320
29321
29322
29323
29324
29325
29326
29327
29328
29329
29330
29331
29332
29333
29334
29335
29336
29337
29338
29339
29340
29341
29342
29343
29344
29345
29346
29347
29348
29349
29350
29351
29352
29353
29354
29355
29356
29357
29358
29359
29360
29361
29362
29363
29364
29365
29366
29367
29368
29369
29370
29371
29372
29373
29374
29375
29376
29377
29378
29379
29380
29381
29382
29383
29384
29385
29386
29387
29388
29389
29390
29391
29392
29393
29394
29395
29396
29397
29398
29399
29400
29401
29402
29403
29404
29405
29406
29407
29408
29409
29410
29411
29412
29413
29414
29415
29416
29417
29418
29419
29420
29421
29422
29423
29424
29425
29426
29427
29428
29429
29430
29431
29432
29433
29434
29435
29436
29437
29438
29439
29440
29441
29442
29443
29444
29445
29446
29447
29448
29449
29450
29451
29452
29453
29454
29455
29456
29457
29458
29459
29460
29461
29462
29463
29464
29465
29466
29467
29468
29469
29470
29471
29472
29473
29474
29475
29476
29477
29478
29479
29480
29481
29482
29483
29484
29485
29486
29487
29488
29489
29490
29491
29492
29493
29494
29495
29496
29497
29498
29499
29500
29501
29502
29503
29504
29505
29506
29507
29508
29509
29510
29511
29512
29513
29514
29515
29516
29517
29518
29519
29520
29521
29522
29523
29524
29525
29526
29527
29528
29529
29530
29531
29532
29533
29534
29535
29536
29537
29538
29539
29540
29541
29542
29543
29544
29545
29546
29547
29548
29549
29550
29551
29552
29553
29554
29555
29556
29557
29558
29559
29560
29561
29562
29563
29564
29565
29566
29567
29568
29569
29570
29571
29572
29573
29574
29575
29576
29577
29578
29579
29580
29581
29582
29583
29584
29585
29586
29587
29588
29589
29590
29591
29592
29593
29594
29595
29596
29597
29598
29599
29600
29601
29602
29603
29604
29605
29606
29607
29608
29609
29610
29611
29612
29613
29614
29615
29616
29617
29618
29619
29620
29621
29622
29623
29624
29625
29626
29627
29628
29629
29630
29631
29632
29633
29634
29635
29636
29637
29638
29639
29640
29641
29642
29643
29644
29645
29646
29647
29648
29649
29650
29651
29652
29653
29654
29655
29656
29657
29658
29659
29660
29661
29662
29663
29664
29665
29666
29667
29668
29669
29670
29671
29672
29673
29674
29675
29676
29677
29678
29679
29680
29681
29682
29683
29684
29685
29686
29687
29688
29689
29690
29691
29692
29693
29694
29695
29696
29697
29698
29699
29700
29701
29702
29703
29704
29705
29706
29707
29708
29709
29710
29711
29712
29713
29714
29715
29716
29717
29718
29719
29720
29721
29722
29723
29724
29725
29726
29727
29728
29729
29730
29731
29732
29733
29734
29735
29736
29737
29738
29739
29740
29741
29742
29743
29744
29745
29746
29747
29748
29749
29750
29751
29752
29753
29754
29755
29756
29757
29758
29759
29760
29761
29762
29763
29764
29765
29766
29767
29768
29769
29770
29771
29772
29773
29774
29775
29776
29777
29778
29779
29780
29781
29782
29783
29784
29785
29786
29787
29788
29789
29790
29791
29792
29793
29794
29795
29796
29797
29798
29799
29800
29801
29802
29803
29804
29805
29806
29807
29808
29809
29810
29811
29812
29813
29814
29815
29816
29817
29818
29819
29820
29821
29822
29823
29824
29825
29826
29827
29828
29829
29830
29831
29832
29833
29834
29835
29836
29837
29838
29839
29840
29841
29842
29843
29844
29845
29846
29847
29848
29849
29850
29851
29852
29853
29854
29855
29856
29857
29858
29859
29860
29861
29862
29863
29864
29865
29866
29867
29868
29869
29870
29871
29872
29873
29874
29875
29876
29877
29878
29879
29880
29881
29882
29883
29884
29885
29886
29887
29888
29889
29890
29891
29892
29893
29894
29895
29896
29897
29898
29899
29900
29901
29902
29903
29904
29905
29906
29907
29908
29909
29910
29911
29912
29913
29914
29915
29916
29917
29918
29919
29920
29921
29922
29923
29924
29925
29926
29927
29928
29929
29930
29931
29932
29933
29934
29935
29936
29937
29938
29939
29940
29941
29942
29943
29944
29945
29946
29947
29948
29949
29950
29951
29952
29953
29954
29955
29956
29957
29958
29959
29960
29961
29962
29963
29964
29965
29966
29967
29968
29969
29970
29971
29972
29973
29974
29975
29976
29977
29978
29979
29980
29981
29982
29983
29984
29985
29986
29987
29988
29989
29990
29991
29992
29993
29994
29995
29996
29997
29998
29999
30000
30001
30002
30003
30004
30005
30006
30007
30008
30009
30010
30011
30012
30013
30014
30015
30016
30017
30018
30019
30020
30021
30022
30023
30024
30025
30026
30027
30028
30029
30030
30031
30032
30033
30034
30035
30036
30037
30038
30039
30040
30041
30042
30043
30044
30045
30046
30047
30048
30049
30050
30051
30052
30053
30054
30055
30056
30057
30058
30059
30060
30061
30062
30063
30064
30065
30066
30067
30068
30069
30070
30071
30072
30073
30074
30075
30076
30077
30078
30079
30080
30081
30082
30083
30084
30085
30086
30087
30088
30089
30090
30091
30092
30093
30094
30095
30096
30097
30098
30099
30100
30101
30102
30103
30104
30105
30106
30107
30108
30109
30110
30111
30112
30113
30114
30115
30116
30117
30118
30119
30120
30121
30122
30123
30124
30125
30126
30127
30128
30129
30130
30131
30132
30133
30134
30135
30136
30137
30138
30139
30140
30141
30142
30143
30144
30145
30146
30147
30148
30149
30150
30151
30152
30153
30154
30155
30156
30157
30158
30159
30160
30161
30162
30163
30164
30165
30166
30167
30168
30169
30170
30171
30172
30173
30174
30175
30176
30177
30178
30179
30180
30181
30182
30183
30184
30185
30186
30187
30188
30189
30190
30191
30192
30193
30194
30195
30196
30197
30198
30199
30200
30201
30202
30203
30204
30205
30206
30207
30208
30209
30210
30211
30212
30213
30214
30215
30216
30217
30218
30219
30220
30221
30222
30223
30224
30225
30226
30227
30228
30229
30230
30231
30232
30233
30234
30235
30236
30237
30238
30239
30240
30241
30242
30243
30244
30245
30246
30247
30248
30249
30250
30251
30252
30253
30254
30255
30256
30257
30258
30259
30260
30261
30262
30263
30264
30265
30266
30267
30268
30269
30270
30271
30272
30273
30274
30275
30276
30277
30278
30279
30280
30281
30282
30283
30284
30285
30286
30287
30288
30289
30290
30291
30292
30293
30294
30295
30296
30297
30298
30299
30300
30301
30302
30303
30304
30305
30306
30307
30308
30309
30310
30311
30312
30313
30314
30315
30316
30317
30318
30319
30320
30321
30322
30323
30324
30325
30326
30327
30328
30329
30330
30331
30332
30333
30334
30335
30336
30337
30338
30339
30340
30341
30342
30343
30344
30345
30346
30347
30348
30349
30350
30351
30352
30353
30354
30355
30356
30357
30358
30359
30360
30361
30362
30363
30364
30365
30366
30367
30368
30369
30370
30371
30372
30373
30374
30375
30376
30377
30378
30379
30380
30381
30382
30383
30384
30385
30386
30387
30388
30389
30390
30391
30392
30393
30394
30395
30396
30397
30398
30399
30400
30401
30402
30403
30404
30405
30406
30407
30408
30409
30410
30411
30412
30413
30414
30415
30416
30417
30418
30419
30420
30421
30422
30423
30424
30425
30426
30427
30428
30429
30430
30431
30432
30433
30434
30435
30436
30437
30438
30439
30440
30441
30442
30443
30444
30445
30446
30447
30448
30449
30450
30451
30452
30453
30454
30455
30456
30457
30458
30459
30460
30461
30462
30463
30464
30465
30466
30467
30468
30469
30470
30471
30472
30473
30474
30475
30476
30477
30478
30479
30480
30481
30482
30483
30484
30485
30486
30487
30488
30489
30490
30491
30492
30493
30494
30495
30496
30497
30498
30499
30500
30501
30502
30503
30504
30505
30506
30507
30508
30509
30510
30511
30512
30513
30514
30515
30516
30517
30518
30519
30520
30521
30522
30523
30524
30525
30526
30527
30528
30529
30530
30531
30532
30533
30534
30535
30536
30537
30538
30539
30540
30541
30542
30543
30544
30545
30546
30547
30548
30549
30550
30551
30552
30553
30554
30555
30556
30557
30558
30559
30560
30561
30562
30563
30564
30565
30566
30567
30568
30569
30570
30571
30572
30573
30574
30575
30576
30577
30578
30579
30580
30581
30582
30583
30584
30585
30586
30587
30588
30589
30590
30591
30592
30593
30594
30595
30596
30597
30598
30599
30600
30601
30602
30603
30604
30605
30606
30607
30608
30609
30610
30611
30612
30613
30614
30615
30616
30617
30618
30619
30620
30621
30622
30623
30624
30625
30626
30627
30628
30629
30630
30631
30632
30633
30634
30635
30636
30637
30638
30639
30640
30641
30642
30643
30644
30645
30646
30647
30648
30649
30650
30651
30652
30653
30654
30655
30656
30657
30658
30659
30660
30661
30662
30663
30664
30665
30666
30667
30668
30669
30670
30671
30672
30673
30674
30675
30676
30677
30678
30679
30680
30681
30682
30683
30684
30685
30686
30687
30688
30689
30690
30691
30692
30693
30694
30695
30696
30697
30698
30699
30700
30701
30702
30703
30704
30705
30706
30707
30708
30709
30710
30711
30712
30713
30714
30715
30716
30717
30718
30719
30720
30721
30722
30723
30724
30725
30726
30727
30728
30729
30730
30731
30732
30733
30734
30735
30736
30737
30738
30739
30740
30741
30742
30743
30744
30745
30746
30747
30748
30749
30750
30751
30752
30753
30754
30755
30756
30757
30758
30759
30760
30761
30762
30763
30764
30765
30766
30767
30768
30769
30770
30771
30772
30773
30774
30775
30776
30777
30778
30779
30780
30781
30782
30783
30784
30785
30786
30787
30788
30789
30790
30791
30792
30793
30794
30795
30796
30797
30798
30799
30800
30801
30802
30803
30804
30805
30806
30807
30808
30809
30810
30811
30812
30813
30814
30815
30816
30817
30818
30819
30820
30821
30822
30823
30824
30825
30826
30827
30828
30829
30830
30831
30832
30833
30834
30835
30836
30837
30838
30839
30840
30841
30842
30843
30844
30845
30846
30847
30848
30849
30850
30851
30852
30853
30854
30855
30856
30857
30858
30859
30860
30861
30862
30863
30864
30865
30866
30867
30868
30869
30870
30871
30872
30873
30874
30875
30876
30877
30878
30879
30880
30881
30882
30883
30884
30885
30886
30887
30888
30889
30890
30891
30892
30893
30894
30895
30896
30897
30898
30899
30900
30901
30902
30903
30904
30905
30906
30907
30908
30909
30910
30911
30912
30913
30914
30915
30916
30917
30918
30919
30920
30921
30922
30923
30924
30925
30926
30927
30928
30929
30930
30931
30932
30933
30934
30935
30936
30937
30938
30939
30940
30941
30942
30943
30944
30945
30946
30947
30948
30949
30950
30951
30952
30953
30954
30955
30956
30957
30958
30959
30960
30961
30962
30963
30964
30965
30966
30967
30968
30969
30970
30971
30972
30973
30974
30975
30976
30977
30978
30979
30980
30981
30982
30983
30984
30985
30986
30987
30988
30989
30990
30991
30992
30993
30994
30995
30996
30997
30998
30999
31000
31001
31002
31003
31004
31005
31006
31007
31008
31009
31010
31011
31012
31013
31014
31015
31016
31017
31018
31019
31020
31021
31022
31023
31024
31025
31026
31027
31028
31029
31030
31031
31032
31033
31034
31035
31036
31037
31038
31039
31040
31041
31042
31043
31044
31045
31046
31047
31048
31049
31050
31051
31052
31053
31054
31055
31056
31057
31058
31059
31060
31061
31062
31063
31064
31065
31066
31067
31068
31069
31070
31071
31072
31073
31074
31075
31076
31077
31078
31079
31080
31081
31082
31083
31084
31085
31086
31087
31088
31089
31090
31091
31092
31093
31094
31095
31096
31097
31098
31099
31100
31101
31102
31103
31104
31105
31106
31107
31108
31109
31110
31111
31112
31113
31114
31115
31116
31117
31118
31119
31120
31121
31122
31123
31124
31125
31126
31127
31128
31129
31130
31131
31132
31133
31134
31135
31136
31137
31138
31139
31140
31141
31142
31143
31144
31145
31146
31147
31148
31149
31150
31151
31152
31153
31154
31155
31156
31157
31158
31159
31160
31161
31162
31163
31164
31165
31166
31167
31168
31169
31170
31171
31172
31173
31174
31175
31176
31177
31178
31179
31180
31181
31182
31183
31184
31185
31186
31187
31188
31189
31190
31191
31192
31193
31194
31195
31196
31197
31198
31199
31200
31201
31202
31203
31204
31205
31206
31207
31208
31209
31210
31211
31212
31213
31214
31215
31216
31217
31218
31219
31220
31221
31222
31223
31224
31225
31226
31227
31228
31229
31230
31231
31232
31233
31234
31235
31236
31237
31238
31239
31240
31241
31242
31243
31244
31245
31246
31247
31248
31249
31250
31251
31252
31253
31254
31255
31256
31257
31258
31259
31260
31261
31262
31263
31264
31265
31266
31267
31268
31269
31270
31271
31272
31273
31274
31275
31276
31277
31278
31279
31280
31281
31282
31283
31284
31285
31286
31287
31288
31289
31290
31291
31292
31293
31294
31295
31296
31297
31298
31299
31300
31301
31302
31303
31304
31305
31306
31307
31308
31309
31310
31311
31312
31313
31314
31315
31316
31317
31318
31319
31320
31321
31322
31323
31324
31325
31326
31327
31328
31329
31330
31331
31332
31333
31334
31335
31336
31337
31338
31339
31340
31341
31342
31343
31344
31345
31346
31347
31348
31349
31350
31351
31352
31353
31354
31355
31356
31357
31358
31359
31360
31361
31362
31363
31364
31365
31366
31367
31368
31369
31370
31371
31372
31373
31374
31375
31376
31377
31378
31379
31380
31381
31382
31383
31384
31385
31386
31387
31388
31389
31390
31391
31392
31393
31394
31395
31396
31397
31398
31399
31400
31401
31402
31403
31404
31405
31406
31407
31408
31409
31410
31411
31412
31413
31414
31415
31416
31417
31418
31419
31420
31421
31422
31423
31424
31425
31426
31427
31428
31429
31430
31431
31432
31433
31434
31435
31436
31437
31438
31439
31440
31441
31442
31443
31444
31445
31446
31447
31448
31449
31450
31451
31452
31453
31454
31455
31456
31457
31458
31459
31460
31461
31462
31463
31464
31465
31466
31467
31468
31469
31470
31471
31472
31473
31474
31475
31476
31477
31478
31479
31480
31481
31482
31483
31484
31485
31486
31487
31488
31489
31490
31491
31492
31493
31494
31495
31496
31497
31498
31499
31500
31501
31502
31503
31504
31505
31506
31507
31508
31509
31510
31511
31512
31513
31514
31515
31516
31517
31518
31519
31520
31521
31522
31523
31524
31525
31526
31527
31528
31529
31530
31531
31532
31533
31534
31535
31536
31537
31538
31539
31540
31541
31542
31543
31544
31545
31546
31547
31548
31549
31550
31551
31552
31553
31554
31555
31556
31557
31558
31559
31560
31561
31562
31563
31564
31565
31566
31567
31568
31569
31570
31571
31572
31573
31574
31575
31576
31577
31578
31579
31580
31581
31582
31583
31584
31585
31586
31587
31588
31589
31590
31591
31592
31593
31594
31595
31596
31597
31598
31599
31600
31601
31602
31603
31604
31605
31606
31607
31608
31609
31610
31611
31612
31613
31614
31615
31616
31617
31618
31619
31620
31621
31622
31623
31624
31625
31626
31627
31628
31629
31630
31631
31632
31633
31634
31635
31636
31637
31638
31639
31640
31641
31642
31643
31644
31645
31646
31647
31648
31649
31650
31651
31652
31653
31654
31655
31656
31657
31658
31659
31660
31661
31662
31663
31664
31665
31666
31667
31668
31669
31670
31671
31672
31673
31674
31675
31676
31677
31678
31679
31680
31681
31682
31683
31684
31685
31686
31687
31688
31689
31690
31691
31692
31693
31694
31695
31696
31697
31698
31699
31700
31701
31702
31703
31704
31705
31706
31707
31708
31709
31710
31711
31712
31713
31714
31715
31716
31717
31718
31719
31720
31721
31722
31723
31724
31725
31726
31727
31728
31729
31730
31731
31732
31733
31734
31735
31736
31737
31738
31739
31740
31741
31742
31743
31744
31745
31746
31747
31748
31749
31750
31751
31752
31753
31754
31755
31756
31757
31758
31759
31760
31761
31762
31763
31764
31765
31766
31767
31768
31769
31770
31771
31772
31773
31774
31775
31776
31777
31778
31779
31780
31781
31782
31783
31784
31785
31786
31787
31788
31789
31790
31791
31792
31793
31794
31795
31796
31797
31798
31799
31800
31801
31802
31803
31804
31805
31806
31807
31808
31809
31810
31811
31812
31813
31814
31815
31816
31817
31818
31819
31820
31821
31822
31823
31824
31825
31826
31827
31828
31829
31830
31831
31832
31833
31834
31835
31836
31837
31838
31839
31840
31841
31842
31843
31844
31845
31846
31847
31848
31849
31850
31851
31852
31853
31854
31855
31856
31857
31858
31859
31860
31861
31862
31863
31864
31865
31866
31867
31868
31869
31870
31871
31872
31873
31874
31875
31876
31877
31878
31879
31880
31881
31882
31883
31884
31885
31886
31887
31888
31889
31890
31891
31892
31893
31894
31895
31896
31897
31898
31899
31900
31901
31902
31903
31904
31905
31906
31907
31908
31909
31910
31911
31912
31913
31914
31915
31916
31917
31918
31919
31920
31921
31922
31923
31924
31925
31926
31927
31928
31929
31930
31931
31932
31933
31934
31935
31936
31937
31938
31939
31940
31941
31942
31943
31944
31945
31946
31947
31948
31949
31950
31951
31952
31953
31954
31955
31956
31957
31958
31959
31960
31961
31962
31963
31964
31965
31966
31967
31968
31969
31970
31971
31972
31973
31974
31975
31976
31977
31978
31979
31980
31981
31982
31983
31984
31985
31986
31987
31988
31989
31990
31991
31992
31993
31994
31995
31996
31997
31998
31999
32000
32001
32002
32003
32004
32005
32006
32007
32008
32009
32010
32011
32012
32013
32014
32015
32016
32017
32018
32019
32020
32021
32022
32023
32024
32025
32026
32027
32028
32029
32030
32031
32032
32033
32034
32035
32036
32037
32038
32039
32040
32041
32042
32043
32044
32045
32046
32047
32048
32049
32050
32051
32052
32053
32054
32055
32056
32057
32058
32059
32060
32061
32062
32063
32064
32065
32066
32067
32068
32069
32070
32071
32072
32073
32074
32075
32076
32077
32078
32079
32080
32081
32082
32083
32084
32085
32086
32087
32088
32089
32090
32091
32092
32093
32094
32095
32096
32097
32098
32099
32100
32101
32102
32103
32104
32105
32106
32107
32108
32109
32110
32111
32112
32113
32114
32115
32116
32117
32118
32119
32120
32121
32122
32123
32124
32125
32126
32127
32128
32129
32130
32131
32132
32133
32134
32135
32136
32137
32138
32139
32140
32141
32142
32143
32144
32145
32146
32147
32148
32149
32150
32151
32152
32153
32154
32155
32156
32157
32158
32159
32160
32161
32162
32163
32164
32165
32166
32167
32168
32169
32170
32171
32172
32173
32174
32175
32176
32177
32178
32179
32180
32181
32182
32183
32184
32185
32186
32187
32188
32189
32190
32191
32192
32193
32194
32195
32196
32197
32198
32199
32200
32201
32202
32203
32204
32205
32206
32207
32208
32209
32210
32211
32212
32213
32214
32215
32216
32217
32218
32219
32220
32221
32222
32223
32224
32225
32226
32227
32228
32229
32230
32231
32232
32233
32234
32235
32236
32237
32238
32239
32240
32241
32242
32243
32244
32245
32246
32247
32248
32249
32250
32251
32252
32253
32254
32255
32256
32257
32258
32259
32260
32261
32262
32263
32264
32265
32266
32267
32268
32269
32270
32271
32272
32273
32274
32275
32276
32277
32278
32279
32280
32281
32282
32283
32284
32285
32286
32287
32288
32289
32290
32291
32292
32293
32294
32295
32296
32297
32298
32299
32300
32301
32302
32303
32304
32305
32306
32307
32308
32309
32310
32311
32312
32313
32314
32315
32316
32317
32318
32319
32320
32321
32322
32323
32324
32325
32326
32327
32328
32329
32330
32331
32332
32333
32334
32335
32336
32337
32338
32339
32340
32341
32342
32343
32344
32345
32346
32347
32348
32349
32350
32351
32352
32353
32354
32355
32356
32357
32358
32359
32360
32361
32362
32363
32364
32365
32366
32367
32368
32369
32370
32371
32372
32373
32374
32375
32376
32377
32378
32379
32380
32381
32382
32383
32384
32385
32386
32387
32388
32389
32390
32391
32392
32393
32394
32395
32396
32397
32398
32399
32400
32401
32402
32403
32404
32405
32406
32407
32408
32409
32410
32411
32412
32413
32414
32415
32416
32417
32418
32419
32420
32421
32422
32423
32424
32425
32426
32427
32428
32429
32430
32431
32432
32433
32434
32435
32436
32437
32438
32439
32440
32441
32442
32443
32444
32445
32446
32447
32448
32449
32450
32451
32452
32453
32454
32455
32456
32457
32458
32459
32460
32461
32462
32463
32464
32465
32466
32467
32468
32469
32470
32471
32472
32473
32474
32475
32476
32477
32478
32479
32480
32481
32482
32483
32484
32485
32486
32487
32488
32489
32490
32491
32492
32493
32494
32495
32496
32497
32498
32499
32500
32501
32502
32503
32504
32505
32506
32507
32508
32509
32510
32511
32512
32513
32514
32515
32516
32517
32518
32519
32520
32521
32522
32523
32524
32525
32526
32527
32528
32529
32530
32531
32532
32533
32534
32535
32536
32537
32538
32539
32540
32541
32542
32543
32544
32545
32546
32547
32548
32549
32550
32551
32552
32553
32554
32555
32556
32557
32558
32559
32560
32561
32562
32563
32564
32565
32566
32567
32568
32569
32570
32571
32572
32573
32574
32575
32576
32577
32578
32579
32580
32581
32582
32583
32584
32585
32586
32587
32588
32589
32590
32591
32592
32593
32594
32595
32596
32597
32598
32599
32600
32601
32602
32603
32604
32605
32606
32607
32608
32609
32610
32611
32612
32613
32614
32615
32616
32617
32618
32619
32620
32621
32622
32623
32624
32625
32626
32627
32628
32629
32630
32631
32632
32633
32634
32635
32636
32637
32638
32639
32640
32641
32642
32643
32644
32645
32646
32647
32648
32649
32650
32651
32652
32653
32654
32655
32656
32657
32658
32659
32660
32661
32662
32663
32664
32665
32666
32667
32668
32669
32670
32671
32672
32673
32674
32675
32676
32677
32678
32679
32680
32681
32682
32683
32684
32685
32686
32687
32688
32689
32690
32691
32692
32693
32694
32695
32696
32697
32698
32699
32700
32701
32702
32703
32704
32705
32706
32707
32708
32709
32710
32711
32712
32713
32714
32715
32716
32717
32718
32719
32720
32721
32722
32723
32724
32725
32726
32727
32728
32729
32730
32731
32732
32733
32734
32735
32736
32737
32738
32739
32740
32741
32742
32743
32744
32745
32746
32747
32748
32749
32750
32751
32752
32753
32754
32755
32756
32757
32758
32759
32760
32761
32762
32763
32764
32765
32766
32767
32768
32769
32770
32771
32772
32773
32774
32775
32776
32777
32778
32779
32780
32781
32782
32783
32784
32785
32786
32787
32788
32789
32790
32791
32792
32793
32794
32795
32796
32797
32798
32799
32800
32801
32802
32803
32804
32805
32806
32807
32808
32809
32810
32811
32812
32813
32814
32815
32816
32817
32818
32819
32820
32821
32822
32823
32824
32825
32826
32827
32828
32829
32830
32831
32832
32833
32834
32835
32836
32837
32838
32839
32840
32841
32842
32843
32844
32845
32846
32847
32848
32849
32850
32851
32852
32853
32854
32855
32856
32857
32858
32859
32860
32861
32862
32863
32864
32865
32866
32867
32868
32869
32870
32871
32872
32873
32874
32875
32876
32877
32878
32879
32880
32881
32882
32883
32884
32885
32886
32887
32888
32889
32890
32891
32892
32893
32894
32895
32896
32897
32898
32899
32900
32901
32902
32903
32904
32905
32906
32907
32908
32909
32910
32911
32912
32913
32914
32915
32916
32917
32918
32919
32920
32921
32922
32923
32924
32925
32926
32927
32928
32929
32930
32931
32932
32933
32934
32935
32936
32937
32938
32939
32940
32941
32942
32943
32944
32945
32946
32947
32948
32949
32950
32951
32952
32953
32954
32955
32956
32957
32958
32959
32960
32961
32962
32963
32964
32965
32966
32967
32968
32969
32970
32971
32972
32973
32974
32975
32976
32977
32978
32979
32980
32981
32982
32983
32984
32985
32986
32987
32988
32989
32990
32991
32992
32993
32994
32995
32996
32997
32998
32999
33000
33001
33002
33003
33004
33005
33006
33007
33008
33009
33010
33011
33012
33013
33014
33015
33016
33017
33018
33019
33020
33021
33022
33023
33024
33025
33026
33027
33028
33029
33030
33031
33032
33033
33034
33035
33036
33037
33038
33039
33040
33041
33042
33043
33044
33045
33046
33047
33048
33049
33050
33051
33052
33053
33054
33055
33056
33057
33058
33059
33060
33061
33062
33063
33064
33065
33066
33067
33068
33069
33070
33071
33072
33073
33074
33075
33076
33077
33078
33079
33080
33081
33082
33083
33084
33085
33086
33087
33088
33089
33090
33091
33092
33093
33094
33095
33096
33097
33098
33099
33100
33101
33102
33103
33104
33105
33106
33107
33108
33109
33110
33111
33112
33113
33114
33115
33116
33117
33118
33119
33120
33121
33122
33123
33124
33125
33126
33127
33128
33129
33130
33131
33132
33133
33134
33135
33136
33137
33138
33139
33140
33141
33142
33143
33144
33145
33146
33147
33148
33149
33150
33151
33152
33153
33154
33155
33156
33157
33158
33159
33160
33161
33162
33163
33164
33165
33166
33167
33168
33169
33170
33171
33172
33173
33174
33175
33176
33177
33178
33179
33180
33181
33182
33183
33184
33185
33186
33187
33188
33189
33190
33191
33192
33193
33194
33195
33196
33197
33198
33199
33200
33201
33202
33203
33204
33205
33206
33207
33208
33209
33210
33211
33212
33213
33214
33215
33216
33217
33218
33219
33220
33221
33222
33223
33224
33225
33226
33227
33228
33229
33230
33231
33232
33233
33234
33235
33236
33237
33238
33239
33240
33241
33242
33243
33244
33245
33246
33247
33248
33249
33250
33251
33252
33253
33254
33255
33256
33257
33258
33259
33260
33261
33262
33263
33264
33265
33266
33267
33268
33269
33270
33271
33272
33273
33274
33275
33276
33277
33278
33279
33280
33281
33282
33283
33284
33285
33286
33287
33288
33289
33290
33291
33292
33293
33294
33295
33296
33297
33298
33299
33300
33301
33302
33303
33304
33305
33306
33307
33308
33309
33310
33311
33312
33313
33314
33315
33316
33317
33318
33319
33320
33321
33322
33323
33324
33325
33326
33327
33328
33329
33330
33331
33332
33333
33334
33335
33336
33337
33338
33339
33340
33341
33342
33343
33344
33345
33346
33347
33348
33349
33350
33351
33352
33353
33354
33355
33356
33357
33358
33359
33360
33361
33362
33363
33364
33365
33366
33367
33368
33369
33370
33371
33372
33373
33374
33375
33376
33377
33378
33379
33380
33381
33382
33383
33384
33385
33386
33387
33388
33389
33390
33391
33392
33393
33394
33395
33396
33397
33398
33399
33400
33401
33402
33403
33404
33405
33406
33407
33408
33409
33410
33411
33412
33413
33414
33415
33416
33417
33418
33419
33420
33421
33422
33423
33424
33425
33426
33427
33428
33429
33430
33431
33432
33433
33434
33435
33436
33437
33438
33439
33440
33441
33442
33443
33444
33445
33446
33447
33448
33449
33450
33451
33452
33453
33454
33455
33456
33457
33458
33459
33460
33461
33462
33463
33464
33465
33466
33467
33468
33469
33470
33471
33472
33473
33474
33475
33476
33477
33478
33479
33480
33481
33482
33483
33484
33485
33486
33487
33488
33489
33490
33491
33492
33493
33494
33495
33496
33497
33498
33499
33500
33501
33502
33503
33504
33505
33506
33507
33508
33509
33510
33511
33512
33513
33514
33515
33516
33517
33518
33519
33520
33521
33522
33523
33524
33525
33526
33527
33528
33529
33530
33531
33532
33533
33534
33535
33536
33537
33538
33539
33540
33541
33542
33543
33544
33545
33546
33547
33548
33549
33550
33551
33552
33553
33554
33555
33556
33557
33558
33559
33560
33561
33562
33563
33564
33565
33566
33567
33568
33569
33570
33571
33572
33573
33574
33575
33576
33577
33578
33579
33580
33581
33582
33583
33584
33585
33586
33587
33588
33589
33590
33591
33592
33593
33594
33595
33596
33597
33598
33599
33600
33601
33602
33603
33604
33605
33606
33607
33608
33609
33610
33611
33612
33613
33614
33615
33616
33617
33618
33619
33620
33621
33622
33623
33624
33625
33626
33627
33628
33629
33630
33631
33632
33633
33634
33635
33636
33637
33638
33639
33640
33641
33642
33643
33644
33645
33646
33647
33648
33649
33650
33651
33652
33653
33654
33655
33656
33657
33658
33659
33660
33661
33662
33663
33664
33665
33666
33667
33668
33669
33670
33671
33672
33673
33674
33675
33676
33677
33678
33679
33680
33681
33682
33683
33684
33685
33686
33687
33688
33689
33690
33691
33692
33693
33694
33695
33696
33697
33698
33699
33700
33701
33702
33703
33704
33705
33706
33707
33708
33709
33710
33711
33712
33713
33714
33715
33716
33717
33718
33719
33720
33721
33722
33723
33724
33725
33726
33727
33728
33729
33730
33731
33732
33733
33734
33735
33736
33737
33738
33739
33740
33741
33742
33743
33744
33745
33746
33747
33748
33749
33750
33751
33752
33753
33754
33755
33756
33757
33758
33759
33760
33761
33762
33763
33764
33765
33766
33767
33768
33769
33770
33771
33772
33773
33774
33775
33776
33777
33778
33779
33780
33781
33782
33783
33784
33785
33786
33787
33788
33789
33790
33791
33792
33793
33794
33795
33796
33797
33798
33799
33800
33801
33802
33803
33804
33805
33806
33807
33808
33809
33810
33811
33812
33813
33814
33815
33816
33817
33818
33819
33820
33821
33822
33823
33824
33825
33826
33827
33828
33829
33830
33831
33832
33833
33834
33835
33836
33837
33838
33839
33840
33841
33842
33843
33844
33845
33846
33847
33848
33849
33850
33851
33852
33853
33854
33855
33856
33857
33858
33859
33860
33861
33862
33863
33864
33865
33866
33867
33868
33869
33870
33871
33872
33873
33874
33875
33876
33877
33878
33879
33880
33881
33882
33883
33884
33885
33886
33887
33888
33889
33890
33891
33892
33893
33894
33895
33896
33897
33898
33899
33900
33901
33902
33903
33904
33905
33906
33907
33908
33909
33910
33911
33912
33913
33914
33915
33916
33917
33918
33919
33920
33921
33922
33923
33924
33925
33926
33927
33928
33929
33930
33931
33932
33933
33934
33935
33936
33937
33938
33939
33940
33941
33942
33943
33944
33945
33946
33947
33948
33949
33950
33951
33952
33953
33954
33955
33956
33957
33958
33959
33960
33961
33962
33963
33964
33965
33966
33967
33968
33969
33970
33971
33972
33973
33974
33975
33976
33977
33978
33979
33980
33981
33982
33983
33984
33985
33986
33987
33988
33989
33990
33991
33992
33993
33994
33995
33996
33997
33998
33999
34000
34001
34002
34003
34004
34005
34006
34007
34008
34009
34010
34011
34012
34013
34014
34015
34016
34017
34018
34019
34020
34021
34022
34023
34024
34025
34026
34027
34028
34029
34030
34031
34032
34033
34034
34035
34036
34037
34038
34039
34040
34041
34042
34043
34044
34045
34046
34047
34048
34049
34050
34051
34052
34053
34054
34055
34056
34057
34058
34059
34060
34061
34062
34063
34064
34065
34066
34067
34068
34069
34070
34071
34072
34073
34074
34075
34076
34077
34078
34079
34080
34081
34082
34083
34084
34085
34086
34087
34088
34089
34090
34091
34092
34093
34094
34095
34096
34097
34098
34099
34100
34101
34102
34103
34104
34105
34106
34107
34108
34109
34110
34111
34112
34113
34114
34115
34116
34117
34118
34119
34120
34121
34122
34123
34124
34125
34126
34127
34128
34129
34130
34131
34132
34133
34134
34135
34136
34137
34138
34139
34140
34141
34142
34143
34144
34145
34146
34147
34148
34149
34150
34151
34152
34153
34154
34155
34156
34157
34158
34159
34160
34161
34162
34163
34164
34165
34166
34167
34168
34169
34170
34171
34172
34173
34174
34175
34176
34177
34178
34179
34180
34181
34182
34183
34184
34185
34186
34187
34188
34189
34190
34191
34192
34193
34194
34195
34196
34197
34198
34199
34200
34201
34202
34203
34204
34205
34206
34207
34208
34209
34210
34211
34212
34213
34214
34215
34216
34217
34218
34219
34220
34221
34222
34223
34224
34225
34226
34227
34228
34229
34230
34231
34232
34233
34234
34235
34236
34237
34238
34239
34240
34241
34242
34243
34244
34245
34246
34247
34248
34249
34250
34251
34252
34253
34254
34255
34256
34257
34258
34259
34260
34261
34262
34263
34264
34265
34266
34267
34268
34269
34270
34271
34272
34273
34274
34275
34276
34277
34278
34279
34280
34281
34282
34283
34284
34285
34286
34287
34288
34289
34290
34291
34292
34293
34294
34295
34296
34297
34298
34299
34300
34301
34302
34303
34304
34305
34306
34307
34308
34309
34310
34311
34312
34313
34314
34315
34316
34317
34318
34319
34320
34321
34322
34323
34324
34325
34326
34327
34328
34329
34330
34331
34332
34333
34334
34335
34336
34337
34338
34339
34340
34341
34342
34343
34344
34345
34346
34347
34348
34349
34350
34351
34352
34353
34354
34355
34356
34357
34358
34359
34360
34361
34362
34363
34364
34365
34366
34367
34368
34369
34370
34371
34372
34373
34374
34375
34376
34377
34378
34379
34380
34381
34382
34383
34384
34385
34386
34387
34388
34389
34390
34391
34392
34393
34394
34395
34396
34397
34398
34399
34400
34401
34402
34403
34404
34405
34406
34407
34408
34409
34410
34411
34412
34413
34414
34415
34416
34417
34418
34419
34420
34421
34422
34423
34424
34425
34426
34427
34428
34429
34430
34431
34432
34433
34434
34435
34436
34437
34438
34439
34440
34441
34442
34443
34444
34445
34446
34447
34448
34449
34450
34451
34452
34453
34454
34455
34456
34457
34458
34459
34460
34461
34462
34463
34464
34465
34466
34467
34468
34469
34470
34471
34472
34473
34474
34475
34476
34477
34478
34479
34480
34481
34482
34483
34484
34485
34486
34487
34488
34489
34490
34491
34492
34493
34494
34495
34496
34497
34498
34499
34500
34501
34502
34503
34504
34505
34506
34507
34508
34509
34510
34511
34512
34513
34514
34515
34516
34517
34518
34519
34520
34521
34522
34523
34524
34525
34526
34527
34528
34529
34530
34531
34532
34533
34534
34535
34536
34537
34538
34539
34540
34541
34542
34543
34544
34545
34546
34547
34548
34549
34550
34551
34552
34553
34554
34555
34556
34557
34558
34559
34560
34561
34562
34563
34564
34565
34566
34567
34568
34569
34570
34571
34572
34573
34574
34575
34576
34577
34578
34579
34580
34581
34582
34583
34584
34585
34586
34587
34588
34589
34590
34591
34592
34593
34594
34595
34596
34597
34598
34599
34600
34601
34602
34603
34604
34605
34606
34607
34608
34609
34610
34611
34612
34613
34614
34615
34616
34617
34618
34619
34620
34621
34622
34623
34624
34625
34626
34627
34628
34629
34630
34631
34632
34633
34634
34635
34636
34637
34638
34639
34640
34641
34642
34643
34644
34645
34646
34647
34648
34649
34650
34651
34652
34653
34654
34655
34656
34657
34658
34659
34660
34661
34662
34663
34664
34665
34666
34667
34668
34669
34670
34671
34672
34673
34674
34675
34676
34677
34678
34679
34680
34681
34682
34683
34684
34685
34686
34687
34688
34689
34690
34691
34692
34693
34694
34695
34696
34697
34698
34699
34700
34701
34702
34703
34704
34705
34706
34707
34708
34709
34710
34711
34712
34713
34714
34715
34716
34717
34718
34719
34720
34721
34722
34723
34724
34725
34726
34727
34728
34729
34730
34731
34732
34733
34734
34735
34736
34737
34738
34739
34740
34741
34742
34743
34744
34745
34746
34747
34748
34749
34750
34751
34752
34753
34754
34755
34756
34757
34758
34759
34760
34761
34762
34763
34764
34765
34766
34767
34768
34769
34770
34771
34772
34773
34774
34775
34776
34777
34778
34779
34780
34781
34782
34783
34784
34785
34786
34787
34788
34789
34790
34791
34792
34793
34794
34795
34796
34797
34798
34799
34800
34801
34802
34803
34804
34805
34806
34807
34808
34809
34810
34811
34812
34813
34814
34815
34816
34817
34818
34819
34820
34821
34822
34823
34824
34825
34826
34827
34828
34829
34830
34831
34832
34833
34834
34835
34836
34837
34838
34839
34840
34841
34842
34843
34844
34845
34846
34847
34848
34849
34850
34851
34852
34853
34854
34855
34856
34857
34858
34859
34860
34861
34862
34863
34864
34865
34866
34867
34868
34869
34870
34871
34872
34873
34874
34875
34876
34877
34878
34879
34880
34881
34882
34883
34884
34885
34886
34887
34888
34889
34890
34891
34892
34893
34894
34895
34896
34897
34898
34899
34900
34901
34902
34903
34904
34905
34906
34907
34908
34909
34910
34911
34912
34913
34914
34915
34916
34917
34918
34919
34920
34921
34922
34923
34924
34925
34926
34927
34928
34929
34930
34931
34932
34933
34934
34935
34936
34937
34938
34939
34940
34941
34942
34943
34944
34945
34946
34947
34948
34949
34950
34951
34952
34953
34954
34955
34956
34957
34958
34959
34960
34961
34962
34963
34964
34965
34966
34967
34968
34969
34970
34971
34972
34973
34974
34975
34976
34977
34978
34979
34980
34981
34982
34983
34984
34985
34986
34987
34988
34989
34990
34991
34992
34993
34994
34995
34996
34997
34998
34999
35000
35001
35002
35003
35004
35005
35006
35007
35008
35009
35010
35011
35012
35013
35014
35015
35016
35017
35018
35019
35020
35021
35022
35023
35024
35025
35026
35027
35028
35029
35030
35031
35032
35033
35034
35035
35036
35037
35038
35039
35040
35041
35042
35043
35044
35045
35046
35047
35048
35049
35050
35051
35052
35053
35054
35055
35056
35057
35058
35059
35060
35061
35062
35063
35064
35065
35066
35067
35068
35069
35070
35071
35072
35073
35074
35075
35076
35077
35078
35079
35080
35081
35082
35083
35084
35085
35086
35087
35088
35089
35090
35091
35092
35093
35094
35095
35096
35097
35098
35099
35100
35101
35102
35103
35104
35105
35106
35107
35108
35109
35110
35111
35112
35113
35114
35115
35116
35117
35118
35119
35120
35121
35122
35123
35124
35125
35126
35127
35128
35129
35130
35131
35132
35133
35134
35135
35136
35137
35138
35139
35140
35141
35142
35143
35144
35145
35146
35147
35148
35149
35150
35151
35152
35153
35154
35155
35156
35157
35158
35159
35160
35161
35162
35163
35164
35165
35166
35167
35168
35169
35170
35171
35172
35173
35174
35175
35176
35177
35178
35179
35180
35181
35182
35183
35184
35185
35186
35187
35188
35189
35190
35191
35192
35193
35194
35195
35196
35197
35198
35199
35200
35201
35202
35203
35204
35205
35206
35207
35208
35209
35210
35211
35212
35213
35214
35215
35216
35217
35218
35219
35220
35221
35222
35223
35224
35225
35226
35227
35228
35229
35230
35231
35232
35233
35234
35235
35236
35237
35238
35239
35240
35241
35242
35243
35244
35245
35246
35247
35248
35249
35250
35251
35252
35253
35254
35255
35256
35257
35258
35259
35260
35261
35262
35263
35264
35265
35266
35267
35268
35269
35270
35271
35272
35273
35274
35275
35276
35277
35278
35279
35280
35281
35282
35283
35284
35285
35286
35287
35288
35289
35290
35291
35292
35293
35294
35295
35296
35297
35298
35299
35300
35301
35302
35303
35304
35305
35306
35307
35308
35309
35310
35311
35312
35313
35314
35315
35316
35317
35318
35319
35320
35321
35322
35323
35324
35325
35326
35327
35328
35329
35330
35331
35332
35333
35334
35335
35336
35337
35338
35339
35340
35341
35342
35343
35344
35345
35346
35347
35348
35349
35350
35351
35352
35353
35354
35355
35356
35357
35358
35359
35360
35361
35362
35363
35364
35365
35366
35367
35368
35369
35370
35371
35372
35373
35374
35375
35376
35377
35378
35379
35380
35381
35382
35383
35384
35385
35386
35387
35388
35389
35390
35391
35392
35393
35394
35395
35396
35397
35398
35399
35400
35401
35402
35403
35404
35405
35406
35407
35408
35409
35410
35411
35412
35413
35414
35415
35416
35417
35418
35419
35420
35421
35422
35423
35424
35425
35426
35427
35428
35429
35430
35431
35432
35433
35434
35435
35436
35437
35438
35439
35440
35441
35442
35443
35444
35445
35446
35447
35448
35449
35450
35451
35452
35453
35454
35455
35456
35457
35458
35459
35460
35461
35462
35463
35464
35465
35466
35467
35468
35469
35470
35471
35472
35473
35474
35475
35476
35477
35478
35479
35480
35481
35482
35483
35484
35485
35486
35487
35488
35489
35490
35491
35492
35493
35494
35495
35496
35497
35498
35499
35500
35501
35502
35503
35504
35505
35506
35507
35508
35509
35510
35511
35512
35513
35514
35515
35516
35517
35518
35519
35520
35521
35522
35523
35524
35525
35526
35527
35528
35529
35530
35531
35532
35533
35534
35535
35536
35537
35538
35539
35540
35541
35542
35543
35544
35545
35546
35547
35548
35549
35550
35551
35552
35553
35554
35555
35556
35557
35558
35559
35560
35561
35562
35563
35564
35565
35566
35567
35568
35569
35570
35571
35572
35573
35574
35575
35576
35577
35578
35579
35580
35581
35582
35583
35584
35585
35586
35587
35588
35589
35590
35591
35592
35593
35594
35595
35596
35597
35598
35599
35600
35601
35602
35603
35604
35605
35606
35607
35608
35609
35610
35611
35612
35613
35614
35615
35616
35617
35618
35619
35620
35621
35622
35623
35624
35625
35626
35627
35628
35629
35630
35631
35632
35633
35634
35635
35636
35637
35638
35639
35640
35641
35642
35643
35644
35645
35646
35647
35648
35649
35650
35651
35652
35653
35654
35655
35656
35657
35658
35659
35660
35661
35662
35663
35664
35665
35666
35667
35668
35669
35670
35671
35672
35673
35674
35675
35676
35677
35678
35679
35680
35681
35682
35683
35684
35685
35686
35687
35688
35689
35690
35691
35692
35693
35694
35695
35696
35697
35698
35699
35700
35701
35702
35703
35704
35705
35706
35707
35708
35709
35710
35711
35712
35713
35714
35715
35716
35717
35718
35719
35720
35721
35722
35723
35724
35725
35726
35727
35728
35729
35730
35731
35732
35733
35734
35735
35736
35737
35738
35739
35740
35741
35742
35743
35744
35745
35746
35747
35748
35749
35750
35751
35752
35753
35754
35755
35756
35757
35758
35759
35760
35761
35762
35763
35764
35765
35766
35767
35768
35769
35770
35771
35772
35773
35774
35775
35776
35777
35778
35779
35780
35781
35782
35783
35784
35785
35786
35787
35788
35789
35790
35791
35792
35793
35794
35795
35796
35797
35798
35799
35800
35801
35802
35803
35804
35805
35806
35807
35808
35809
35810
35811
35812
35813
35814
35815
35816
35817
35818
35819
35820
35821
35822
35823
35824
35825
35826
35827
35828
35829
35830
35831
35832
35833
35834
35835
35836
35837
35838
35839
35840
35841
35842
35843
35844
35845
35846
35847
35848
35849
35850
35851
35852
35853
35854
35855
35856
35857
35858
35859
35860
35861
35862
35863
35864
35865
35866
35867
35868
35869
35870
35871
35872
35873
35874
35875
35876
35877
35878
35879
35880
35881
35882
35883
35884
35885
35886
35887
35888
35889
35890
35891
35892
35893
35894
35895
35896
35897
35898
35899
35900
35901
35902
35903
35904
35905
35906
35907
35908
35909
35910
35911
35912
35913
35914
35915
35916
35917
35918
35919
35920
35921
35922
35923
35924
35925
35926
35927
35928
35929
35930
35931
35932
35933
35934
35935
35936
35937
35938
35939
35940
35941
35942
35943
35944
35945
35946
35947
35948
35949
35950
35951
35952
35953
35954
35955
35956
35957
35958
35959
35960
35961
35962
35963
35964
35965
35966
35967
35968
35969
35970
35971
35972
35973
35974
35975
35976
35977
35978
35979
35980
35981
35982
35983
35984
35985
35986
35987
35988
35989
35990
35991
35992
35993
35994
35995
35996
35997
35998
35999
36000
36001
36002
36003
36004
36005
36006
36007
36008
36009
36010
36011
36012
36013
36014
36015
36016
36017
36018
36019
36020
36021
36022
36023
36024
36025
36026
36027
36028
36029
36030
36031
36032
36033
36034
36035
36036
36037
36038
36039
36040
36041
36042
36043
36044
36045
36046
36047
36048
36049
36050
36051
36052
36053
36054
36055
36056
36057
36058
36059
36060
36061
36062
36063
36064
36065
36066
36067
36068
36069
36070
36071
36072
36073
36074
36075
36076
36077
36078
36079
36080
36081
36082
36083
36084
36085
36086
36087
36088
36089
36090
36091
36092
36093
36094
36095
36096
36097
36098
36099
36100
36101
36102
36103
36104
36105
36106
36107
36108
36109
36110
36111
36112
36113
36114
36115
36116
36117
36118
36119
36120
36121
36122
36123
36124
36125
36126
36127
36128
36129
36130
36131
36132
36133
36134
36135
36136
36137
36138
36139
36140
36141
36142
36143
36144
36145
36146
36147
36148
36149
36150
36151
36152
36153
36154
36155
36156
36157
36158
36159
36160
36161
36162
36163
36164
36165
36166
36167
36168
36169
36170
36171
36172
36173
36174
36175
36176
36177
36178
36179
36180
36181
36182
36183
36184
36185
36186
36187
36188
36189
36190
36191
36192
36193
36194
36195
36196
36197
36198
36199
36200
36201
36202
36203
36204
36205
36206
36207
36208
36209
36210
36211
36212
36213
36214
36215
36216
36217
36218
36219
36220
36221
36222
36223
36224
36225
36226
36227
36228
36229
36230
36231
36232
36233
36234
36235
36236
36237
36238
36239
36240
36241
36242
36243
36244
36245
36246
36247
36248
36249
36250
36251
36252
36253
36254
36255
36256
36257
36258
36259
36260
36261
36262
36263
36264
36265
36266
36267
36268
36269
36270
36271
36272
36273
36274
36275
36276
36277
36278
36279
36280
36281
36282
36283
36284
36285
36286
36287
36288
36289
36290
36291
36292
36293
36294
36295
36296
36297
36298
36299
36300
36301
36302
36303
36304
36305
36306
36307
36308
36309
36310
36311
36312
36313
36314
36315
36316
36317
36318
36319
36320
36321
36322
36323
36324
36325
36326
36327
36328
36329
36330
36331
36332
36333
36334
36335
36336
36337
36338
36339
36340
36341
36342
36343
36344
36345
36346
36347
36348
36349
36350
36351
36352
36353
36354
36355
36356
36357
36358
36359
36360
36361
36362
36363
36364
36365
36366
36367
36368
36369
36370
36371
36372
36373
36374
36375
36376
36377
36378
36379
36380
36381
36382
36383
36384
36385
36386
36387
36388
36389
36390
36391
36392
36393
36394
36395
36396
36397
36398
36399
36400
36401
36402
36403
36404
36405
36406
36407
36408
36409
36410
36411
36412
36413
36414
36415
36416
36417
36418
36419
36420
36421
36422
36423
36424
36425
36426
36427
36428
36429
36430
36431
36432
36433
36434
36435
36436
36437
36438
36439
36440
36441
36442
36443
36444
36445
36446
36447
36448
36449
36450
36451
36452
36453
36454
36455
36456
36457
36458
36459
36460
36461
36462
36463
36464
36465
36466
36467
36468
36469
36470
36471
36472
36473
36474
36475
36476
36477
36478
36479
36480
36481
36482
36483
36484
36485
36486
36487
36488
36489
36490
36491
36492
36493
36494
36495
36496
36497
36498
36499
36500
36501
36502
36503
36504
36505
36506
36507
36508
36509
36510
36511
36512
36513
36514
36515
36516
36517
36518
36519
36520
36521
36522
36523
36524
36525
36526
36527
36528
36529
36530
36531
36532
36533
36534
36535
36536
36537
36538
36539
36540
36541
36542
36543
36544
36545
36546
36547
36548
36549
36550
36551
36552
36553
36554
36555
36556
36557
36558
36559
36560
36561
36562
36563
36564
36565
36566
36567
36568
36569
36570
36571
36572
36573
36574
36575
36576
36577
36578
36579
36580
36581
36582
36583
36584
36585
36586
36587
36588
36589
36590
36591
36592
36593
36594
36595
36596
36597
36598
36599
36600
36601
36602
36603
36604
36605
36606
36607
36608
36609
36610
36611
36612
36613
36614
36615
36616
36617
36618
36619
36620
36621
36622
36623
36624
36625
36626
36627
36628
36629
36630
36631
36632
36633
36634
36635
36636
36637
36638
36639
36640
36641
36642
36643
36644
36645
36646
36647
36648
36649
36650
36651
36652
36653
36654
36655
36656
36657
36658
36659
36660
36661
36662
36663
36664
36665
36666
36667
36668
36669
36670
36671
36672
36673
36674
36675
36676
36677
36678
36679
36680
36681
36682
36683
36684
36685
36686
36687
36688
36689
36690
36691
36692
36693
36694
36695
36696
36697
36698
36699
36700
36701
36702
36703
36704
36705
36706
36707
36708
36709
36710
36711
36712
36713
36714
36715
36716
36717
36718
36719
36720
36721
36722
36723
36724
36725
36726
36727
36728
36729
36730
36731
36732
36733
36734
36735
36736
36737
36738
36739
36740
36741
36742
36743
36744
36745
36746
36747
36748
36749
36750
36751
36752
36753
36754
36755
36756
36757
36758
36759
36760
36761
36762
36763
36764
36765
36766
36767
36768
36769
36770
36771
36772
36773
36774
36775
36776
36777
36778
36779
36780
36781
36782
36783
36784
36785
36786
36787
36788
36789
36790
36791
36792
36793
36794
36795
36796
36797
36798
36799
36800
36801
36802
36803
36804
36805
36806
36807
36808
36809
36810
36811
36812
36813
36814
36815
36816
36817
36818
36819
36820
36821
36822
36823
36824
36825
36826
36827
36828
36829
36830
36831
36832
36833
36834
36835
36836
36837
36838
36839
36840
36841
36842
36843
36844
36845
36846
36847
36848
36849
36850
36851
36852
36853
36854
36855
36856
36857
36858
36859
36860
36861
36862
36863
36864
36865
36866
36867
36868
36869
36870
36871
36872
36873
36874
36875
36876
36877
36878
36879
36880
36881
36882
36883
36884
36885
36886
36887
36888
36889
36890
36891
36892
36893
36894
36895
36896
36897
36898
36899
36900
36901
36902
36903
36904
36905
36906
36907
36908
36909
36910
36911
36912
36913
36914
36915
36916
36917
36918
36919
36920
36921
36922
36923
36924
36925
36926
36927
36928
36929
36930
36931
36932
36933
36934
36935
36936
36937
36938
36939
36940
36941
36942
36943
36944
36945
36946
36947
36948
36949
36950
36951
36952
36953
36954
36955
36956
36957
36958
36959
36960
36961
36962
36963
36964
36965
36966
36967
36968
36969
36970
36971
36972
36973
36974
36975
36976
36977
36978
36979
36980
36981
36982
36983
36984
36985
36986
36987
36988
36989
36990
36991
36992
36993
36994
36995
36996
36997
36998
36999
37000
37001
37002
37003
37004
37005
37006
37007
37008
37009
37010
37011
37012
37013
37014
37015
37016
37017
37018
37019
37020
37021
37022
37023
37024
37025
37026
37027
37028
37029
37030
37031
37032
37033
37034
37035
37036
37037
37038
37039
37040
37041
37042
37043
37044
37045
37046
37047
37048
37049
37050
37051
37052
37053
37054
37055
37056
37057
37058
37059
37060
37061
37062
37063
37064
37065
37066
37067
37068
37069
37070
37071
37072
37073
37074
37075
37076
37077
37078
37079
37080
37081
37082
37083
37084
37085
37086
37087
37088
37089
37090
37091
37092
37093
37094
37095
37096
37097
37098
37099
37100
37101
37102
37103
37104
37105
37106
37107
37108
37109
37110
37111
37112
37113
37114
37115
37116
37117
37118
37119
37120
37121
37122
37123
37124
37125
37126
37127
37128
37129
37130
37131
37132
37133
37134
37135
37136
37137
37138
37139
37140
37141
37142
37143
37144
37145
37146
37147
37148
37149
37150
37151
37152
37153
37154
37155
37156
37157
37158
37159
37160
37161
37162
37163
37164
37165
37166
37167
37168
37169
37170
37171
37172
37173
37174
37175
37176
37177
37178
37179
37180
37181
37182
37183
37184
37185
37186
37187
37188
37189
37190
37191
37192
37193
37194
37195
37196
37197
37198
37199
37200
37201
37202
37203
37204
37205
37206
37207
37208
37209
37210
37211
37212
37213
37214
37215
37216
37217
37218
37219
37220
37221
37222
37223
37224
37225
37226
37227
37228
37229
37230
37231
37232
37233
37234
37235
37236
37237
37238
37239
37240
37241
37242
37243
37244
37245
37246
37247
37248
37249
37250
37251
37252
37253
37254
37255
37256
37257
37258
37259
37260
37261
37262
37263
37264
37265
37266
37267
37268
37269
37270
37271
37272
37273
37274
37275
37276
37277
37278
37279
37280
37281
37282
37283
37284
37285
37286
37287
37288
37289
37290
37291
37292
37293
37294
37295
37296
37297
37298
37299
37300
37301
37302
37303
37304
37305
37306
37307
37308
37309
37310
37311
37312
37313
37314
37315
37316
37317
37318
37319
37320
37321
37322
37323
37324
37325
37326
37327
37328
37329
37330
37331
37332
37333
37334
37335
37336
37337
37338
37339
37340
37341
37342
37343
37344
37345
37346
37347
37348
37349
37350
37351
37352
37353
37354
37355
37356
37357
37358
37359
37360
37361
37362
37363
37364
37365
37366
37367
37368
37369
37370
37371
37372
37373
37374
37375
37376
37377
37378
37379
37380
37381
37382
37383
37384
37385
37386
37387
37388
37389
37390
37391
37392
37393
37394
37395
37396
37397
37398
37399
37400
37401
37402
37403
37404
37405
37406
37407
37408
37409
37410
37411
37412
37413
37414
37415
37416
37417
37418
37419
37420
37421
37422
37423
37424
37425
37426
37427
37428
37429
37430
37431
37432
37433
37434
37435
37436
37437
37438
37439
37440
37441
37442
37443
37444
37445
37446
37447
37448
37449
37450
37451
37452
37453
37454
37455
37456
37457
37458
37459
37460
37461
37462
37463
37464
37465
37466
37467
37468
37469
37470
37471
37472
37473
37474
37475
37476
37477
37478
37479
37480
37481
37482
37483
37484
37485
37486
37487
37488
37489
37490
37491
37492
37493
37494
37495
37496
37497
37498
37499
37500
37501
37502
37503
37504
37505
37506
37507
37508
37509
37510
37511
37512
37513
37514
37515
37516
37517
37518
37519
37520
37521
37522
37523
37524
37525
37526
37527
37528
37529
37530
37531
37532
37533
37534
37535
37536
37537
37538
37539
37540
37541
37542
37543
37544
37545
37546
37547
37548
37549
37550
37551
37552
37553
37554
37555
37556
37557
37558
37559
37560
37561
37562
37563
37564
37565
37566
37567
37568
37569
37570
37571
37572
37573
37574
37575
37576
37577
37578
37579
37580
37581
37582
37583
37584
37585
37586
37587
37588
37589
37590
37591
37592
37593
37594
37595
37596
37597
37598
37599
37600
37601
37602
37603
37604
37605
37606
37607
37608
37609
37610
37611
37612
37613
37614
37615
37616
37617
37618
37619
37620
37621
37622
37623
37624
37625
37626
37627
37628
37629
37630
37631
37632
37633
37634
37635
37636
37637
37638
37639
37640
37641
37642
37643
37644
37645
37646
37647
37648
37649
37650
37651
37652
37653
37654
37655
37656
37657
37658
37659
37660
37661
37662
37663
37664
37665
37666
37667
37668
37669
37670
37671
37672
37673
37674
37675
37676
37677
37678
37679
37680
37681
37682
37683
37684
37685
37686
37687
37688
37689
37690
37691
37692
37693
37694
37695
37696
37697
37698
37699
37700
37701
37702
37703
37704
37705
37706
37707
37708
37709
37710
37711
37712
37713
37714
37715
37716
37717
37718
37719
37720
37721
37722
37723
37724
37725
37726
37727
37728
37729
37730
37731
37732
37733
37734
37735
37736
37737
37738
37739
37740
37741
37742
37743
37744
37745
37746
37747
37748
37749
37750
37751
37752
37753
37754
37755
37756
37757
37758
37759
37760
37761
37762
37763
37764
37765
37766
37767
37768
37769
37770
37771
37772
37773
37774
37775
37776
37777
37778
37779
37780
37781
37782
37783
37784
37785
37786
37787
37788
37789
37790
37791
37792
37793
37794
37795
37796
37797
37798
37799
37800
37801
37802
37803
37804
37805
37806
37807
37808
37809
37810
37811
37812
37813
37814
37815
37816
37817
37818
37819
37820
37821
37822
37823
37824
37825
37826
37827
37828
37829
37830
37831
37832
37833
37834
37835
37836
37837
37838
37839
37840
37841
37842
37843
37844
37845
37846
37847
37848
37849
37850
37851
37852
37853
37854
37855
37856
37857
37858
37859
37860
37861
37862
37863
37864
37865
37866
37867
37868
37869
37870
37871
37872
37873
37874
37875
37876
37877
37878
37879
37880
37881
37882
37883
37884
37885
37886
37887
37888
37889
37890
37891
37892
37893
37894
37895
37896
37897
37898
37899
37900
37901
37902
37903
37904
37905
37906
37907
37908
37909
37910
37911
37912
37913
37914
37915
37916
37917
37918
37919
37920
37921
37922
37923
37924
37925
37926
37927
37928
37929
37930
37931
37932
37933
37934
37935
37936
37937
37938
37939
37940
37941
37942
37943
37944
37945
37946
37947
37948
37949
37950
37951
37952
37953
37954
37955
37956
37957
37958
37959
37960
37961
37962
37963
37964
37965
37966
37967
37968
37969
37970
37971
37972
37973
37974
37975
37976
37977
37978
37979
37980
37981
37982
37983
37984
37985
37986
37987
37988
37989
37990
37991
37992
37993
37994
37995
37996
37997
37998
37999
38000
38001
38002
38003
38004
38005
38006
38007
38008
38009
38010
38011
38012
38013
38014
38015
38016
38017
38018
38019
38020
38021
38022
38023
38024
38025
38026
38027
38028
38029
38030
38031
38032
38033
38034
38035
38036
38037
38038
38039
38040
38041
38042
38043
38044
38045
38046
38047
38048
38049
38050
38051
38052
38053
38054
38055
38056
38057
38058
38059
38060
38061
38062
38063
38064
38065
38066
38067
38068
38069
38070
38071
38072
38073
38074
38075
38076
38077
38078
38079
38080
38081
38082
38083
38084
38085
38086
38087
38088
38089
38090
38091
38092
38093
38094
38095
38096
38097
38098
38099
38100
38101
38102
38103
38104
38105
38106
38107
38108
38109
38110
38111
38112
38113
38114
38115
38116
38117
38118
38119
38120
38121
38122
38123
38124
38125
38126
38127
38128
38129
38130
38131
38132
38133
38134
38135
38136
38137
38138
38139
38140
38141
38142
38143
38144
38145
38146
38147
38148
38149
38150
38151
38152
38153
38154
38155
38156
38157
38158
38159
38160
38161
38162
38163
38164
38165
38166
38167
38168
38169
38170
38171
38172
38173
38174
38175
38176
38177
38178
38179
38180
38181
38182
38183
38184
38185
38186
38187
38188
38189
38190
38191
38192
38193
38194
38195
38196
38197
38198
38199
38200
38201
38202
38203
38204
38205
38206
38207
38208
38209
38210
38211
38212
38213
38214
38215
38216
38217
38218
38219
38220
38221
38222
38223
38224
38225
38226
38227
38228
38229
38230
38231
38232
38233
38234
38235
38236
38237
38238
38239
38240
38241
38242
38243
38244
38245
38246
38247
38248
38249
38250
38251
38252
38253
38254
38255
38256
38257
38258
38259
38260
38261
38262
38263
38264
38265
38266
38267
38268
38269
38270
38271
38272
38273
38274
38275
38276
38277
38278
38279
38280
38281
38282
38283
38284
38285
38286
38287
38288
38289
38290
38291
38292
38293
38294
38295
38296
38297
38298
38299
38300
38301
38302
38303
38304
38305
38306
38307
38308
38309
38310
38311
38312
38313
38314
38315
38316
38317
38318
38319
38320
38321
38322
38323
38324
38325
38326
38327
38328
38329
38330
38331
38332
38333
38334
38335
38336
38337
38338
38339
38340
38341
38342
38343
38344
38345
38346
38347
38348
38349
38350
38351
38352
38353
38354
38355
38356
38357
38358
38359
38360
38361
38362
38363
38364
38365
38366
38367
38368
38369
38370
38371
38372
38373
38374
38375
38376
38377
38378
38379
38380
38381
38382
38383
38384
38385
38386
38387
38388
38389
38390
38391
38392
38393
38394
38395
38396
38397
38398
38399
38400
38401
38402
38403
38404
38405
38406
38407
38408
38409
38410
38411
38412
38413
38414
38415
38416
38417
38418
38419
38420
38421
38422
38423
38424
38425
38426
38427
38428
38429
38430
38431
38432
38433
38434
38435
38436
38437
38438
38439
38440
38441
38442
38443
38444
38445
38446
38447
38448
38449
38450
38451
38452
38453
38454
38455
38456
38457
38458
38459
38460
38461
38462
38463
38464
38465
38466
38467
38468
38469
38470
38471
38472
38473
38474
38475
38476
38477
38478
38479
38480
38481
38482
38483
38484
38485
38486
38487
38488
38489
38490
38491
38492
38493
38494
38495
38496
38497
38498
38499
38500
38501
38502
38503
38504
38505
38506
38507
38508
38509
38510
38511
38512
38513
38514
38515
38516
38517
38518
38519
38520
38521
38522
38523
38524
38525
38526
38527
38528
38529
38530
38531
38532
38533
38534
38535
38536
38537
38538
38539
38540
38541
38542
38543
38544
38545
38546
38547
38548
38549
38550
38551
38552
38553
38554
38555
38556
38557
38558
38559
38560
38561
38562
38563
38564
38565
38566
38567
38568
38569
38570
38571
38572
38573
38574
38575
38576
38577
38578
38579
38580
38581
38582
38583
38584
38585
38586
38587
38588
38589
38590
38591
38592
38593
38594
38595
38596
38597
38598
38599
38600
38601
38602
38603
38604
38605
38606
38607
38608
38609
38610
38611
38612
38613
38614
38615
38616
38617
38618
38619
38620
38621
38622
38623
38624
38625
38626
38627
38628
38629
38630
38631
38632
38633
38634
38635
38636
38637
38638
38639
38640
38641
38642
38643
38644
38645
38646
38647
38648
38649
38650
38651
38652
38653
38654
38655
38656
38657
38658
38659
38660
38661
38662
38663
38664
38665
38666
38667
38668
38669
38670
38671
38672
38673
38674
38675
38676
38677
38678
38679
38680
38681
38682
38683
38684
38685
38686
38687
38688
38689
38690
38691
38692
38693
38694
38695
38696
38697
38698
38699
38700
38701
38702
38703
38704
38705
38706
38707
38708
38709
38710
38711
38712
38713
38714
38715
38716
38717
38718
38719
38720
38721
38722
38723
38724
38725
38726
38727
38728
38729
38730
38731
38732
38733
38734
38735
38736
38737
38738
38739
38740
38741
38742
38743
38744
38745
38746
38747
38748
38749
38750
38751
38752
38753
38754
38755
38756
38757
38758
38759
38760
38761
38762
38763
38764
38765
38766
38767
38768
38769
38770
38771
38772
38773
38774
38775
38776
38777
38778
38779
38780
38781
38782
38783
38784
38785
38786
38787
38788
38789
38790
38791
38792
38793
38794
38795
38796
38797
38798
38799
38800
38801
38802
38803
38804
38805
38806
38807
38808
38809
38810
38811
38812
38813
38814
38815
38816
38817
38818
38819
38820
38821
38822
38823
38824
38825
38826
38827
38828
38829
38830
38831
38832
38833
38834
38835
38836
38837
38838
38839
38840
38841
38842
38843
38844
38845
38846
38847
38848
38849
38850
38851
38852
38853
38854
38855
38856
38857
38858
38859
38860
38861
38862
38863
38864
38865
38866
38867
38868
38869
38870
38871
38872
38873
38874
38875
38876
38877
38878
38879
38880
38881
38882
38883
38884
38885
38886
38887
38888
38889
38890
38891
38892
38893
38894
38895
38896
38897
38898
38899
38900
38901
38902
38903
38904
38905
38906
38907
38908
38909
38910
38911
38912
38913
38914
38915
38916
38917
38918
38919
38920
38921
38922
38923
38924
38925
38926
38927
38928
38929
38930
38931
38932
38933
38934
38935
38936
38937
38938
38939
38940
38941
38942
38943
38944
38945
38946
38947
38948
38949
38950
38951
38952
38953
38954
38955
38956
38957
38958
38959
38960
38961
38962
38963
38964
38965
38966
38967
38968
38969
38970
38971
38972
38973
38974
38975
38976
38977
38978
38979
38980
38981
38982
38983
38984
38985
38986
38987
38988
38989
38990
38991
38992
38993
38994
38995
38996
38997
38998
38999
39000
39001
39002
39003
39004
39005
39006
39007
39008
39009
39010
39011
39012
39013
39014
39015
39016
39017
39018
39019
39020
39021
39022
39023
39024
39025
39026
39027
39028
39029
39030
39031
39032
39033
39034
39035
39036
39037
39038
39039
39040
39041
39042
39043
39044
39045
39046
39047
39048
39049
39050
39051
39052
39053
39054
39055
39056
39057
39058
39059
39060
39061
39062
39063
39064
39065
39066
39067
39068
39069
39070
39071
39072
39073
39074
39075
39076
39077
39078
39079
39080
39081
39082
39083
39084
39085
39086
39087
39088
39089
39090
39091
39092
39093
39094
39095
39096
39097
39098
39099
39100
39101
39102
39103
39104
39105
39106
39107
39108
39109
39110
39111
39112
39113
39114
39115
39116
39117
39118
39119
39120
39121
39122
39123
39124
39125
39126
39127
39128
39129
39130
39131
39132
39133
39134
39135
39136
39137
39138
39139
39140
39141
39142
39143
39144
39145
39146
39147
39148
39149
39150
39151
39152
39153
39154
39155
39156
39157
39158
39159
39160
39161
39162
39163
39164
39165
39166
39167
39168
39169
39170
39171
39172
39173
39174
39175
39176
39177
39178
39179
39180
39181
39182
39183
39184
39185
39186
39187
39188
39189
39190
39191
39192
39193
39194
39195
39196
39197
39198
39199
39200
39201
39202
39203
39204
39205
39206
39207
39208
39209
39210
39211
39212
39213
39214
39215
39216
39217
39218
39219
39220
39221
39222
39223
39224
39225
39226
39227
39228
39229
39230
39231
39232
39233
39234
39235
39236
39237
39238
39239
39240
39241
39242
39243
39244
39245
39246
39247
39248
39249
39250
39251
39252
39253
39254
39255
39256
39257
39258
39259
39260
39261
39262
39263
39264
39265
39266
39267
39268
39269
39270
39271
39272
39273
39274
39275
39276
39277
39278
39279
39280
39281
39282
39283
39284
39285
39286
39287
39288
39289
39290
39291
39292
39293
39294
39295
39296
39297
39298
39299
39300
39301
39302
39303
39304
39305
39306
39307
39308
39309
39310
39311
39312
39313
39314
39315
39316
39317
39318
39319
39320
39321
39322
39323
39324
39325
39326
39327
39328
39329
39330
39331
39332
39333
39334
39335
39336
39337
39338
39339
39340
39341
39342
39343
39344
39345
39346
39347
39348
39349
39350
39351
39352
39353
39354
39355
39356
39357
39358
39359
39360
39361
39362
39363
39364
39365
39366
39367
39368
39369
39370
39371
39372
39373
39374
39375
39376
39377
39378
39379
39380
39381
39382
39383
39384
39385
39386
39387
39388
39389
39390
39391
39392
39393
39394
39395
39396
39397
39398
39399
39400
39401
39402
39403
39404
39405
39406
39407
39408
39409
39410
39411
39412
39413
39414
39415
39416
39417
39418
39419
39420
39421
39422
39423
39424
39425
39426
39427
39428
39429
39430
39431
39432
39433
39434
39435
39436
39437
39438
39439
39440
39441
39442
39443
39444
39445
39446
39447
39448
39449
39450
39451
39452
39453
39454
39455
39456
39457
39458
39459
39460
39461
39462
39463
39464
39465
39466
39467
39468
39469
39470
39471
39472
39473
39474
39475
39476
39477
39478
39479
39480
39481
39482
39483
39484
39485
39486
39487
39488
39489
39490
39491
39492
39493
39494
39495
39496
39497
39498
39499
39500
39501
39502
39503
39504
39505
39506
39507
39508
39509
39510
39511
39512
39513
39514
39515
39516
39517
39518
39519
39520
39521
39522
39523
39524
39525
39526
39527
39528
39529
39530
39531
39532
39533
39534
39535
39536
39537
39538
39539
39540
39541
39542
39543
39544
39545
39546
39547
39548
39549
39550
39551
39552
39553
39554
39555
39556
39557
39558
39559
39560
39561
39562
39563
39564
39565
39566
39567
39568
39569
39570
39571
39572
39573
39574
39575
39576
39577
39578
39579
39580
39581
39582
39583
39584
39585
39586
39587
39588
39589
39590
39591
39592
39593
39594
39595
39596
39597
39598
39599
39600
39601
39602
39603
39604
39605
39606
39607
39608
39609
39610
39611
39612
39613
39614
39615
39616
39617
39618
39619
39620
39621
39622
39623
39624
39625
39626
39627
39628
39629
39630
39631
39632
39633
39634
39635
39636
39637
39638
39639
39640
39641
39642
39643
39644
39645
39646
39647
39648
39649
39650
39651
39652
39653
39654
39655
39656
39657
39658
39659
39660
39661
39662
39663
39664
39665
39666
39667
39668
39669
39670
39671
39672
39673
39674
39675
39676
39677
39678
39679
39680
39681
39682
39683
39684
39685
39686
39687
39688
39689
39690
39691
39692
39693
39694
39695
39696
39697
39698
39699
39700
39701
39702
39703
39704
39705
39706
39707
39708
39709
39710
39711
39712
39713
39714
39715
39716
39717
39718
39719
39720
39721
39722
39723
39724
39725
39726
39727
39728
39729
39730
39731
39732
39733
39734
39735
39736
39737
39738
39739
39740
39741
39742
39743
39744
39745
39746
39747
39748
39749
39750
39751
39752
39753
39754
39755
39756
39757
39758
39759
39760
39761
39762
39763
39764
39765
39766
39767
39768
39769
39770
39771
39772
39773
39774
39775
39776
39777
39778
39779
39780
39781
39782
39783
39784
39785
39786
39787
39788
39789
39790
39791
39792
39793
39794
39795
39796
39797
39798
39799
39800
39801
39802
39803
39804
39805
39806
39807
39808
39809
39810
39811
39812
39813
39814
39815
39816
39817
39818
39819
39820
39821
39822
39823
39824
39825
39826
39827
39828
39829
39830
39831
39832
39833
39834
39835
39836
39837
39838
39839
39840
39841
39842
39843
39844
39845
39846
39847
39848
39849
39850
39851
39852
39853
39854
39855
39856
39857
39858
39859
39860
39861
39862
39863
39864
39865
39866
39867
39868
39869
39870
39871
39872
39873
39874
39875
39876
39877
39878
39879
39880
39881
39882
39883
39884
39885
39886
39887
39888
39889
39890
39891
39892
39893
39894
39895
39896
39897
39898
39899
39900
39901
39902
39903
39904
39905
39906
39907
39908
39909
39910
39911
39912
39913
39914
39915
39916
39917
39918
39919
39920
39921
39922
39923
39924
39925
39926
39927
39928
39929
39930
39931
39932
39933
39934
39935
39936
39937
39938
39939
39940
39941
39942
39943
39944
39945
39946
39947
39948
39949
39950
39951
39952
39953
39954
39955
39956
39957
39958
39959
39960
39961
39962
39963
39964
39965
39966
39967
39968
39969
39970
39971
39972
39973
39974
39975
39976
39977
39978
39979
39980
39981
39982
39983
39984
39985
39986
39987
39988
39989
39990
39991
39992
39993
39994
39995
39996
39997
39998
39999
40000
40001
40002
40003
40004
40005
40006
40007
40008
40009
40010
40011
40012
40013
40014
40015
40016
40017
40018
40019
40020
40021
40022
40023
40024
40025
40026
40027
40028
40029
40030
40031
40032
40033
40034
40035
40036
40037
40038
40039
40040
40041
40042
40043
40044
40045
40046
40047
40048
40049
40050
40051
40052
40053
40054
40055
40056
40057
40058
40059
40060
40061
40062
40063
40064
40065
40066
40067
40068
40069
40070
40071
40072
40073
40074
40075
40076
40077
40078
40079
40080
40081
40082
40083
40084
40085
40086
40087
40088
40089
40090
40091
40092
40093
40094
40095
40096
40097
40098
40099
40100
40101
40102
40103
40104
40105
40106
40107
40108
40109
40110
40111
40112
40113
40114
40115
40116
40117
40118
40119
40120
40121
40122
40123
40124
40125
40126
40127
40128
40129
40130
40131
40132
40133
40134
40135
40136
40137
40138
40139
40140
40141
40142
40143
40144
40145
40146
40147
40148
40149
40150
40151
40152
40153
40154
40155
40156
40157
40158
40159
40160
40161
40162
40163
40164
40165
40166
40167
40168
40169
40170
40171
40172
40173
40174
40175
40176
40177
40178
40179
40180
40181
40182
40183
40184
40185
40186
40187
40188
40189
40190
40191
40192
40193
40194
40195
40196
40197
40198
40199
40200
40201
40202
40203
40204
40205
40206
40207
40208
40209
40210
40211
40212
40213
40214
40215
40216
40217
40218
40219
40220
40221
40222
40223
40224
40225
40226
40227
40228
40229
40230
40231
40232
40233
40234
40235
40236
40237
40238
40239
40240
40241
40242
40243
40244
40245
40246
40247
40248
40249
40250
40251
40252
40253
40254
40255
40256
40257
40258
40259
40260
40261
40262
40263
40264
40265
40266
40267
40268
40269
40270
40271
40272
40273
40274
40275
40276
40277
40278
40279
40280
40281
40282
40283
40284
40285
40286
40287
40288
40289
40290
40291
40292
40293
40294
40295
40296
40297
40298
40299
40300
40301
40302
40303
40304
40305
40306
40307
40308
40309
40310
40311
40312
40313
40314
40315
40316
40317
40318
40319
40320
40321
40322
40323
40324
40325
40326
40327
40328
40329
40330
40331
40332
40333
40334
40335
40336
40337
40338
40339
40340
40341
40342
40343
40344
40345
40346
40347
40348
40349
40350
40351
40352
40353
40354
40355
40356
40357
40358
40359
40360
40361
40362
40363
40364
40365
40366
40367
40368
40369
40370
40371
40372
40373
40374
40375
40376
40377
40378
40379
40380
40381
40382
40383
40384
40385
40386
40387
40388
40389
40390
40391
40392
40393
40394
40395
40396
40397
40398
40399
40400
40401
40402
40403
40404
40405
40406
40407
40408
40409
40410
40411
40412
40413
40414
40415
40416
40417
40418
40419
40420
40421
40422
40423
40424
40425
40426
40427
40428
40429
40430
40431
40432
40433
40434
40435
40436
40437
40438
40439
40440
40441
40442
40443
40444
40445
40446
40447
40448
40449
40450
40451
40452
40453
40454
40455
40456
40457
40458
40459
40460
40461
40462
40463
40464
40465
40466
40467
40468
40469
40470
40471
40472
40473
40474
40475
40476
40477
40478
40479
40480
40481
40482
40483
40484
40485
40486
40487
40488
40489
40490
40491
40492
40493
40494
40495
40496
40497
40498
40499
40500
40501
40502
40503
40504
40505
40506
40507
40508
40509
40510
40511
40512
40513
40514
40515
40516
40517
40518
40519
40520
40521
40522
40523
40524
40525
40526
40527
40528
40529
40530
40531
40532
40533
40534
40535
40536
40537
40538
40539
40540
40541
40542
40543
40544
40545
40546
40547
40548
40549
40550
40551
40552
40553
40554
40555
40556
40557
40558
40559
40560
40561
40562
40563
40564
40565
40566
40567
40568
40569
40570
40571
40572
40573
40574
40575
40576
40577
40578
40579
40580
40581
40582
40583
40584
40585
40586
40587
40588
40589
40590
40591
40592
40593
40594
40595
40596
40597
40598
40599
40600
40601
40602
40603
40604
40605
40606
40607
40608
40609
40610
40611
40612
40613
40614
40615
40616
40617
40618
40619
40620
40621
40622
40623
40624
40625
40626
40627
40628
40629
40630
40631
40632
40633
40634
40635
40636
40637
40638
40639
40640
40641
40642
40643
40644
40645
40646
40647
40648
40649
40650
40651
40652
40653
40654
40655
40656
40657
40658
40659
40660
40661
40662
40663
40664
40665
40666
40667
40668
40669
40670
40671
40672
40673
40674
40675
40676
40677
40678
40679
40680
40681
40682
40683
40684
40685
40686
40687
40688
40689
40690
40691
40692
40693
40694
40695
40696
40697
40698
40699
40700
40701
40702
40703
40704
40705
40706
40707
40708
40709
40710
40711
40712
40713
40714
40715
40716
40717
40718
40719
40720
40721
40722
40723
40724
40725
40726
40727
40728
40729
40730
40731
40732
40733
40734
40735
40736
40737
40738
40739
40740
40741
40742
40743
40744
40745
40746
40747
40748
40749
40750
40751
40752
40753
40754
40755
40756
40757
40758
40759
40760
40761
40762
40763
40764
40765
40766
40767
40768
40769
40770
40771
40772
40773
40774
40775
40776
40777
40778
40779
40780
40781
40782
40783
This ChangeLog file is no longer maintained - see the git repo history for
more recent changes: https://xapian.org/bleeding

Wed Sep 30 19:34:51 GMT 2015  Olly Betts <olly@survex.com>

	* languages/compiler/: Merge changes from upstream snowball again.

Sun Sep 27 23:59:05 GMT 2015  Olly Betts <olly@survex.com>

	* languages/compiler/: Merge changes from upstream snowball.

Sat Sep 26 04:07:35 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Remove pointless call to get_database().

Sat Sep 26 03:21:45 GMT 2015  Olly Betts <olly@survex.com>

	* common/pack.h,configure.ac,include/xapian/types.h,
	  include/xapian/version_h.cc,tests/api_backend.cc,tests/api_wrdb.cc:
	  Add new configure options --enable-64bit-docid and
	  --enable-64bit-termcount, which control the size of these types.
	  Currently the backends only support 32-bit docids, but using 64-bit
	  docids allows searching multiple database where the mapped docids
	  don't fit in a 32-bit type.  Based heavily on patch from James
	  Aylett and Dylan Griffith.  Fixes #385.

Sat Sep 26 00:32:31 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_table.cc: Use BLK_UNUSED constant.

Sat Sep 26 00:31:45 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Initialise last_readahead - was
	  causing testsuite failures under valgrind.

Fri Sep 25 06:28:02 GMT 2015  Olly Betts <olly@survex.com>

	* net/length.cc,net/length.h: Provide overloads for unsigned, unsigned
	  long, and unsigned long long, rather than uint32_t and uint64_t -
	  this avoids overload resolution failing when we pass a type which
	  isn't one which uint32_t or uint64_t is a typedef to.  (see #385)

Fri Sep 25 04:10:00 GMT 2015  Olly Betts <olly@survex.com>

	* api/vectortermlist.cc: Check decoded length.

Sun Sep 13 08:27:53 GMT 2015  Olly Betts <olly@survex.com>

	* common/socket_utils.cc: Change C-style cast to reinterpret_cast.

Wed Sep 02 03:13:45 GMT 2015  Olly Betts <olly@survex.com>

	* docs/stemming.rst,languages/armenian.sbl,languages/basque.sbl,
	  languages/catalan.sbl: Update snowball website links to
	  snowballstem.org.  Correct "2-clause BSD" to "3-clause BSD".

Sun Aug 30 04:43:49 GMT 2015  Olly Betts <olly@survex.com>

	* net/remote_protocol.rst: Markup tweak.

Thu Aug 13 08:56:25 GMT 2015  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Improve error when the client and
	  server remote protocol versions aren't compatible.

Tue Aug 11 09:32:46 GMT 2015  Olly Betts <olly@survex.com>

	* docs/: Strip out "quickstart" examples which are out of date and
	  rather redundant with the "simple" examples.

Tue Aug 11 08:24:48 GMT 2015  Olly Betts <olly@survex.com>

	* pkgconfig/xapian-core.pc.in: Fix library name in .pc file to say
	  "xapian" not "xapian-core".  Reported by Eric Lindblad to the
	  xapian-devel list.

Tue Jul 07 01:37:00 GMT 2015  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/query.cc,backends/chert/,backends/database.cc,
	  backends/database.h,backends/glass/,common/io_utils.cc,
	  common/io_utils.h,configure.ac,include/xapian/enquire.h,
	  include/xapian/query.h,matcher/multimatch.cc: Where posix_fadvise()
	  is available, use it to prefetch postlist Btree blocks from the
	  level below the root block which will be needed for postlists of
	  terms in the query, and similarly for the record/docdata table
	  when MSet::fetch() is called.  Based on patch by Will Greenberg
	  in #671.

Mon Jul 06 09:44:54 GMT 2015  Olly Betts <olly@survex.com>

	* common/safeunistd.h,configure.ac: Don't provide our own
	  implementation of sleep() under __WIN32__ if there's already one -
	  mingw provides one, and in some situations it seems to clash with
	  ours.  Reported to xapian-discuss by John Alveris.

Mon Jun 29 12:10:22 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_compact.cc: Need <unistd.h> for unlink() on
	  FreeBSD, reported by Germán M. Bravo via github PR 72.

Wed Jun 24 10:07:05 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc,tests/harness/testutils.h: Use
	  'Xapian::docid' instead of 'unsigned int' so that things work with
	  64 bit docids (see #385).

Tue Jun 23 13:38:54 GMT 2015  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h: Use appropriate typedefs
	  rather than unsigned int.  Split out of patch by Dylan Griffith in
	  #385.

Tue Jun 23 13:32:36 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_types.h,
	  backends/glass/glass_database.cc,backends/glass/glass_defs.h: Add
	  constants CHERT_MAX_DOCID and GLASS_MAX_DOCID for the largest docid
	  which the backends support, independent of the size of type
	  Xapian::docid.  (helps #385)

Tue Jun 23 13:19:06 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add regression test for #678.

Tue Jun 23 13:04:06 GMT 2015  Olly Betts <olly@survex.com>

	* api/,backends/remote/net_postlist.cc,
	  backends/remote/remote-database.cc,
	  geospatial/latlong_posting_source.cc,net/,tests/unittest.cc: Split
	  decode_length() into versions which decode a 32 vs 64 bit value,
	  and which check that there's at least the decoded length in bytes
	  in the source data.  (Fixes #678 and helps #385)

Tue Jun 23 11:49:15 GMT 2015  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Check length of key in MSG_SETMETADATA.

Sat Jun 20 13:05:50 GMT 2015  Olly Betts <olly@survex.com>

	* common/str.h,tests/,tests/harness/,tests/internaltest.cc,
	  tests/perftest/perftest.cc,tests/perftest/perftest_matchdecider.cc,
	  tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc,
	  tests/soaktest/soaktest_queries.cc,tests/termgentest.cc,
	  tests/unittest.cc: Make str() private to the library, and use
	  C++11 std::to_string() to convert numbers to std::string in the
	  testsuite.  (ticket #63)

Sat Jun 20 12:32:13 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Fix trailing whitespace introduced by previous
	  commit.

Sat Jun 20 06:31:27 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc,unicode/Makefile.mk,
	  unicode/UnicodeData-README.txt,unicode/UnicodeData.txt:
	  Update to Unicode 8.0.0.  (fixes #680)

Thu Jun 11 11:57:50 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Remove XAPIAN_CONST_FUNCTION marker
	  from sortable_serialise_() helper, as it writes to the passed in
	  buffer, so it isn't const or pure.  Fixes decvalwtsource2 testcase
	  failure when compiled with clang.

Thu Jun 11 05:05:27 GMT 2015  Olly Betts <olly@survex.com>

	* examples/xapian-metadata.cc: Extend "list" subcommand to take
	  optional key prefix.

Sat Jun 06 11:02:50 GMT 2015  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Use C++11 auto and container
	  iteration for cleaner code.

Fri Jun 05 12:08:02 GMT 2015  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omenquireinternal.h,
	  backends/remote/remote-database.cc,backends/remote/remote-database.h,
	  include/xapian/matchspy.h,matcher/,net/remoteserver.cc,
	  tests/api_none.cc: Add support for optional reference counting of
	  MatchSpy objects.

Fri Jun 05 02:55:54 GMT 2015  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.h: Correct doxygen comment for
	  internal method.

Thu Jun 04 12:44:00 GMT 2015  Olly Betts <olly@survex.com>

	* examples/quest.cc: Prefer pre-increment ++.

Thu Jun 04 12:42:49 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_compact.cc,tests/api_posdb.cc: Remove unused variables.

Thu Jun 04 12:42:04 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Fix compilation in case where S_ISSOCK() isn't
	  defined.

Thu Jun 04 12:41:31 GMT 2015  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Remove redundant assignment.

Thu Jun 04 12:40:52 GMT 2015  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Remove extra "break;".

Thu Jun 04 12:39:51 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Remove bogus extra "Query::" qualifier from
	  fake Query constructor prototypes provided for SWIG.

Thu Jun 04 12:38:36 GMT 2015  Olly Betts <olly@survex.com>

	* api/documentvaluelist.h,api/leafpostlist.h,api/matchspy.cc,
	  include/xapian/,net/length.cc: Mark constructors taking a
	  single argument as "explicit" to avoid unwanted implicit
	  conversions.

Mon Jun 01 13:11:02 GMT 2015  Olly Betts <olly@survex.com>

	* NEWS.SKELETON: Remove section for "flint backend" from template.

Mon Jun 01 13:09:55 GMT 2015  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.3.3.

Mon May 25 04:33:15 GMT 2015  Olly Betts <olly@survex.com>

	* NEWS: Update.

Sun May 24 12:52:47 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: timer_create() seems to always fail on
	  AIX with EAGAIN, so just skip the matchtimelimit1 testcase there.

Sun May 24 11:48:30 GMT 2015  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Under __WIN32__, inet_ntop()'s second parameter
	  is 'void*' (to POSIX says it should be 'const void*').

Sun May 24 11:46:25 GMT 2015  Olly Betts <olly@survex.com>

	* common/safenetdb.h: Under __WIN32__, MSDN says that newer platforms
	  need <ws2def.h> for AI_* constants.  And mingw doesn't seem to
	  define AI_NUMERICSERV yet.

Sun May 24 10:41:39 GMT 2015  Olly Betts <olly@survex.com>

	* common/safewindows.h,configure.ac: Under __WIN32__, we need to
	  specify Vista as the minimum supported version to get the
	  AI_ADDRCONFIG flag.  Older versions seem to all be out of support
	  anyway.

Sun May 24 06:46:15 GMT 2015  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Add missing declaration of variable under
	  __WIN32__.

Sun May 24 06:39:56 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Simplify FAIL_TEST and SKIP_TEST
	  slightly.

Sat May 23 11:52:03 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Don't leave an extra fd
	  open when starting xapian-tcpsrv for remotetcp tests.

Sat May 23 10:12:31 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Add spaces between literal
	  strings and macros which expand to literal strings for C++11
	  compatibility in __WIN32__-specific code.

Fri May 22 03:22:03 GMT 2015  Olly Betts <olly@survex.com>

	* NEWS: Update.

Wed May 20 14:24:03 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: If old and new __GXX_ABI_VERSION are
	  both >= 1002 (which means GCC >= 3.4), then issue a warning about
	  mismatching versions instead of an error.  The changes in these
	  versions are bug fixes for corner cases, so there's a good chance of
	  things working - e.g. building xapian-bindings with GCC 5.1 (which
	  defaults to __GXX_ABI_VERSION 1008) against xapian-core built with
	  GCC 4.9 (1002) seems to work OK.  A warning is still useful as a
	  clue to what is going on if linking fails due to a missing symbol.

Wed May 20 13:47:50 GMT 2015  Olly Betts <olly@survex.com>

	* net/serialise.cc: Don't use encode_length() on a bool - it's
	  overkill, and leads to a warning from GCC 5.1 (due to the
	  comparison (bool_value < 255) from the template expansion
	  always being true).

Wed May 20 01:49:18 GMT 2015  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Fix comparison function not to return true for two
	  equal elements, which fixes matchspy4 test failure with clang and
	  libc++.

Wed May 20 00:20:56 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Disable "<FUNCTION> is expected to return a value"
	  warning from Sun's C++ compiler, as it fires even for functions we
	  end in a "throw" statement.  Genuine instances will be caught by
	  compilers with superior warning machinery.

Mon May 18 04:18:37 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Arrange to pass command line option so that xlC
	  actually fails to compile the test code for typeid() when RTTI isn't
	  enabled.

Sun May 17 11:35:36 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_version.cc: When reporting an error that the
	  glass format version doesn't match, don't append an uninitialised
	  char[] buffer to the error string (code accidentally left behind
	  by the previous change in this area).

Sat May 16 12:08:17 GMT 2015  Olly Betts <olly@survex.com>

	* common/socket_utils.cc: Fix casts on the 4th argument of
	  setsockopt() so they compile on platforms which expect
	  char * or const char * there.

Fri May 15 13:24:55 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Enhance the probe for whether the test harness can use
	  RTTI so that it works for xlC (which defaults to not generating
	  RTTI).

Fri May 15 12:28:32 GMT 2015  Olly Betts <olly@survex.com>

	* common/debuglog.h: Remove commented out STATIC_ASSERT() which
	  is conceptually flawed.

Fri May 15 12:27:45 GMT 2015  Olly Betts <olly@survex.com>

	* common/omassert.h,common/pack.h,tests/api_wrdb.cc,
	  tests/internaltest.cc: Replace STATIC_ASSERT() with C++11's
	  static_assert().

Fri May 15 11:34:47 GMT 2015  Olly Betts <olly@survex.com>

	* common/stringutils.cc: Use static_assert rather than an adhoc check
	  via a negative array size.

Fri May 15 11:16:18 GMT 2015  Olly Betts <olly@survex.com>

	* common/io_utils.cc: Replace the code used on platforms without
	  F_DUPFD with simpler code which actually compiles.

Fri May 15 03:43:16 GMT 2015  Olly Betts <olly@survex.com>

	* pkgconfig/xapian-core.pc.in: Include @ldflags@ in pkg-config .pc
	  file.

Fri May 15 03:33:40 GMT 2015  Olly Betts <olly@survex.com>

	* pkgconfig/xapian-core.pc.in: Fix include directory reported by
	  pkg-config.

Fri May 15 03:31:43 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac,pkgconfig/xapian-core.pc.in,xapian-config.in: When
	  compiling with xlC on AIX, _LARGE_FILES gets defined by
	  AC_SYS_LARGEFILE to enable large file support, and defining this
	  changes the ABI of std::string, so include it in xapian-config
	  --cxxflags and the pkg-config equivalent.

Fri May 15 02:52:10 GMT 2015  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/perftest/Makefile.mk: Use $(NO_INSTALL)
	  rather than @NO_INSTALL@ to allow make-time overriding.

Fri May 15 02:33:11 GMT 2015  Olly Betts <olly@survex.com>

	* tests/soaktest/Makefile.mk: Use -no-fast-install instead of
	  -no-install for linking soaktest on platforms where libtool issues
	  a warning for -no-install, like we already do for all the other test
	  programs.

Fri May 15 02:14:16 GMT 2015  Olly Betts <olly@survex.com>

	* examples/simpleexpand.cc,examples/simpleindex.cc,
	  examples/simplesearch.cc: '#include <config.h>' in the examples, as
	  when compiling with xlC on AIX, _LARGE_FILES gets defined by
	  AC_SYS_LARGEFILE to enable large file support, and defining this
	  changes the ABI of std::string, so it also needs to be defined when
	  compiling code using Xapian.

Thu May 14 03:17:28 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc: Correct delete to delete [].

Tue May 12 14:33:28 GMT 2015  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add deprecation of --preserve-nonduplicates
	  which happened in 1.2.4.

Tue May 12 07:38:12 GMT 2015  Olly Betts <olly@survex.com>

	* Makefile.am: Actually use $(NO_UNDEFINED).

Tue May 12 06:40:38 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Only pass -no-undefined when linking the library if
	  it's actually required for the current platform.  Sun C++ doesn't
	  link the C++ runtime libraries to shared objects, so the build
	  fails with -no-undefined.

Tue May 12 06:39:26 GMT 2015  Olly Betts <olly@survex.com>

	* INSTALL,configure.ac: Fix comment and doc typos.

Tue May 12 03:49:38 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Add workaround for odd <cmath> issue with Sun C++.

Tue May 12 03:49:15 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: On Solaris, inet_ntop() needs -lnsl.

Tue May 12 03:48:48 GMT 2015  Olly Betts <olly@survex.com>

	* api/keymaker.cc: Fix error compiling with Sun C++.

Tue May 12 03:07:06 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/attributes.h: Fix typo in definition of
	  XAPIAN_NOTHROW() definition for C++11 compilers other than GCC and
	  MSVC.

Tue May 12 01:48:19 GMT 2015  Olly Betts <olly@survex.com>

	* exception_data.pm: Fix not to parse mentions of XAPIAN_THROW() in
	  comments.

Mon May 11 14:16:22 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING: libtool 2.4.6 is now used for snapshots and releases.

Mon May 11 14:14:04 GMT 2015  Olly Betts <olly@survex.com>

	* common/str.cc,expand/bo1eweight.cc,geospatial/geoencode.cc,
	  matcher/multiandpostlist.cc,net/remoteconnection.cc,weight/:
	  Fixes for errors when compiling with Sun C++.

Mon May 11 10:53:47 GMT 2015  Olly Betts <olly@survex.com>

	* common/log2.h,configure.ac: Change probe for log2() to check for a
	  declaration and '#include <cmath>' to get it to fix build on Solaris
	  with Sun C++.  C++11 compilers should all provide log2(), but let's
	  not rely on that just yet as it's easy to provide a fallback
	  implementation.

Mon May 11 07:04:06 GMT 2015  Olly Betts <olly@survex.com>

	* common/getopt.cc,net/tcpserver.cc: Fix clang warnings on OS X.
	  Reported by Germán M. Bravo.

Mon May 11 06:29:42 GMT 2015  Olly Betts <olly@survex.com>

	* api/constinfo.cc,docs/doxygen_api.conf.in,
	  docs/doxygen_source.conf.in,include/xapian/: C++11's noexcept
	  needs to be on definitions as well as declarations, but GCC
	  function attributes must only be on declarations, so split
	  XAPIAN_NOEXCEPT off from XAPIAN_NOTHROW.

Sun May 10 13:26:24 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser_internal.h,
	  tests/api_none.cc: Add support for optional reference counting of
	  FieldProcessor objects.

Sun May 10 11:07:36 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/intrusive_ptr.h,include/xapian/queryparser.h,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
	  tests/api_none.cc: Add support for optional reference counting of
	  ValueRangeProcessor objects.

Thu May 07 12:42:11 GMT 2015  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc,common/socket_utils.cc,common/socket_utils.h,
	  net/replicatetcpclient.cc,net/replicatetcpclient.h: Set SO_KEEPALIVE
	  for xapian-replicate's connection to the master, and add command
	  line option to allow setting socket-level timeouts (SO_RCVTIMEO and
	  SO_SNDTIMEO) on platforms that support them.  Fixes #546, reported
	  by nkvoll.

Thu May 07 12:00:15 GMT 2015  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Fix connection timeout to be 10 seconds
	  rather than 10000 seconds which is has been since 1.2.3.

Tue May 05 02:38:37 GMT 2015  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Use inet_ntop() instead of inet_ntoa() - the
	  latter isn't thread-safe.

Tue May 05 02:05:27 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Update documentation to reflect that
	  the database passed to QueryParser::set_database() is no longer
	  used to expand wildcards and partial terms.

Mon May 04 11:32:40 GMT 2015  Olly Betts <olly@survex.com>

	* api/postlist.cc,api/postlist.h,common/remoteprotocol.h,matcher/,
	  net/serialise.cc,tests/api_backend.cc: Fix sort by value when
	  multiple databases are in use and one or more are remote.  Fixes
	  #674, reported by Dylan Griffith.

Sun May 03 12:41:58 GMT 2015  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,include/xapian/queryparser.h,
	  queryparser/queryparser.cc,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h,tests/queryparsertest.cc:
	  Allow setting the expansion limits and types for wildcards
	  and partial terms in the QueryParser independently.  Partial
	  terms now default to the 100 most frequent matching terms.
	  Deprecate set_max_wildcard_expansion() in favour of new
	  set_max_expansion() method which can set expansion limits
	  for partial terms too.  Completes #608.

Sat May 02 09:20:30 GMT 2015  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/queryinternal.h,
	  include/xapian/query.h,queryparser/queryparser.lemony,
	  tests/api_query.cc: Add a choice of ways to apply the limit on
	  wildcard expansion.  Fixes #608, reported by boomboo.

Fri May 01 14:53:16 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Reenable replicate3 for glass, as it no
	  longer fails.

Fri May 01 13:38:48 GMT 2015  Olly Betts <olly@survex.com>

	* common/autoptr.h: Just map AutoPtr to std::unique_ptr now we require
	  C++11.

Fri May 01 13:33:28 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc,net/progclient.cc: IRIX is dead, so remove
	  lingering traces of support for SGI's compiler.

Fri May 01 08:59:13 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING,INSTALL: STLport was last released in 2008, so (a) it's no
	  longer actively developed and (b) it won't support C++11, so strip
	  out documentation which mentions it.
	* configure.ac: For Sun's C++ compiler, -std=c++11 enables C++11
	  support, and is incompatible with -library=stlport, so remove code
	  to enable that later option.

Fri May 01 01:37:24 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Tweak comment to match xapian-omega's configure.

Fri May 01 01:36:41 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Set default value for AUTOM4TE before AC_OUTPUT so the
	  default will actually get used.

Fri May 01 01:36:05 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Add explicit AC_CANONICAL_HOST.

Fri May 01 01:08:56 GMT 2015  Olly Betts <olly@survex.com>

	* api/matchspy.cc,tests/api_nodb.cc: Eliminate needless uses of
	  AutoPtr.

Fri May 01 00:37:42 GMT 2015  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Remove self-assignment check of AutoPtr as
	  that doesn't work under C++11 when AutoPtr is unique_ptr, and add
	  other checks of reassignment which should work for both.

Fri May 01 00:37:09 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: Remove C++11 specific test which doesn't
	  actually work with C++11.

Fri May 01 00:33:43 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,
	  tests/harness/backendmanager_remotetcp.cc,
	  tests/harness/testsuite.h,tests/harness/testutils.h: Add spaces
	  between literal strings and macros which expand to literal strings
	  for C++11 compatibility.

Thu Apr 30 14:41:59 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/glass/glass_table.cc: Remove
	  duplicate includes of "omassert.h".

Thu Apr 30 14:41:31 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Add missing explicit include of
	  "omassert.h",

Thu Apr 30 14:38:06 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING,backends/chert/chert_table.cc,
	  backends/chert/chert_version.cc,backends/glass/glass_table.cc,
	  common/omassert.h: Remove CompileTimeAssert() and just use
	  C++11's static_assert instead.

Thu Apr 30 14:28:10 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Drop conditionals for GCC >= 3.4
	  as we now require >= 4.4.

Thu Apr 30 14:26:13 GMT 2015  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/queryparser.h,
	  tests/harness/backendmanager.h: Drop workarounds for ancient Sun
	  C++ compilers, as we now require a recent version for C++11 support.

Thu Apr 30 14:22:46 GMT 2015  Olly Betts <olly@survex.com>

	* INSTALL: IRIX is past EOL so drop information about IRIX make.

Thu Apr 30 14:22:10 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: OS X >= 10.4 apparently supports symbol visibility, so
	  update comment.

Thu Apr 30 14:21:37 GMT 2015  Olly Betts <olly@survex.com>

	* common/unordered_map.h: No longer relevant now we require C++11.

Thu Apr 30 13:59:16 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,configure.ac,xapian-config.in: Require a C++
	  compiler - the minimum required GCC version is now probably GCC 4.4.

Thu Apr 30 13:48:54 GMT 2015  Olly Betts <olly@survex.com>

	* xapian-config.in: Remove superfluous comment left over from code
	  refactoring.

Thu Apr 30 13:47:30 GMT 2015  Olly Betts <olly@survex.com>

	* xapian-config.in: Fix the include directory reported by --swigflags
	  for an installed copy to include the "/xapian-1.3" component for
	  a development version.

Thu Apr 30 12:34:14 GMT 2015  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Fix for C++11 where AutoPtr is unique_ptr.

Thu Apr 30 12:20:22 GMT 2015  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_table.cc,backends/chert/chert_version.cc,
	  backends/glass/,backends/remote/remote-database.cc,bin/,
	  examples/copydatabase.cc,examples/quest.cc,
	  examples/xapian-metadata.cc,net/tcpclient.cc,
	  queryparser/queryparser.lemony: Add spaces between literal strings
	  and macros which expand to literal strings for C++11 compatibility.

Thu Apr 30 12:17:17 GMT 2015  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: Use STRINGIZE() to include defaults literally
	  in string for --help.

Thu Apr 30 10:48:11 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING: Update URL.

Thu Apr 30 10:47:10 GMT 2015  Olly Betts <olly@survex.com>

	* m4/ax_cxx_compile_stdcxx_11.m4: Add support for HP's aCC (untested
	  as I no longer have access to this compiler).

Thu Apr 30 05:30:13 GMT 2015  Olly Betts <olly@survex.com>

	* m4/ax_cxx_compile_stdcxx_11.m4: Add macro from autoconf-archive to
	  detect any compiler options needed to enable C++11 support (not yet
	  used).

Thu Apr 30 05:14:56 GMT 2015  Olly Betts <olly@survex.com>

	* common/posixy_wrapper.cc: O_RDONLY, etc are better described as
	  "POSIX" than "ANSI".

Thu Apr 30 05:12:33 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac,xapian-config.in: Rename ANSI_CXXFLAGS to ISO_CXXFLAGS
	  and talk about ISO C++ in configure messages.

Thu Apr 30 05:10:40 GMT 2015  Olly Betts <olly@survex.com>

	* .gitignore: Adjust for m4 subdirectory to only match files which
	  aren't in git.

Thu Apr 30 04:07:05 GMT 2015  Olly Betts <olly@survex.com>

	* xapian-config.in: Fix typo so cached result of test in
	  is_uninstalled() is actually used on subsequent calls.  Fixes #676,
	  reported (with patch) by Ryan Schmidt.

Wed Apr 29 03:00:32 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/glass/glass_database.cc:
	  Fix get_changeset_revisions() not to potentially read uninitialised
	  data if a changeset file is truncated.

Wed Apr 29 00:09:57 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_databasereplicator.cc: Use return value of
	  get_message_chunk() rather than ignoring it and repeating the check
	  in the caller.

Tue Apr 28 22:22:01 GMT 2015  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc: Fix comment typo.

Tue Apr 28 04:51:33 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/chert/chert_table.cc,
	  backends/glass/glass_cursor.cc,backends/glass/glass_table.cc:
	  Potentially increment the cursor version on cancel() or when the
	  database is reopened, and flag the current cursor version as used
	  when a cursor is rebuilt.  Fixes #675, reported by Germán M. Bravo.
	* tests/api_backend.cc: Add regression test cursorbug1 based on
	  reproducer supplied by Germán.

Thu Apr 23 05:25:48 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc: When matching an exact phrase, if a
	  term doesn't occur where we want, we can advance "term 0" using
	  skip_to() based on where the term does next occur rather than just
	  calling next() on it.

Thu Apr 23 05:03:28 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/nearpostlist.cc: Be lazier about opening PositionList
	  objects, as that causes a read of all the data for that
	  positionlist.

Thu Apr 23 04:11:30 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/nearpostlist.cc: Make code for scanning window for duplicate
	  positions a little clearer.

Wed Apr 22 13:52:55 GMT 2015  Olly Betts <olly@tartarus.org>

	* matcher/nearpostlist.cc: Fix "/*" within comment.

Wed Apr 22 12:53:37 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/nearpostlist.cc,matcher/nearpostlist.h: Reimplement OP_NEAR
	  check.  The new implementation consistently requires the terms to
	  occur at different positions, and fixes some false negatives.
	* tests/api_query.cc: Add regression tests as loosenear1.

Mon Apr 20 12:53:04 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/phrasepostlist.cc,matcher/phrasepostlist.h: Reimplement
	  OP_PHRASE check for loose phrases - the existing implementation was
	  buggy, giving both false positives and false negatives in rare
	  cases.  Fixes #653, reported by Jean-Francois Dockes.
	* tests/api_query.cc: Add regression test loosephrase1.

Thu Apr 16 06:51:31 GMT 2015  Olly Betts <olly@survex.com>

	* common/errno_to_string.cc: Fix to build with Sun's C++ compiler.

Thu Apr 16 06:43:40 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Fix XAPIAN_TEST_CXXFLAGS macro to append to the
	  existing value of the variable, not its name.

Wed Apr 15 11:36:40 GMT 2015  Olly Betts <olly@tartarus.org>

	* tests/api_wrdb.cc: Just #ifdef out the problematic part of the
	  adddoc5 testcase for clang.

Wed Apr 15 06:25:13 GMT 2015  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Fix bug in recent fix.
	* tests/unittest.cc: Extend serialise_double() to provide regression
	  test.

Thu Apr 09 00:40:24 GMT 2015  Olly Betts <olly@survex.com>

	* net/remoteconnection.h: Avoid compiler warning from clang in new
	  getaddrinfo() code.

Wed Apr 08 11:59:00 GMT 2015  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Add missing cast to unsigned char when
	  we check if the value will fit in the double type.  On machines with
	  IEEE-754 doubles (which is most current platforms), which change
	  makes no difference as we're checking if the value cast to a double
	  is > 255.<something> which is never the case.

Wed Apr 08 10:42:43 GMT 2015  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Avoid reading one byte past the end of
	  the serialised value.  In practice this was harmless on most
	  platforms, as dbl_max_mantissa is 255 for IEEE-754 format doubles,
	  and at least GCC's std::string keeps the buffer nul-terminated.
	  Reported by Germán M. Bravo in github PR#67.
	* tests/unittest.cc: Copy the serialised value to a temporary buffer
	  before calling unserialise_double() so that valgrind can detect if
	  we read one byte past the end.

Tue Apr 07 23:02:21 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/: Fix problems with get_unique_terms() on a modified
	  chert database.
	* tests/: Add more test coverage for get_unique_terms().

Mon Apr 06 00:22:22 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_multi.cc,
	  tests/harness/backendmanager_remote.cc: Cleaner code for checking
	  the backend subtype.

Mon Mar 30 03:22:29 GMT 2015  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: If available, use F_DUPFD to dup to a file
	  descriptor which is >= 2.

Mon Mar 30 01:16:06 GMT 2015  Olly Betts <olly@survex.com>

	* api/error.cc,common/safenetdb.h,configure.ac,generate-exceptions,
	  net/remoteconnection.h,net/tcpclient.cc,net/tcpserver.cc: Use
	  getaddrinfo() instead of gethostbyname(), as a step towards
	  IPv6 support (currently we still only look for IPv4 addresses).
	  See #374.

Sun Mar 29 03:56:12 GMT 2015  Olly Betts <olly@survex.com>

	* Makefile.am,docs/Makefile.am: Add missing quoting.

Mon Mar 23 06:33:39 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/glass/glass_table.cc,
	  common/io_utils.cc,common/io_utils.h,tests/api_backend.cc:
	  Avoid using fds < 3 for writable database tables, as it risks
	  corruption is some code in the same process tries to write to stdout
	  or stderr without realising it is closed.  (Partly addresses #651)

Sat Mar 21 22:11:53 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_cursor.cc: Add comment warning that B can't be
	  used in GlassCursor's destructor.

Tue Mar 17 03:51:00 GMT 2015  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc: Fixed reversed conditonal for
	  picking the shorter position list for an exact phrase of two terms.
	  The difference this fix makes isn't dramatic, but can be measured
	  (at least with cachegrind).  Thanks to kbwt for spotting this.

Fri Mar 13 11:21:37 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_compact.cc: Make sure we open all the tables of
	  a database at the same revision when compacting.  (Fixes #649)

Thu Mar 12 04:09:07 GMT 2015  Olly Betts <olly@survex.com>

	* examples/xapian-metadata.cc: Add 'list' subcommand to list all the
	  metadata keys.

Mon Mar 09 03:08:14 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/constants.h,include/xapian/queryparser.h: Doxygen
	  comment wording tweaks.

Mon Mar 09 03:07:36 GMT 2015  Olly Betts <olly@survex.com>

	* include/xapian/constants.h,include/xapian/queryparser.h,
	  include/xapian/weight.h: Doxygen comment formatting tweaks.

Sat Mar 07 11:27:23 GMT 2015  Olly Betts <olly@tartarus.org>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Extend the
	  set of characters allowed in the start of a range to be anything
	  except for '(' and characters <= ' '.  This better matches what's
	  accepted for a range end (anything except for ')' and characters <=
	  ' ').  Reported by Jani Nikula.

Thu Mar 05 11:13:56 GMT 2015  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: When checking a single table, handle the
	  ".glass" extension on glass database tables, and use the extension
	  to guide the decision of which backend the table is from.

Thu Mar 05 04:38:21 GMT 2015  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: Don't hard-code string length as number.

Mon Feb 23 04:48:24 GMT 2015  Olly Betts <olly@survex.com>

	* api/emptypostlist.cc,api/emptypostlist.h: Fix handling of
	  OP_WILDCARD which expands to no terms when used under OP_SYNONYM.
	* tests/api_query.cc: Regression test dualprefixwildcard1.

Mon Feb 23 04:26:52 GMT 2015  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix compilation issue with previous
	  change.

Thu Feb 19 08:04:17 GMT 2015  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_nodb.cc,tests/harness/testrunner.cc,
	  tests/harness/testsuite.cc,tests/stemtest.cc: Use std::string's
	  assign() or construct from substring rather than assigning or
	  initialising with the result of calling substr().

Tue Feb 17 18:31:25 GMT 2015  Olly Betts <olly@survex.com>

	* include/Makefile.mk: Ship new file from previous commit.

Tue Feb 17 05:14:02 GMT 2015  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/constinfo.cc,api/version.cc,include/xapian.h,
	  include/xapian/constinfo.h,include/xapian/stem.h,languages/stem.cc:
	  Put the list of stemmers into the vinfo struct and renamed it to
	  const_info.

Mon Feb 16 10:18:51 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac,languages/: Merge generate-allsnowballheaders script
	  into collate-sbl.

Mon Feb 16 04:15:46 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc: Fix xapian-check on a single table.

Fri Feb 13 10:18:45 GMT 2015  Olly Betts <olly@survex.com>

	* generate-exceptions: Note that the change to not negate
	  WSAGetLastError() values internally was backported for 1.2.20.

Fri Feb 13 05:57:13 GMT 2015  Olly Betts <olly@survex.com>

	* api/,common/remoteprotocol.h,exception_data.pm,
	  include/xapian/query.h,include/xapian/queryparser.h,matcher/,
	  queryparser/queryparser.lemony,tests/api_qpbackend.cc,
	  tests/queryparsertest.cc,weight/weightinternal.cc,
	  weight/weightinternal.h: Add new OP_WILDCARD query operator, which
	  expands wildcards lazily, so now we create the PostList tree for a
	  wildcard directly, rather than creating an intermediate Query tree.
	  See ticket#48.

Wed Feb 11 22:45:26 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_table.cc: mid_point() should never fail to find
	  a split point, but just in case it does, return a usable answer.

Wed Feb 11 22:44:35 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: mid_point() should never fail to find
	  a split point, but just in case it does, return a usable answer.

Mon Feb 09 02:56:54 GMT 2015  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,matcher/localsubmatch.cc,
	  matcher/localsubmatch.h,matcher/queryoptimiser.h,tests/api_query.cc:
	  Don't convert an unweighted term which indexes all docs to an all
	  docs postlist if we need positional data for it.

Sun Jan 25 23:48:34 GMT 2015  Olly Betts <olly@survex.com>

	* configure.ac: Check for declaration of fdatasync() first, as OS X
	  has a dummy implementation in the library which is not prototyped in
	  any header.  Reported by Vlad Shablinsky.

Fri Jan 09 05:19:20 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Fix freelist handling to allow for
	  the newly loaded first block of the freelist being already used up.

Fri Jan 09 04:38:03 GMT 2015  Olly Betts <olly@survex.com>

	* common/debuglog.cc: Add '#include "errno_to_string.h"'.

Thu Jan 08 05:59:01 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_compact.cc: Fix compaction of position tables
	  for the change in key format.

Tue Jan 06 02:22:37 GMT 2015  Olly Betts <olly@survex.com>

	* HACKING: Now using automake 1.15 and libtool 2.4.4.

Mon Jan 05 08:39:47 GMT 2015  Olly Betts <olly@survex.com>

	* Makefile.am: Remove the generated .pc file on "make distclean".

Mon Jan 05 04:43:35 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_table.cc: In enter_key(), we know the insertion
	  point will be the position after the current cursor position, so
	  there's no need to call find_in_block() to locate it.

Mon Jan 05 04:42:17 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_table.cc: More assertions that c is valid.

Mon Jan 05 01:52:54 GMT 2015  Olly Betts <olly@survex.com>

	* backends/chert/chert_dbcheck.cc,backends/glass/glass_dbcheck.cc:
	  Cross-check the position and postlist tables and report positional
	  data for non-existent documents.

Mon Jan 05 01:28:28 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_dbcheck.cc: Fix decoding of positionlist keys -
	  this hadn't been updated for the key format change.

Mon Jan 05 01:25:17 GMT 2015  Olly Betts <olly@survex.com>

	* backends/glass/glass_check.cc: Check that dir_end is odd.

Tue Dec 23 21:26:49 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: More assertions about c.

Tue Dec 23 04:26:38 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Fix assertion to allow for c being
	  DIR_START - D2 in leaf blocks.

Tue Dec 23 04:01:54 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Add more assertions that c has
	  suitable values.

Tue Dec 23 03:58:00 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: In enter_key(), we know the insertion
	  point will be the position after the current cursor position, so
	  there's no need to call find_in_block() to locate it.

Tue Dec 23 03:11:12 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc: Add check that dir_end is odd.

Mon Dec 22 23:28:54 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Document situations in which the
	  cursor can be left pointing before DIR_START.

Mon Dec 22 03:39:14 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Add more freelist assertions.

Mon Dec 22 03:15:50 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Allow restricting the number of
	  freelist entries per block by setting GLASS_FREELIST_SIZE.

Sun Dec 21 20:55:47 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Document the enum stat_flags values.

Sun Dec 21 20:51:47 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Fix indentation.

Sat Dec 20 10:40:44 GMT 2014  Sébastien Debrard <sebastien.debrard@gmail.com>

	* Makefile.am,configure.ac,pkgconfig/,xapian-core.spec.in: Generate a
	  file for pkg-config.  (Fixes#540)

Fri Dec 19 22:30:39 GMT 2014  Olly Betts <olly@survex.com>

	* common/errno_to_string.cc: Need stdlib.h under mingw.

Fri Dec 19 04:38:56 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_check.cc: Distinguish between a block in use
	  and in the freelist, and a block in the freelist more than once.

Fri Dec 19 04:37:14 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc,backends/glass/glass_freelist.h:
	  Avoid any mutual recursion between GlassFreeList::get_block() and
	  GlassFreeList::mark_block_unused().

Thu Dec 18 10:28:17 GMT 2014  Olly Betts <olly@survex.com>

	* common/safesyssocket.h: Include safeerrno.h when we use errno.

Thu Dec 18 06:17:18 GMT 2014  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Use POSIX O_NONBLOCK in preference to O_NDELAY
	  which has different semantics on BSD and System V.

Wed Dec 17 02:59:54 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Drop probe for gethostbyaddr() - we've not used it for
	  over 8.5 years (since e33972a5).

Wed Dec 17 02:33:36 GMT 2014  Olly Betts <olly@survex.com>

	* common/internaltypes.h: Take CHAR_BIT into account when choosing
	  types for uint2, uint4 and uint8.

Wed Dec 17 02:30:14 GMT 2014  Olly Betts <olly@survex.com>

	* api/error.cc,backends/chert/chert_btreebase.cc,
	  backends/chert/chert_table.cc,backends/flint_lock.cc,
	  backends/glass/glass_table.cc,common/,configure.ac,
	  net/remoteconnection.cc: Add errno_to_string() function which is
	  thread-safe where a suitable alternative to strerror() exists.

Tue Dec 16 06:54:32 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Add missing m4 quoting.  Generated configure file is
	  unchanged.

Tue Dec 16 06:28:21 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Don't check for strerror - it's specified by C89, and
	  we weren't using the result of the check anyway.

Tue Dec 16 03:59:39 UTC 2014  Sébastien Debrard <sebastien.debrard@gmail.com>

	* api/omenquire.cc,backends/multi/multi_postlist.cc,
	  tests/api_anydb.cc,tests/api_db.cc: Prefer ++x to x++.

Tue Dec 16 03:50:41 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Define MINGW_HAS_SECURE_API under mingw to get
	  _putenv_s() declared in stdlib.h.

Sun Dec 14 09:42:01 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/database.h: Make overloaded forms of
	  Database::allterms_begin() and Database::allterms_end() use default
	  parameters instead.

Sat Dec 13 02:48:10 GMT 2014  Olly Betts <olly@survex.com>

	* api/error.cc,generate-exceptions,net/remoteconnection.h: On
	  Windows, avoid defining EADDRINUSE, etc if they're already defined,
	  and use WSAE* constants un-negated, as they start from a high value
	  so won't collide with E* constants.

Fri Dec 12 03:41:02 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_freelist.cc: Avoid infinite recursion when we
	  hit the end of the freelist block we're reading and the end of the
	  block we're writing at the same time.

Thu Dec 11 20:45:28 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_version.cc: Use str() rather than sprintf().

Thu Dec 11 03:21:46 GMT 2014  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Fix comment.

Thu Dec 11 03:20:56 GMT 2014  Olly Betts <olly@survex.com>

	* api/compactor.cc,api/error.cc,api/replication.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/chert/chert_table.cc,
	  backends/glass/glass_databasereplicator.cc,
	  backends/glass/glass_table.cc: Remove unnecessary includes of
	  <cstdio> in files which used to need it for rename() but no longer
	  do.

Fri Dec 05 11:30:05 GMT 2014  Olly Betts <olly@survex.com>

	* ChangeLog,ChangeLog.0,ChangeLog.examples,
	  backends/chert/chert_btreebase.cc,backends/chert/chert_database.h,
	  languages/compiler/driver.c,languages/turkish.sbl: Fix typos reported
	  by Veres Lajos.

Thu Dec 04 02:17:46 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Fix detection of fdatasync(), which appears to have
	  been broken practically forever - this means we've probably been
	  using fsync() instead, which probably isn't a big additional
	  overhead.

Wed Dec 03 09:38:24 GMT 2014  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Quote png filenames we run through pngcrush to
	  avoid problems if there's an oddly-named extra PNG file in the
	  directory.

Tue Dec 02 02:58:59 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/chert/chert_databasereplicator.cc,backends/,
	  backends/glass/glass_compact.cc,backends/glass/glass_database.cc,
	  backends/glass/glass_databasereplicator.cc,
	  backends/remote/remote-database.cc,backends/remote/remote-database.h,
	  include/xapian/constants.h,include/xapian/database.h,
	  include/xapian/dbfactory.h,net/,tests/api_backend.cc: Add new flag
	  Xapian::DB_RETRY_LOCK which allows opening a database for writing
	  to wait until it can get a write lock.  (fixes#275)

Tue Dec 02 02:55:33 GMT 2014  Olly Betts <olly@survex.com>

	* backends/glass/glass_database.h: Document parameter to internal
	  method

Sun Nov 30 15:55:20 GMT 2014  James Aylett <james@tartarus.org>

	* HACKING: improve OS X docs build information.

Thu Nov 27 04:00:38 GMT 2014  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc,backends/flint_lock.cc,backends/flint_lock.h,
	  examples/copydatabase.cc,tests/api_backend.cc: Drop support code for
	  building on OS/2 with EMX - EMX was last updated in 2001 and comes
	  with GCC 3.2.1, which pre-dates C++11 and we're going to require
	  a compiler with good C++11 support in the near future.

Thu Nov 27 03:15:51 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Rename svn-ci to xapian-commit (see #621).

Thu Nov 27 03:05:18 GMT 2014  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Use F_OFD_SETLK where available, which
	  avoids having to fork() a child process to hold the lock.  This
	  currently requires Linux kernel >= 3.15, but it has been submitted
	  to POSIX so hopefully will be widely supported eventually.  Thanks
	  to Austin Clements for pointing out this now exists.

Wed Nov 26 04:03:45 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/geospatial.h: Drop documentation of parameter which
	  the method doesn't actually take.

Wed Nov 26 04:03:24 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix incorrect parameter name in doxygen
	  comment.

Wed Nov 26 03:29:28 GMT 2014  Olly Betts <olly@survex.com>

	* docs/doxygen_source.conf.in: @MAKEINDEX@ isn't substituted, so just
	  use literal 'makeindex'.

Wed Nov 26 03:28:32 GMT 2014  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Update to
	  avoid warnings about obsolete tags from newer doxygen.

Tue Nov 25 21:13:51 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Update link to cygwin FAQ.

Tue Nov 25 01:55:17 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Update details of building Xapian packages.

Tue Nov 25 01:48:44 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Update for SVN to git migration.

Mon Nov 24 19:50:32 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.3.2.

Mon Nov 24 03:59:02 GMT 2014  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Add missing '\' at end of line in previous
	  commit.

Mon Nov 24 03:14:22 GMT 2014  Olly Betts <olly@survex.com>

	* languages/: Install the stopword lists as
	  ${pkgdatadir}/stopwords/LANG.list.

Sun Nov 23 23:56:02 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,NEWS,NEWS.SKELETON,api/compactor.cc,
	  api/replication.cc,backends/Makefile.mk,backends/brass/,
	  backends/databasereplicator.cc,backends/dbcheck.cc,
	  backends/dbfactory.cc,backends/glass/,bin/Makefile.mk,
	  common/Makefile.mk,common/pack.h,common/pretty.h,configure.ac,docs/,
	  include/xapian/,net/replication_protocol.rst,tests/,tests/harness/:
	  Rename 'brass' backend to 'glass'.

Sun Nov 23 22:23:00 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc,backends/brass/brass_freelist.h:
	  Set the revision in BrassFreeList::write_block().

Thu Nov 20 21:36:35 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.h: Reset flw_appending when we unpack
	  a freelist.

Thu Nov 20 21:36:15 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc: Fix comment typo.

Thu Nov 20 03:53:32 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc: Fix end-of-block condition when
	  walking the freelist during database consistency checking.

Thu Nov 20 02:32:37 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc: Wrap comment line.

Thu Nov 20 02:31:54 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc: Straighten out confusing comments.

Sun Nov 16 23:49:38 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Thu Nov 13 20:35:25 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc: Wrap comment line.

Tue Nov 11 22:17:48 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,api/queryinternal.h: Move all the get_op()
	  definitions out of the header as they're virtual and there's not
	  much scope for devirtualisation.

Tue Nov 11 02:58:05 GMT 2014  Olly Betts <olly@survex.com>

	* exception_data.pm: Just have one copy of the licence boilerplate.

Sun Nov 09 22:38:04 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Fri Nov 07 00:49:22 GMT 2014  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "Modify the
	  %nonassoc directive in lemon so that it generates a run-time error
	  rather than a parsing conflict. This changes is due to a bug report
	  on the mailing list. SQLite does not use the %nonassoc directive in
	  its grammar so this change does not affect SQLite."  Generated code
	  is identical.

Fri Nov 07 00:44:57 GMT 2014  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "Fix harmless
	  compiler warning in LEMON."  Generated code is identical.

Fri Nov 07 00:39:44 GMT 2014  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "In LEMON, limit the
	  size of the grammar file to 100MB. This ensures that the program
	  will never experience integer overflow. To be doubly sure, use
	  calloc() instead of malloc() when allocating arrays." Generated code
	  is identical.

Fri Nov 07 00:34:26 GMT 2014  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "Add the
	  "%token_class" directive to the LEMON parser generator. This opens
	  up the possibility of simplifying the parser. Also remove all calls
	  to sprintf(), strcpy(), and strcat() from LEMON to avoid compiler
	  warnings on OpenBSD. (Aside: It is this change to avoid harmless
	  compiler warnings that was the cause of the reason spat of bugs.)"
	  Generated code is identical aside from whitespace changes in
	  queryparser_token.h.

Fri Nov 07 00:17:18 GMT 2014  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "In Lemon, when
	  comparing the output to the *.h file to see if it has changed, make
	  sure that the proposed new output and the preexisting output are the
	  same size before deciding that they are the same".  Generated code
	  is identical, but this will fix misbehaviour in a build from a
	  non-clean tree if new tokens get appended to queryparser_token.h.

Thu Nov 06 22:23:27 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Now using doxygen 1.8.8.

Thu Nov 06 04:18:32 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Now using libtool 2.4.3.

Wed Nov 05 21:38:45 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc: Handle DBCHECK_FIX for a zero sized
	  .DB file.

Wed Nov 05 21:02:21 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc: After we successfully regenerate
	  baseA, remove any empty baseB file to prevent it causing problems.
	  Tracked down with help from Phil Hands.

Wed Nov 05 20:58:27 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc: Fix DBCHECK_FIX to be able to find a
	  level 0 root block (happens when a table has sufficiently little
	  data in that it all fits in one block).

Sun Nov 02 21:14:43 GMT 2014  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Fix typo.

Tue Oct 28 23:35:10 GMT 2014  Olly Betts <olly@survex.com>

	* docs/replication.rst: Fix typo.

Tue Oct 28 02:34:54 GMT 2014  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Use a modern class in postingsource example.
	  (Noted by James Aylett)

Mon Oct 27 21:06:55 GMT 2014  Olly Betts <olly@survex.com>

	* docs/,net/Makefile.mk,net/remote_protocol.rst,
	  net/replication_protocol.rst: Move the protocol docs for the remote
	  and replication protocols into the net/ subdirectory.

Mon Oct 27 19:19:59 GMT 2014  Olly Betts <olly@survex.com>

	* Makefile.am,api/Makefile.mk,api/dir_contents,backends/Makefile.mk,
	  backends/brass/Makefile.mk,backends/brass/dir_contents,
	  backends/chert/Makefile.mk,backends/chert/dir_contents,
	  backends/dir_contents,backends/inmemory/Makefile.mk,
	  backends/inmemory/dir_contents,backends/multi/Makefile.mk,
	  backends/multi/dir_contents,backends/remote/Makefile.mk,
	  backends/remote/dir_contents,bin/Makefile.mk,bin/dir_contents,
	  common/Makefile.mk,common/dir_contents,configure.ac,dir_contents,
	  docs/,examples/Makefile.mk,examples/dir_contents,expand/Makefile.mk,
	  expand/dir_contents,geospatial/Makefile.mk,geospatial/dir_contents,
	  include/Makefile.mk,include/dir_contents,include/xapian/dir_contents,
	  languages/Makefile.mk,languages/dir_contents,m4-macros/dir_contents,
	  m4/dir_contents,matcher/Makefile.mk,matcher/dir_contents,
	  net/Makefile.mk,net/dir_contents,preautoreconf,
	  queryparser/Makefile.mk,queryparser/dir_contents,tests/Makefile.am,
	  tests/dir_contents,tests/harness/Makefile.mk,
	  tests/harness/dir_contents,tests/perftest/Makefile.mk,
	  tests/perftest/dir_contents,tests/soaktest/Makefile.mk,
	  tests/soaktest/dir_contents,unicode/Makefile.mk,unicode/dir_contents,
	  weight/Makefile.mk,weight/dir_contents: Remove the dir_contents files
	  and all the machinery to handle them.

Sat Oct 25 19:25:06 GMT 2014  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/smallvector.h,
	  include/xapian/query.h: Stop using a reference where we may end up
	  passing *NULL, as that's invalid.  Thanks Nick Lewycky and ubsan
	  for helping track this down.
	* tests/api_postingsource.cc: Fix testsuite to avoid passing literal
	  NULL - pass nullptr for C++11 and don't bother with that part of
	  the testcase for older C++.

Sat Oct 25 19:05:07 GMT 2014  Olly Betts <olly@survex.com>

	* weight/dlhweight.cc,weight/dphweight.cc: Avoid dividing by zero when
	  the collection size is 0.

Fri Oct 24 23:04:24 GMT 2014  Gaurav Arora <gauravarora.daiict@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_backend.cc,
	  tests/api_nodb.cc,tests/api_weight.cc,weight/Makefile.mk,
	  weight/lmweight.cc: Add Unigram LMWeight class.

Tue Oct 21 19:19:32 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update for 1.2.19 release.

Mon Oct 20 00:47:32 GMT 2014  Olly Betts <olly@survex.com>

	* .gitignore,docs/.gitignore,tests/.gitignore,unicode/.gitignore:
	  Update to ignore new generated files.

Sat Oct 18 06:15:52 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Don't provide a default expansion scheme
	  name in Enquire::set_expansion_scheme().

Fri Oct 17 00:33:55 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,matcher/: Split NearPostList out into separate
	  source file and header.

Wed Oct 15 04:33:31 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,matcher/exactphrasepostlist.cc: We never try to
	  build an ExactPhrasePostList over 0 or 1 terms, so simply assert we
	  don't, rather than having an explicit check for it in the code.

Tue Oct 14 02:47:02 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/phrasepostlist.cc,tests/api_backend.cc: If the anchor term
	  for a phrase is the first or last, set the min or max to its
	  position respectively.  Fixes the testcase in #657, but may not be
	  a complete fix.

Sun Oct 12 12:03:10 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Fri Oct 10 10:53:38 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc: The
	  table is sync-ed after the base file, so it's the last table we want
	  to full-sync, not the last base file.

Thu Oct 09 02:39:00 GMT 2014  Olly Betts <olly@survex.com>

	* common/debuglog.h: Suppress unused typedef warnings from debugging
	  logging macros, which occur in functions which always exit via
	  throwing an exception.

Thu Oct 09 01:45:00 GMT 2014  Olly Betts <olly@survex.com>

	* tests/harness/fdtracker.cc: Fix code typo in recent change to skip
	  apparent leaks of /dev/urandom.

Thu Oct 09 01:43:02 GMT 2014  Olly Betts <olly@survex.com>

	* common/pretty.h: Fix debug logging code to compile with clang.
	  (fixes #657, reported by Germán M. Bravo)

Wed Oct 08 04:43:05 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If an empty RSet is specified, just handle it
	  as if no RSet were specified.

Mon Oct 06 21:41:58 GMT 2014  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Remove .replicatmp upon "make clean".

Fri Sep 19 05:31:15 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix compilation with clang.  Reported by
	  Germán M. Bravo.

Fri Sep 12 17:54:34 GMT 2014  Olly Betts <olly@survex.com>

	* docs/overview.rst: Add missing database path to example of using
	  xapian-progsrv in a stub database file.

Thu Sep 11 21:33:49 GMT 2014  Olly Betts <olly@survex.com>

	* include/Makefile.mk,include/xapian/enquire.h,
	  include/xapian/iterator.h: Add simple API to help with creating
	  language-idiomatic iterator wrappers.

Wed Sep 10 17:02:18 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc: If we hit an unknown query serialisation,
	  report the numeric code for it in the exception thrown.

Wed Sep 10 16:59:20 GMT 2014  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Enable some disabled cases which actually
	  work (in some cases with slightly tweaked expected answers which are
	  equivalent to those that were shown).

Fri Sep 05 17:41:53 GMT 2014  Olly Betts <olly@survex.com>

	* tests/harness/fdtracker.cc: Don't report apparent leaks of fds
	  opened on /dev/urandom - at least on Linux, something in the C
	  library seems to lazily open it, and the report of a possible leak
	  followed by assurance that it's OK really is just noise we could
	  do without.

Fri Sep 05 14:06:08 GMT 2014  Olly Betts <olly@survex.com>

	* common/pretty.h: Add new brass-related types.

Thu Sep 04 20:51:16 GMT 2014  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Fix incorrect return type in logging
	  annotations for InMemory::open().

Thu Sep 04 20:48:37 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc:
	  Fix logging annotations for get_freqs() to reflect that it now has
	  void return type.

Thu Sep 04 20:21:32 GMT 2014  Olly Betts <olly@survex.com>

	* api/,backends/brass/,backends/chert/,backends/dbfactory_remote.cc,
	  matcher/mergepostlist.cc,matcher/remotesubmatch.cc,
	  net/progclient.cc: Add missing RETURN() markup for debug logging,
	  highlighted by warning from recent GCC.

Thu Sep 04 18:02:38 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc,backends/brass/brass_freelist.h:
	  Make the BrassTable parameter a const pointer.

Thu Sep 04 17:13:57 GMT 2014  Olly Betts <olly@survex.com>

	* common/io_utils.cc: Reading or writing a block will almost always
	  complete in one call, so streamline that case.

Wed Sep 03 19:30:00 GMT 2014  Olly Betts <olly@survex.com>

	* common/internaltypes.h: Update comment to reflect C++11 now being
	  out.

Wed Sep 03 19:29:09 GMT 2014  Olly Betts <olly@survex.com>

	* common/internaltypes.h,configure.ac: Make uint2 available.

Wed Sep 03 19:27:41 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.h: Remove method which is declared but
	  never defined.

Wed Sep 03 18:52:40 GMT 2014  Olly Betts <olly@survex.com>

	* generate-exceptions,include/xapian/: Use XAPIAN_IN_XAPIAN_H rather
	  than XAPIAN_INCLUDED_XAPIAN_H in the direct inclusion of subheader
	  checks.  Currently neither will catch the case of the user including
	  a sub-header after <xapian.h> since the include guard for the
	  subheader will stop us getting to the direct inclusion check, but
	  XAPIAN_IN_XAPIAN_H will work if we move the check outside the
	  include guard.

Wed Sep 03 18:29:41 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/constants.h: Hide internal constants from external
	  users.

Tue Sep 02 14:15:50 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_spellingwordslist.h: Explicit include
	  brass_cursor.h since we actually use BrassCursor here.

Mon Sep 01 22:03:11 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: New testcase readonlyparentdir1 to ensure that
	  commit works with a read-only parent directory.

Mon Sep 01 21:51:45 GMT 2014  Olly Betts <olly@survex.com>

	* tests/harness/testrunner.h: Drop "flint" flag - flint was removed
	  from trunk some time ago.

Mon Sep 01 21:42:31 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/: Eliminate brass_doclen_t in favour of just using
	  Xapian::termcount.

Mon Sep 01 21:28:39 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.h: Tweak to ease upcoming big merge.

Mon Sep 01 20:59:40 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/,backends/dbcheck.cc: Only create a btree entry for
	  the document data if it is non-empty.  The table is now lazily
	  created, so won't exist if no documents have document data set.

Mon Sep 01 16:54:44 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_record.cc,backends/brass/brass_record.h: Remove
	  BrassRecordTable::get_doccount() as it is no longer used.

Mon Sep 01 16:51:04 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/: Track doccount in the database stats.

Mon Sep 01 16:27:15 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc: Update comment and exception
	  message not to talk about "consistent state", as that was to do
	  with the base files.

Mon Sep 01 14:57:02 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc: Explicitly include brass_defs.h.

Mon Sep 01 14:48:01 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/: Eliminate backends/brass/brass_types.h.

Fri Aug 29 21:06:22 GMT 2014  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: Fix checking a single brass table.

Thu Aug 28 16:04:59 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/chert/chert_check.cc,
	  bin/xapian-check.cc,include/xapian/constants.h: Rename
	  DBCHECK_SHOW_BITMAP to DBCHECK_SHOW_FREELIST.

Tue Aug 26 22:31:32 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Fri Aug 22 09:09:52 GMT 2014  Gaurav Arora <gauravarora.daiict@gmail.com>

	* api/,backends/brass/,backends/chert/,
	  backends/contiguousalldocspostlist.cc,
	  backends/contiguousalldocspostlist.h,backends/database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
	  backends/remote/,common/remoteprotocol.h,docs/sorting.rst,
	  include/xapian/database.h,include/xapian/postingiterator.h,
	  include/xapian/weight.h,matcher/,net/remoteserver.cc,
	  net/remoteserver.h,tests/,weight/: Provide the number of distinct
	  terms in the document to weighting schemes.  The current
	  implementation for the disk-based backends is a bit inefficient as
	  it has to look at the termlist table entry for the document.

Thu Aug 21 12:29:57 GMT 2014  Olly Betts <olly@survex.com>

	* weight/weight.cc: Add missing parameter to debug logging for
	  Weight::init_().

Tue Aug 19 14:25:39 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.h: Don't sync handles for tables which
	  aren't open.  Reported by Austin Clements.

Fri Aug 15 13:13:43 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: freecode no longer accepts updates, so drop that item from
	  the release checklist.

Wed Aug 13 23:55:24 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc:
	  Only full sync the final base file written.

Mon Aug 11 05:30:20 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: For Sun's C++ compiler, pass -library=Crun separately
	  since libtool looks for " -library=stlport4 " (with the spaces).
	  (fixes#650)

Mon Aug 11 03:00:15 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Rename XAPIAN_TEST_CXXFLAGS_ to XAPIAN_TEST_CXXFLAGS
	  (since the latter is never used) and make it take a variable to
	  add the flags to.  Also, fix it to restore CXXFLAGS correctly if
	  the success case contains "break".

Wed Aug 06 10:49:46 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/compactor.h: Fix formatting of doxygen comment.

Wed Aug 06 10:49:20 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/constants.h: Whitespace tweak.

Wed Aug 06 10:08:09 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc,common/io_utils.h,
	  include/xapian/constants.h: Add DB_FULL_SYNC flag - if this is set
	  for a database, we use the Mac OS X F_FULL_SYNC instead of
	  fdatasync()/fsync()/etc on the version file when committing.

Mon Aug 04 05:58:13 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc: Whitespace tweak.

Mon Aug 04 05:57:27 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc: When compacting, sync all the
	  tables together at the end.

Mon Aug 04 05:42:21 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/brass/brass_version.cc:
	  Clean up temporary file in BrassVersion::sync() in all failure
	  cases.

Mon Aug 04 05:21:02 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/: In DB_DANGEROUS mode, update the version file
	  in-place.

Fri Aug 01 02:49:57 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc: Lock the target database while
	  we're compacting to it, which has the side effect of creating the
	  'flintlock' file there.

Fri Aug 01 02:35:35 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/visibility.h: Add link to GCC Visibility wiki page.

Thu Jul 31 02:54:40 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_weight.cc,weight/bb2weight.cc: Avoid calculating logs of 0
	  or negative values by clamping the normalise wdf to at most one less
	  than the collection frequency, and the collection size to at least
	  2.

Thu Jul 31 02:48:35 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_weight.cc,weight/bb2weight.cc: Fix upper bound for
	  BB2Weight to not be scaled twice by wqf and factor.

Wed Jul 30 05:48:46 GMT 2014  Olly Betts <olly@survex.com>

	* weight/bb2weight.cc: Fix comment typo, and capitalise "Stirling" in
	  comments.

Wed Jul 30 05:47:31 GMT 2014  Olly Betts <olly@survex.com>

	* weight/bb2weight.cc: Whitespace cleanup.

Wed Jul 30 05:43:59 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/bb2weight.cc: Optimise BB2Weight and
	  fix incorrect upper bound in some cases.

Tue Jul 29 07:20:57 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc: Remove assertion that table sizes
	  are all the same, and redundant assertion that the unserialised
	  blocksize is >= 2048.  Fixes set-but-not-used warning in
	  non-assertion build.

Mon Jul 28 06:35:45 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc,
	  backends/brass/brass_databasereplicator.h,
	  backends/brass/brass_table.cc: Replace enum table_id with enum
	  Brass::table_type.

Mon Jul 28 04:28:12 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Note the freelist implementation fixed #40.

Mon Jul 28 04:26:07 GMT 2014  Olly Betts <olly@survex.com>

	* api/compactor.cc,backends/brass/,backends/dbcheck.cc,
	  tests/api_wrdb.cc: Eliminate the base files, and instead store the
	  root block and freelist pointers in the "iambrass" file.

Mon Jul 28 03:22:22 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc: Remove variable which is
	  set but never used.

Sun Jul 27 01:56:58 GMT 2014  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: Don't try to write output when no output stream
	  is specified in the case where the database open fails and so we
	  can't check changes files.

Thu Jul 24 21:12:23 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Fri Jul 11 10:44:48 GMT 2014  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Improve BM25 upper bound in the case when our
	  wdf upper bound > our document length lower bound.  Thanks to
	  Craig Macdonald for pointing out this trick.

Thu Jul 10 13:29:50 GMT 2014  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Pre-multiply termweight by (param_k1 + 1).

Sat Jun 28 11:00:49 GMT 2014  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Sort the stop.list files (since loading a
	  sorted list is likely to be more efficient) and remove any duplicate
	  entries.

Sat Jun 28 10:48:03 GMT 2014  Olly Betts <olly@survex.com>

	* languages/stopwords/finnish/stop.txt,
	  languages/stopwords/norwegian/stop.txt: Remove duplicate entries.

Sat Jun 28 10:38:56 GMT 2014  Olly Betts <olly@survex.com>

	* languages/stopwords/russian/stop.txt: Convert from KOI8-R to UTF-8.

Mon Jun 23 02:26:24 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: configure.ac: Add hints for which package to install
	  for rst2html

Mon Jun 23 00:54:05 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Use AS_MKDIR_P instead of test -d || mkdir.

Sun Jun 22 07:32:11 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Sat Jun 21 03:45:19 GMT 2014  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Use $(MKDIR_P) instead of test -d || mkdir 3
	  times.

Sat Jun 21 03:44:37 GMT 2014  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Generate the directories for the minimised
	  stopword files in a VPATH build.

Tue Jun 17 13:36:40 GMT 2014  Assem Chelli <assem.ch@gmail.com>

	* include/xapian/queryparser.h: Add the example of initializing
	  SimpleStopper using a file as a doccomment.

Tue Jun 17 13:30:09 GMT 2014  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Remove trailing whitespace (some of which
	  breaks the parsing to get the lists of source files to pass to
	  doxygen).

Tue Jun 17 13:24:59 GMT 2014  Assem Chelli <assem.ch@gmail.com>

	* languages/: Add stopwords lists from Snowball plus an Arabic one.

Tue Jun 17 11:48:12 GMT 2014  Olly Betts <olly@survex.com>

	* weight/dlhweight.cc: Fix comment typo.

Tue Jun 17 11:46:40 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* weight/dlhweight.cc: Improve the upper bound on DLH ~3-4 times.

Tue Jun 17 11:32:22 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/dphweight.cc: Combine factor into
	  constants calculated in init().  Improve get_maxpart() a little
	  in the (common) case where the wdf upper bound is less than half
	  the document length upper bound.

Tue Jun 17 03:42:36 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc,unicode/UnicodeData-README.txt,
	  unicode/UnicodeData.txt: Update to Unicode 7.0.0.

Mon Jun 16 14:13:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* weight/dphweight.cc: Improved upper bound for DPH.

Mon Jun 16 13:58:24 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/ifb2weight.cc,weight/ineb2weight.cc,
	  weight/inl2weight.cc: Include 'factor' in the constants we calculate
	  in init_().

Mon Jun 16 13:53:05 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/dlhweight.cc: DLH optimization.

Mon Jun 16 13:02:24 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Need python3-sphinx to generate docs for python3.

Mon Jun 16 12:37:13 GMT 2014  Assem Chelli <assem.ch@gmail.com>

	* HACKING: Note sphinx-doc now needed (for Python bindings API docs).

Mon Jun 16 05:35:03 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING,configure.ac,docs/Makefile.am,docs/doxygen_api.conf.in:
	  Don't build, ship or install PDF versions of the API docs by
	  default, but provide an easy way for people to build it for
	  themselves if they want it.

Mon Jun 16 04:20:40 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Improve the descriptions of the
	  stem_strategy values.  (Reported by "oilap" on #xapian)

Fri Jun 13 07:52:53 GMT 2014  Olly Betts <olly@survex.com>

	* weight/dphweight.cc: Fix some comment typos.

Fri Jun 13 07:47:32 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/dphweight.cc: Optimized DPH code.

Fri Jun 13 01:39:07 GMT 2014  Olly Betts <olly@survex.com>

	* examples/quest.cc: Fix ordering of "bm25" and "bool" in allegedly
	  sorted list, so that --weight bm25 and --weight bool work.

Thu Jun 12 13:49:19 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/extraweightpostlist.h: Add an assertion that get_sumextra()
	  returns a weight contribution which is <= the upper bound which
	  get_maxextra() returns.

Thu Jun 12 13:30:55 GMT 2014  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,matcher/synonympostlist.cc: Add assertions that
	  get_sumpart() returns a weight contribution which is <= the upper
	  bound which get_maxpart() returns.

Wed Jun 11 05:34:16 GMT 2014  Olly Betts <olly@survex.com>

	* languages/hungarian.sbl: Fix incorrect Unicode codepoints for
	  o-double-acute and u-double-acute in Hungarian Snowball stemmer.
	  Reported by Tom Lane to snowball-discuss.

Tue Jun 10 10:59:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/ineb2weight.cc: Optimized IneB2:
	  Reduced number of calculations in get_sumpart and tightened upper
	  bound.

Tue Jun 10 10:23:09 GMT 2014  Olly Betts <olly@survex.com>

	* weight/ineb2weight.cc: Fix closing brace indentation.

Tue Jun 10 09:58:18 GMT 2014  Olly Betts <olly@survex.com>

	* examples/quest.cc: Rework the weight name lookup to use a table like
	  the other lookups.  Change the weight names not to include "weight".

Tue Jun 10 08:15:18 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/ifb2weight.cc: Optimized
	  upper bound and weighting formula in IfB2Weight.

Tue Jun 10 05:34:52 GMT 2014  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,weight/inl2weight.cc: Optimized
	  upper bound and weighting formula in InL2Weight.

Tue Jun 10 05:09:08 GMT 2014  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add --weight option to allow the weighting scheme
	  to be specified.

Thu Jun 05 03:42:51 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,tests/api_backend.cc: Fix
	  Database::get_wdf_upper_bound("") not to fail with an assertion.

Tue Jun 03 22:59:10 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: Use RETURN() instead of return in methods
	  with LOGCALL annotations.

Mon Jun 02 13:15:36 GMT 2014  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Actually ship, process and install geospatial.rst.

Mon Jun 02 11:40:27 GMT 2014  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Ship collate-sbl script.

Thu May 29 12:13:06 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Replace a link to the outdated autotools "goat book" with a
	  link to the "Portable Shell" chapter of the autoconf manual.

Thu May 29 03:31:10 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Allow
	  the user to specify how long a snippet they want.  Only add "..." if
	  the sample was actually truncated.

Wed May 28 12:52:26 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/snipper.h: Add the standard guards to prevent user
	  code from including this header directly.

Tue May 27 04:19:12 GMT 2014  Olly Betts <olly@survex.com>

	* include/Makefile.mk: Ship include/xapian/snipper.h in tarball.

Tue May 27 04:03:09 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,include/xapian/snipper.h,
	  tests/generate-api_generated: Add missing assignment operator to
	  Xapian::Snipper class.

Tue May 27 03:43:03 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/snipper.h: Add missing doxygen comments.

Tue May 27 03:41:08 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/snipper.h,tests/api_snipper.cc: Whitespace tweaks.

Tue May 27 03:36:19 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,include/xapian/snipper.h,tests/api_snipper.cc: Remove
	  getters for obtaining info about the relevance model, and instead
	  add a get_description() method which includes all such info in the
	  returned description.

Tue May 27 03:06:36 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Use an iterator instead of subscripting.

Tue May 27 03:03:33 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Use
	  appropriate named types rather than "int" or "unsigned int".

Tue May 27 03:02:48 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipperinternal.h: Remove constants which are no longer used.

Tue May 27 02:48:44 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h:
	  Rework Snipper methods set_smoothing_coef() and set_window_size() as
	  optional parameters of generate_snippet().

Tue May 27 02:33:39 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h: Just pass rm_docno through to
	  Snipper::Internal::calculate_rm() as a parameter rather than storing
	  it in a member variable.

Tue May 27 02:25:41 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Use clear() method to empty a container.

Tue May 27 02:22:37 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_snipper.cc: Drop unused <algorithm>.

Tue May 27 02:21:53 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Eliminate ret_value variable.

Tue May 27 02:20:25 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Avoid unnecessary substr operations.

Tue May 27 02:17:32 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Prefer ++i to i++ in loops.

Tue May 27 02:16:14 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Use TermIterator::positionlist_count().

Tue May 27 02:14:52 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc,api/snipperinternal.h,include/xapian/snipper.h: Fix
	  typos in comments and variable names in new snipper code.

Tue May 27 02:13:09 GMT 2014  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Hook up new Snipper API tests to actually be
	  used.

Tue May 27 02:09:49 GMT 2014  Mihai Bivol <mm.bivol@gmail.com>

	* tests/api_snipper.cc: Add Snipper API tests.

Tue May 27 02:04:26 GMT 2014  Olly Betts <olly@survex.com>

	* api/snipper.cc: Add missing #include <config.h>.

Tue May 27 02:00:32 GMT 2014  Mihai Bivol <mm.bivol@gmail.com>

	* api/Makefile.mk,api/snipper.cc,api/snipperinternal.h,
	  include/xapian.h,include/xapian/snipper.h: Add Xapian::Snipper
	  class.

Mon May 26 05:52:22 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/brass/brass_postlist.h,
	  backends/chert/chert_postlist.h,backends/database.h: Fix comment
	  typos.

Fri May 23 11:59:26 GMT 2014  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Pass std::string by const reference.

Thu May 22 06:31:12 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: Fix the check for a term which matches all
	  documents to use the sub-db termfreq, not the combined db termfreq.

Thu May 22 06:00:47 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: If a term matches all documents and its
	  weight doesn't depend on its wdf, we can optimise it to MatchAll
	  (the previous requirement that maxpart == 0 was unnecessarily
	  strict).

Thu May 22 05:52:15 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc,tests/api_percentages.cc: When we optimise
	  a postlist for a term which matches all documents to use MatchAll,
	  we still need to set a weight object on it to get percentages
	  calculated correctly.

Thu May 22 04:08:35 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,matcher/localsubmatch.cc,
	  matcher/localsubmatch.h,matcher/queryoptimiser.h: Refactor to group
	  most of the code to create a postlist for a term and set its weight
	  into one place.

Mon May 19 00:08:04 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.cc,tests/api_backend.cc: When we start
	  to write a new freelist block, set the revision on the old one we
	  write out correctly, and don't "-1" out the next block pointer
	  before we write out the block in this case.  New regression testcase
	  newfreelistblock1.
	* backends/brass/brass_freelist.cc: Add assertions that the freelist
	  block has a next pointer when fl_end is a different block to fl.

Fri May 16 04:35:21 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_freelist.h: Fix BrassFreeList::swap() to also
	  swap the flw_appending members.

Thu May 15 12:51:15 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Add checking config/config.* are up to date to the
	  release checklist.

Thu May 15 12:47:28 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Now using automake 1.14.1 to bootstrap snapshots and
	  1.3.x releases.

Wed May 14 03:18:37 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc: Only serialise parameter where it is actually
	  used.

Fri May 09 01:56:48 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Now using doxygen 1.8.7 to bootstrap tarballs.

Mon May 05 05:37:32 GMT 2014  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc,backends/chert/chert_dbcheck.cc,
	  backends/dbcheck.cc: Improve DBCHECK_FIX - if fixing a whole
	  database, we now take the revision from the first table we
	  successfully look at, which should be correct in most cases,
	  and is definitely better than trying to determine the revision
	  of each broken table independently.

Fri May 02 02:36:05 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/valuestreamdocument.cc,matcher/valuestreamdocument.h: Put
	  the docid in the sub-database into the ValueStreamDocument object as
	  that's what Xapian::Document::get_docid() is documented to return.
	  (fixes#636, reported by Jeff Rand).

Thu May 01 13:25:35 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/database.h,
	  matcher/valuestreamdocument.cc: Eliminate
	  Database::get_document_lazily_() completely.

Thu May 01 11:48:00 GMT 2014  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/slowvaluelist.cc,
	  backends/slowvaluelist.h: Don't wrap the subdatabase object in a
	  Xapian::Database for SlowValueList, which mean we can just call
	  open_document(did, true) on it instead of having to use
	  Xapian::Database::get_document_lazily_().

Wed Apr 30 00:31:52 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Explicitly '#include <algorithm>' for std::max(),
	  fixing build with VS2013.  (fixes#641)

Tue Apr 29 04:28:06 GMT 2014  Olly Betts <olly@survex.com>

	* common/append_filename_arg.h,net/remoteconnection.h: Comment tweaks.

Tue Apr 29 04:26:26 GMT 2014  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Drop code supporting Microsoft Windows 9x
	  which reached EOL in 2006.

Thu Apr 17 05:06:21 GMT 2014  Olly Betts <olly@survex.com>

	* common/autoptr.h: Under C++11, use unique_ptr for AutoPtr.

Wed Apr 09 22:16:37 GMT 2014  Olly Betts <olly@survex.com>

	* api/documentterm.h,api/omdocument.cc: Don't store the termname in
	  OmDocumentTerm - we were only using it in get_description() output
	  and an exception message.  Speeds up indexing etext.txt using
	  simpleindex by 0.4%, and should reduce memory usage a bit too.
	  (Change inspired by comments from Vishesh Handa on xapian-devel).

Wed Apr 09 05:17:58 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc,backends/brass/brass_table.cc:
	  Remove comment references to using bitmaps for freespace tracking.

Tue Apr 08 04:20:00 GMT 2014  Olly Betts <olly@survex.com>

	* bin/xapian-delve.cc: Add -A <prefix> option to list all terms with
	  a particular prefix.

Mon Apr 07 05:45:06 GMT 2014  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/brass/,backends/chert/,
	  backends/database.cc,backends/database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,backends/remote/remote-database.h,
	  common/remoteprotocol.h,matcher/const_database_wrapper.cc,
	  matcher/const_database_wrapper.h,net/remoteserver.cc,
	  net/remoteserver.h,weight/weightinternal.cc: Fetch termfreq and
	  collection frequency in a single call - shaves ~0.3% off a test
	  search.

Thu Apr 03 23:40:45 GMT 2014  Olly Betts <olly@survex.com>

	* net/serialise.cc,weight/weightinternal.h: Make Weight::Internal
	  track if any max_part values are set, so we don't need to
	  serialise them when they've not been set.

Thu Apr 03 05:50:13 GMT 2014  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Enhance
	  Weight::Internal::get_description() to report TermFreqs.

Thu Apr 03 05:46:44 GMT 2014  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omenquireinternal.h,common/submatch.h,matcher/,
	  net/remoteserver.cc,net/serialise.cc,weight/weight.cc,
	  weight/weightinternal.cc,weight/weightinternal.h: Eliminate the
	  map<string, TermFreqAndWeight> in MSet::Internal, and instead just
	  preserve the Weight::Internal object there as that holds all the
	  information we need.

Thu Apr 03 04:40:09 GMT 2014  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,net/remoteserver.cc,
	  net/serialise.cc,net/serialise.h: Avoid returning
	  Xapian::Weight::Internal by value from unserialise_stats().

Tue Apr 01 22:41:16 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc,weight/weight.cc,weight/weightinternal.cc,
	  weight/weightinternal.h: Replace Weight::Internal methods to get
	  termfreq, reltermfreq and colltermfreq with a single inlined
	  get_stats() method, which only needs to search the map once.
	  Shaves ~1.6% off the time to do a wildcard query with a lot of
	  terms.

Tue Apr 01 22:11:52 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: Don't refetch the termfreq if we already
	  have it.

Sun Mar 30 22:54:22 GMT 2014  Anish Kanchan <anishgkanchan@gmail.com>

	* include/xapian/termgenerator.h: Make TermGenerator flags an
	  anonymous enum, and typedef TermGenerator::flags to int for backward
	  compatibility with existing user code which uses it.  (fixes #616)

Thu Mar 27 05:45:14 GMT 2014  Liu Chi <liuchi09@gmail.com>

	* include/xapian/stem.h,languages/Makefile.mk,
	  languages/earlyenglish.sbl,languages/stem.cc,tests/api_stem.cc:
	  Add an early english stemmer.

Wed Mar 19 02:42:00 GMT 2014  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Fix comment typo.

Fri Mar 14 09:53:22 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: MacTeX seems to be the best option if using homebrew.

Fri Mar 07 23:17:43 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/maxpostlist.cc: More fixes for --enable.log.

Fri Mar 07 23:01:45 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/maxpostlist.cc: Fix compilation error with --enable-log on.
	  Reported by Anurag Soni.

Fri Mar 07 00:39:11 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Fix typo and RST markup.

Fri Mar 07 00:21:16 GMT 2014  VcamX <vcamx3@gmail.com>

	* HACKING: Note packages to install from homebrew on Mac OS X.

Fri Mar 07 00:17:01 GMT 2014  VcamX <vcamx3@gmail.com>

	* backends/dbcheck.cc,common/pack.h: Fix warnings with clang 5.0.

Tue Mar 04 04:25:11 GMT 2014  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,api/queryinternal.h: Only simplify OP_SYNONYM
	  with a single subquery if that subquery is a term or MatchAll.

Tue Mar 04 04:12:58 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_none.cc: Test OPs with a single MatchAll subquery.

Mon Mar 03 22:59:55 GMT 2014  Mayank Chaudhary <mayankchaudhary.iitr@gmail.com>

	* docs/Makefile.am,docs/bm25.rst,docs/intro_ir.rst: Convert equations
	  in rst docs to use LaTeX via the math role and directive.

Fri Feb 28 06:12:36 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.h,
	  backends/chert/chert_positionlist.h: Remove next_internal() methods
	  which were declared but not defined or used (left-overs from flint).
	  Reported by "Hurricane Tong".

Wed Feb 26 01:33:50 GMT 2014  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/queryinternal.h,
	  examples/quest.cc,include/xapian/query.h,matcher/Makefile.mk,
	  matcher/maxpostlist.cc,matcher/maxpostlist.h,
	  queryparser/queryparser.cc,tests/api_none.cc,tests/api_opsynonym.cc:
	  Implement new OP_MAX query operator, which returns the maximum
	  weight of any of its subqueries.  (see #360)

Wed Feb 26 00:48:23 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc,matcher/synonympostlist.cc,
	  matcher/synonympostlist.h: In SynonymPostList, avoid fetching the
	  doclength if the weighting scheme doesn't need it and the calculated
	  wdf for the synonym in <= doclength_lower_bound for the current
	  subdatabase.  (fixes #360)

Wed Feb 26 00:12:22 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_changes.cc: Fix compilation without
	  --enable-assertions.

Tue Feb 25 02:33:14 GMT 2014  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add --default-op option.

Tue Feb 25 01:56:34 GMT 2014  Olly Betts <olly@survex.com>

	* examples/quest.cc: Whitespace tweak.

Mon Feb 24 06:33:37 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_opsynonym.cc: Refactor symonym1 so that the test data is
	  specified by an array, rather than built up by code, so that the
	  actual testcases can be more easily seen.

Sun Feb 23 01:22:56 GMT 2014  Olly Betts <olly@survex.com>

	* common/bitstream.cc,common/bitstream.h: Add comments to better
	  document BitReader and BitWriter. (fixes#252)

Sun Feb 23 00:35:17 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: Stop trying to explicitly list compilers which support
	  __builtin_expect (LLVM does too, others may as well).

Fri Feb 21 01:34:59 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/,backends/dbcheck.cc,common/,
	  docs/replication_protocol.rst,tests/api_backend.cc,
	  tests/api_replicate.cc: Keep track of unused blocks in the Btrees
	  using freelists rather than bitmaps.

Fri Feb 21 01:21:45 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Expand crashrecovery1 to check that the expected
	  base files exist and ones which shouldn't exist don't.

Thu Feb 20 00:34:47 GMT 2014  Olly Betts <olly@survex.com>

	* HACKING: makeindex is now in Debian package texlive-binaries.

Wed Feb 19 06:50:58 GMT 2014  Olly Betts <olly@survex.com>

	* docs/sorting.rst: Fix incorrect parameter types in Xapian::Weight
	  subclass example.

Tue Feb 18 23:34:19 GMT 2014  Olly Betts <olly@survex.com>

	* api/replication.cc: Fix conditional for enabling replication code
	  - if chert is disabled but brass isn't, we should still enable it.

Tue Feb 18 01:33:28 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Move comment to in front of the function it
	  is actually talking about.

Sun Feb 16 04:53:57 GMT 2014  Olly Betts <olly@survex.com>

	* xapian-config.in: Add some missing shell quoting identified by
	  shellcheck.

Sun Feb 16 00:53:01 GMT 2014  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Split --cxxflags and --libs for portability
	  (noted by "Hurricane Tong" on xapian-devel).

Sat Feb 15 04:59:37 GMT 2014  Olly Betts <olly@survex.com>

	* docs/glossary.rst: Add definition of "collection frequency".

Fri Feb 14 22:24:26 GMT 2014  Olly Betts <olly@survex.com>

	* NEWS: Update.

Fri Jan 17 03:50:44 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc,
	  backends/brass/brass_table.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/chert/chert_table.cc,common/io_utils.cc,common/io_utils.h:
	  Add io_read_block() and io_write_block() as wrappers around pread()
	  and pwrite() (or lseek() plus read() and lseek() plus write()).

Sat Jan 11 06:32:19 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Sun C++ seems to explicitly need Crun now.

Sat Jan 11 02:23:06 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Fix checks for Sun C++.

Fri Jan 10 22:38:01 GMT 2014  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: timer_create() doesn't handle CLOCK_MONOTONIC
	  on Solaris, so use CLOCK_REALTIME there instead.

Fri Jan 10 11:22:37 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Improve handling of Sun's C++ compiler - trick libtool
	  into not adding -library=Cstd, and prefer -library=stdcxx4 if
	  supported.

Fri Jan 10 11:16:15 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Add XAPIAN_TEST_CXXFLAGS macro, and use it to check
	  the flags to cxx actually work.

Fri Jan 10 10:56:17 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Apply missing functional part of previous change.

Fri Jan 10 10:46:53 GMT 2014  Olly Betts <olly@survex.com>

	* configure.ac: Avoid using grep -e as /usr/bin/grep on Solaris
	  doesn't support it.

Fri Jan 10 03:30:10 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc: Whitespace tweak.

Thu Jan 09 11:06:05 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_cursor.h,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/inmemory/inmemory_database.h,common/log2.h,
	  common/realtime.h,matcher/multimatch.cc,weight/pl2weight.cc,
	  weight/tradweight.cc: Fix compilations issues with Sun's C++
	  compiler (mostly missing library headers).

Thu Jan 09 06:00:03 GMT 2014  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: Skip absent lazily created tables in the case
	  where out == NULL too.

Thu Jan 09 05:31:40 GMT 2014  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Use Xapian::Database::check() in cursordelbug1.
	  (partly addresses #238)

Thu Jan 09 05:30:45 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Make second and third parameters to
	  Xapian::Database::check() optional, defaulting to a quiet check.

Thu Jan 09 02:52:54 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/,backends/chert/,backends/dbcheck.cc,
	  bin/xapian-check.cc,include/xapian/database.h: Alter
	  Database::check() to take its "out" parameter as a pointer to
	  std::ostream instead of a reference, and make passing NULL means "do
	  not produce output".  Remove the form without the "out" parameter,
	  which used to mean "send output to stdout" - if you want this, just
	  pass "&std::cout" in.

Thu Jan 09 01:50:14 GMT 2014  Olly Betts <olly@survex.com>

	* include/xapian/database.h: OS X SDK check() macro takes one
	  argument, so there's no need to protect check() methods with
	  more than one argument.
	* include/xapian/valueiterator.h: Protect the one check() method in
	  our API which does take one argument.

Wed Jan 08 11:48:58 GMT 2014  Olly Betts <olly@survex.com>

	* api/smallvector.cc,api/smallvector.h: Include cstddef rather than
	  cstring for std::size_t, as it's a simpler header.  Don't assume
	  size_t will be available unqualified.  Add SmallVector::size_type
	  typedef.

Mon Jan 06 11:54:53 GMT 2014  Olly Betts <olly@survex.com>

	* net/progclient.cc: Fix xlC warning.

Mon Jan 06 00:31:19 GMT 2014  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc:
	  Validate dir_end when reading a block.  (fixes #592)

Wed Jan 01 01:20:46 GMT 2014  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Fix handling of MAINTAINER_NO_DOCS.

Mon Dec 30 05:33:59 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Add regression test for incorrect results
	  from Unicode::tolower() for 4 code points (U+01C5, U+01C8, U+01CB,
	  U+01F2) with Xapian 1.2.16 and earlier.

Sun Dec 29 05:46:14 GMT 2013  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Clarify a couple of points (reported by
	  "vHanda" on IRC).

Tue Dec 24 02:00:26 GMT 2013  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/perftest/Makefile.mk: Actually use
	  @NO_INSTALL@.

Tue Dec 24 01:59:05 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Use -no-fast-install on platforms where -no-install
	  causes libtool to emit a warning.

Mon Dec 23 04:17:35 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Drop note about needing git-svn if you're using git -
	  bootstrap now only uses git-svn if your Xapian tree was checked out
	  using git-svn.

Mon Dec 23 04:16:58 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Note that Tcl is now needed to generate
	  unicode/unicode-data.cc.

Mon Dec 23 04:01:05 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Add a test that a character due to be added in
	  Unicode 7.0.0 is categorised as "unassigned".

Mon Dec 23 03:50:37 GMT 2013  Olly Betts <olly@survex.com>

	* unicode/Makefile.mk,unicode/uniParse.tcl: Adjust to not need a
	  symlink.  Give the generated file a new name, since the "tcl" prefix
	  doesn't make much sense here, and it avoids issues with
	  transitioning from a file in version control to one which is
	  generated.

Mon Dec 23 03:32:40 GMT 2013  Olly Betts <olly@survex.com>

	* unicode/: Add the source data file and scripts to generate
	  tclUniData.cc.

Mon Dec 23 02:20:57 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Dec 23 01:04:26 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Note that 1.2.17 is required for the
	  correct sense of the reverse parameter to Enquire methods
	  set_sort_by_relevance_then_value() and
	  set_sort_by_relevance_then_key().

Mon Dec 23 00:30:53 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc: Fix comment documenting what's in
	  the base file (the sequential flag was missing).

Fri Dec 20 03:47:56 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_termlisttable.h,include/xapian/constants.h,
	  tests/api_backend.cc: Add Xapian::DB_NO_TERMLIST flag to allow
	  creating a database without a termlist (see #181).

Fri Dec 20 03:04:51 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
	  character database to 6.3.0.
	* tests/api_unicode.cc: Add tests for U+061C, added in 6.3.0.

Fri Dec 20 00:20:01 GMT 2013  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Clear any backend flag passed in before
	  passing the flags when opening stub databases, fixing test failure
	  in replicate1 caused by recent change adding
	  Xapian::DB_BACKEND_STUB.

Thu Dec 19 23:11:32 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Simplify database creation in testcase
	  blocksize1.

Thu Dec 19 23:10:37 GMT 2013  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Tweak conditionals around $XAPIAN_PREFER_BRASS
	  check.

Thu Dec 19 23:09:30 GMT 2013  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/dbfactory.cc,docs/deprecation.rst,
	  docs/overview.rst,include/xapian/constants.h,
	  include/xapian/dbfactory.h,tests/api_backend.cc,tests/api_db.cc:
	  Add Xapian::DB_BACKEND_STUB and deprecate Xapian::Auto::open_stub().

Thu Dec 19 06:46:15 GMT 2013  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Update example version to a more recent one.

Thu Dec 19 04:01:31 GMT 2013  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,include/xapian/dbfactory.h,tests/api_db.cc,
	  tests/harness/: Deprecate Xapian::Brass::open() and
	  Xapian::Chert::open() in favour of the new Xapian::DB_BACKEND_BRASS
	  and Xapian::DB_BACKEND_CHERT flags.

Thu Dec 19 01:17:02 GMT 2013  Olly Betts <olly@survex.com>

	* api/compactor.cc,backends/brass/,backends/chert/chert_database.cc,
	  backends/chert/chert_database.h,backends/database.h,
	  backends/dbcheck.cc,backends/dbfactory.cc,include/xapian/constants.h,
	  include/xapian/database.h,include/xapian/dbfactory.h: Add flags
	  which can be bitwise OR-ed into the second argument when opening a
	  writable datase: DB_NO_SYNC (to disable use of fsync, etc) and
	  DB_DANGEROUS (to enable in-place updates).  WritableDatabase
	  can now be constructed from just a filename (defaulting to opening
	  the database with DB_CREATE_OR_OPEN).

Thu Dec 19 00:11:26 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_multi.cc: Fix comment typo.

Wed Dec 18 23:52:49 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc,
	  tests/api_backend.cc: Fix handling of invalid block sizes - the
	  size gets fixed as documented, but the uncorrected size was passed
	  to the base file.  Also, abort() was called on 0.

Wed Dec 18 22:48:18 GMT 2013  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/brass/brass_check.cc,
	  backends/brass/brass_database.cc,backends/chert/chert_check.cc,
	  backends/chert/chert_database.cc,backends/database.h,
	  backends/dbcheck.cc,bin/xapian-tcpsrv.cc,include/Makefile.mk,
	  include/xapian.h,include/xapian/database.h,net/remoteserver.cc:
	  Move Xapian::DB_* and Xapian:DBCHECK_* constants into
	  xapian/constants.h.

Wed Dec 18 22:30:23 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc:
	  Include xapian/*.h with "" not <> inside the library.

Wed Dec 18 22:17:15 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
	  Include only the needed xapian/*.h headers (rather than xapian.h) to
	  reduce inter-file dependencies within the library.

Wed Dec 18 03:24:22 GMT 2013  Olly Betts <olly@survex.com>

	* tests/runtest.in: Report if a test is being run under eatmydata,
	  like we do for running under valgrind.

Wed Dec 18 02:43:47 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.h,backends/chert/chert_version.h:
	  Comment out unused set_uuid() and set_uuid_string() methods - they
	  may be useful in future, but we aren't currently using them.  Also
	  make set_uuid() take a const pointer.

Wed Dec 18 02:40:18 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING,configure.ac,tests/runtest.in: Automatically probe for and
	  hook in eatmydata to the testsuite using the wrapper script it now
	  includes.

Wed Dec 18 01:21:07 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Update website update info.

Sat Dec 14 06:01:33 GMT 2013  Olly Betts <olly@survex.com>

	* weight/dlhweight.cc,weight/dphweight.cc: Whitespace tweak.

Fri Dec 13 21:06:28 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_cursor.cc,backends/brass/brass_cursor.h,
	  backends/brass/brass_table.cc: Reference count blocks in the
	  btree cursor, so cursors can cheaply share blocks.  This can
	  significantly reduce the amount of memory used for cursors
	  for queries which contain a lot of terms (e.g. wildcards which
	  expand to a lot of terms).

Thu Dec 12 22:37:22 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc: Add assertions that we don't read
	  beyond the end of the freespace bitmap.

Thu Dec 12 22:25:04 GMT 2013  Olly Betts <olly@survex.com>

	* matcher/msetcmp.cc: Fix sense of reverse parameter to
	  Enquire::set_sort_by_relevance_then_value.  Reported by "boomboo" on
	  IRC.
	* tests/api_db.cc: Fix testcase sortrel1.

Thu Dec 12 19:47:46 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/: Make Brass::Cursor members n and p private.

Thu Dec 12 19:46:23 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/brass/brass_table.cc: Add
	  const to a few pointers we only read through.

Thu Dec 12 09:04:13 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Improve reporting of GCC version.

Thu Dec 12 09:01:26 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_query.cc,unicode/description_append.cc: Escape \x7f in
	  object descriptions.

Wed Dec 11 23:40:37 GMT 2013  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,api/leafpostlist.h,backends/brass/,
	  matcher/localsubmatch.cc,matcher/localsubmatch.h,
	  matcher/queryoptimiser.h: Under brass, optimise the turning of a
	  query into a postlist to copy the cursor blocks for the previous
	  term's postlist.  This is particularly effective for wildcard
	  queries which expand to a lot of terms.

Wed Dec 11 22:05:34 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_postlist.h: We don't have a
	  BrassModifiedPostList class, so we don't need protected members in
	  BrassPostList for it to use.

Wed Dec 11 04:46:58 GMT 2013  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Fix case where (k1 == 0 || b == 0) but k2 != 0.
	  Reported by "boomboo" on IRC.
	* tests/api_weight.cc: Add regression test bm25weight5.

Wed Dec 04 05:44:29 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.2.16 and ChangeLog.

Mon Dec 02 02:34:43 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Clarify version of MSVCRT which we require for mingw.

Fri Nov 29 04:21:46 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Fix typo in previous commit.

Fri Nov 29 03:48:24 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Report GCC version.

Wed Nov 27 04:06:32 GMT 2013  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/chert_table.cc: Check if the block we want is in the
	  internal cursor for a read-only table too - it isn't needed for
	  correctness in this case, but it is more efficient not to reload a
	  block which we already have.

Sun Nov 24 23:05:37 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Fri Nov 22 20:18:43 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc,
	  backends/brass/brass_databasereplicator.h: compression_stream.h
	  isn't used in brass_databasereplicator.h, so move include to
	  brass_databasereplicator.cc.

Fri Nov 22 01:22:32 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Minor tweak to structuring of tests
	  in check_infix().

Sat Nov 09 08:51:27 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc: Check if the block we want is in the
	  internal cursor for a read-only table too - it isn't needed for
	  correctness in this case, but it is more efficient not to reload a
	  block which we already have.

Sat Nov 09 08:48:02 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/: Use a separate cursor for each position list - now
	  we're ordering the position B-tree by term first, phrase matching was
	  causing the cursor to cycle between disparate areas of the B-tree,
	  and it would have to reread the same blocks over and over.

Fri Nov 08 09:57:52 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc: Add
	  check for the database being closed in read_block(), which fixes
	  pythontest.py testcase valuemods.

Fri Nov 08 08:58:48 GMT 2013  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/termlist.cc,api/termlist.h,backends/brass/:
	  Avoid two vector copies when storing term positions in most common
	  cases.

Fri Nov 08 08:57:07 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Bump LIBRARY_VERSION_INFO.

Thu Nov 07 16:14:23 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,
	  backends/brass/brass_positionlist.cc,
	  backends/brass/brass_positionlist.h: There's no need to pass around
	  an end PositionIterator, and it's actually slightly more efficient
	  not to.

Thu Nov 07 16:11:27 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/: Batch up positionlist changes in memory and write
	  them out in key order.

Thu Nov 07 15:30:48 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.h,backends/brass/brass_version.cc:
	  Change positionlist keys to be ordered by term first rather than
	  docid first, which helps phrase searching significantly.

Wed Nov 06 17:12:29 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_values.cc,backends/brass/brass_values.h,
	  backends/chert/chert_values.cc,backends/chert/chert_values.h: Reuse
	  a cursor for reading values from valuestreams rather than creating
	  a new one each time.  This can dramatically reduce the number of
	  blocks redundantly reread when sorting by value.  The rereads will
	  generally get served from VM cache, but there's still an overhead
	  to that.

Tue Nov 05 16:28:08 GMT 2013  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/queryinternal.h,
	  include/xapian/query.h,tests/api_query.cc: Having a separate 'type'
	  enum seems to just make for clumsier code, so merged the LEAF_*
	  values into the 'op' enum, add LEAF_MATCH_ALL and LEAF_MATCH_NOTHING
	  and return when appropriate, and add test coverage.

Tue Nov 05 15:20:15 GMT 2013  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/queryinternal.h,
	  include/xapian/query.h: Add methods to allow introspection on
	  Query objects - currently you can read the type/operator, how many
	  subqueries there are, and get a particular subquery.  For a
	  query which is a term, Query::get_terms_begin() allows you to
	  get read the term.  (see #159)

Mon Nov 04 19:06:38 GMT 2013  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add --check-at-least option to quest.

Thu Oct 24 04:38:52 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac,tests/soaktest/soaktest.cc: If srandom() and random()
	  aren't available, use srand() and rand() instead.

Thu Oct 24 02:34:06 GMT 2013  Olly Betts <olly@survex.com>

	* common/safewindows.h: Define WINVER to 0x0500 if not otherwise set,
	  so we get new interfaces like MEMORYSTATUSEX under mingw.

Thu Oct 24 02:11:36 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Need cstdlib for free
	  under mingw.

Thu Oct 24 02:11:05 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac,tests/api_replicate.cc,tests/queryparsertest.cc,
	  tests/termgentest.cc: Probe for _putenv_s() in configure as mingw
	  doesn't provide it.

Thu Oct 24 01:23:14 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Don't unset CC as it's used by libtool under mingw.

Thu Oct 24 01:17:07 GMT 2013  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Fix mingw build error.

Thu Oct 24 01:00:18 GMT 2013  Olly Betts <olly@survex.com>

	* common/omassert.h: Suppress "unused local typedef" warnings from
	  GCC 4.8.

Wed Oct 23 20:00:05 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h: Rework RealTime::to_timeval() under __WIN32__ to
	  avoid having to pull in safewinsock2.h,

Wed Oct 23 12:39:53 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h: Under __WIN32__, we need safewinsock2.h for
	  struct timeval.

Wed Oct 23 10:21:02 GMT 2013  Olly Betts <olly@survex.com>

	* common/omassert.h: If the compiler supports C++11, use
	  static_assert to implement CompileTimeAssert.

Wed Oct 23 10:02:50 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h,net/tcpclient.cc: Fix mingw build errors.

Wed Oct 23 09:50:00 GMT 2013  Olly Betts <olly@survex.com>

	* common/win32_uuid.cc: Fix mingw compiler warning.

Wed Oct 23 04:19:05 GMT 2013  jiangwen jiang <jiangwen127@gmail.com>

	* api/omdocument.cc,api/query.cc: Add more LOGCALL annotations.

Tue Oct 22 03:09:48 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Note we now use doxygen 1.8.5 for 1.3.x snapshots and
	  releases.

Mon Oct 21 01:55:48 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "Fix a harmless
	  compiler warning in lemon.c."  Generated code is identical, at least
	  on x86-64 Debian wheezy.

Mon Oct 21 01:52:12 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Sync change from upstream: "In the lemon parser
	  generator, change all hashes to unsigned to avoid potential problems
	  with signed integer overflow."  Generated code is identical, at
	  least on x86-64 Debian wheezy.

Sat Oct 19 06:38:48 GMT 2013  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Under cygwin, use cygwin_conv_path() if
	  using a new enough cygwin version, rather than the now deprecated
	  cygwin_conv_to_win32_path().  Reported by "Haroogan" on the
	  xapian-devel mailing list.

Sat Oct 19 00:36:06 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Simplify test for uuid_unparse_lower().  (see #626)

Sat Oct 19 00:21:37 GMT 2013  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac: Split XAPIAN_LIBS out of XAPIAN_LDFLAGS.
	  (fixes#626)

Fri Oct 18 11:51:40 GMT 2013  Olly Betts <olly@survex.com>

	* geospatial/geoencode.cc: Use lround() instead of round(), since we
	  want the result as an int.  GCC 4.4.3 seems to optimise to use
	  lround() anyway, but other compilers may not.

Fri Oct 18 11:44:10 GMT 2013  Olly Betts <olly@survex.com>

	* geospatial/geoencode.cc: Include <math.h> for round() (fixes #628).

Tue Oct 15 03:16:04 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h,include/xapian/unicode.h: Mark internal
	  methods which are public for implementation convenience as
	  "@private" for doxygen where they weren't already.

Mon Oct 14 09:45:13 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian.h: Mark vinfo struct and get_vinfo_() function as
	  @private for doxygen.

Thu Oct 10 10:36:45 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/: Methods and functions which take a string to
	  unserialise now consistently call that parameter "serialised".

Mon Oct 07 04:08:14 GMT 2013  Olly Betts <olly@survex.com>

	* tests/zlib-vg.c: Fix two warnings when compiled with clang.

Fri Oct 04 19:46:16 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/chert/chert_check.cc: Correct
	  failure message which talks above the root block when it's actually
	  testing a leaf key.

Fri Oct 04 04:51:39 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/chert/chert_check.cc: Escape
	  invalid UTF-8 data in keys and tags reported by xapian-check, using
	  the same code we use to clean up string in object descriptions.

Fri Oct 04 04:50:52 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/chert/chert_check.cc: Fix
	  xapian-check to report block numbers correctly for links within the
	  B-tree.

Thu Oct 03 07:35:44 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_dbcheck.cc,backends/chert/chert_dbcheck.cc: If
	  the METAINFO key is missing, only report it once per table.

Sat Sep 28 09:27:51 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian.h: Hide struct vinfo and get_vinfo_() from SWIG and
	  doxygen.

Sat Sep 28 06:25:44 GMT 2013  Olly Betts <olly@survex.com>

	* api/version.cc,include/xapian.h: Reimplement version functions to
	  use a single function in libxapian which returns a pointer to a
	  static const struct containing the version information, with inline
	  wrappers in the API header which call this.  This means we only need
	  one relocation instead of 4.
	* tests/api_none.cc: New testcase version1 to provide coverage for the
	  version API functions.

Fri Sep 27 22:53:15 GMT 2013  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h,tests/api_anydb.cc: Fix
	  backwards compatibility get_eset() wrapper to allow for the optional
	  parameters which were supported before.  Also, just inline it from
	  the API header.

Fri Sep 27 11:19:50 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/omenquire.cc,api/omenquireinternal.h,expand/,
	  include/xapian/enquire.h,tests/api_anydb.cc: Add support for the Bo1
	  query expansion scheme.

Thu Sep 26 04:11:49 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_weight.cc: Don't pass integer arguments to log() to avoid
	  ambiguity errors with some compilers.  (fixes #627)

Thu Sep 26 02:02:24 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/,backends/chert/,backends/dbcheck.cc: Fix database
	  consistency checking to always open all the tables at the same
	  revision, which could lead to false errors being reported after
	  a commit interrupted by the process being killed or the machine
	  crashing.  Reported by Joey Hess in http://bugs.debian.org/724610

Wed Sep 25 02:21:29 GMT 2013  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add testcase for FieldProcessor on boolean
	  prefix with quoted contents.

Wed Sep 25 02:16:55 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix comment typo.

Wed Sep 25 02:13:20 GMT 2013  Olly Betts <olly@survex.com>

	* api/: Split QueryVector into a template SmallVector class and then
	  'typedef SmallVector<Query> QueryVector;', as it would be good to
	  use the same approach for Database internals.

Tue Sep 24 09:59:05 GMT 2013  Olly Betts <olly@survex.com>

	* .gitignore,xapian-core.spec.in: Update two references to .tar.gz
	  files.

Tue Sep 24 09:54:42 GMT 2013  Olly Betts <olly@survex.com>

	* docs/install.rst: Fix typo (bogus extra 'and');

Tue Sep 24 09:54:01 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac,docs/install.rst: Compress source tarballs with xz
	  instead of gzip.

Mon Sep 23 12:58:23 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h,configure.ac,matcher/multimatch.cc: Implement
	  RealTime::sleep() using nanosleep() where it's available, since
	  it has a simpler API and a finer granularity than select().

Mon Sep 23 12:27:37 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h,net/remoteconnection.cc,net/tcpclient.cc: Add
	  RealTime::to_timeval() helper function to break a time interval
	  as a double into a struct timeval.  This uses modf() which gives
	  more compact and faster code than using fmod() as we previously
	  did.

Mon Sep 23 08:20:03 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h,configure.ac: Use clock_gettime() to implement
	  RealTime::now() where it's available.

Mon Sep 16 11:53:28 GMT 2013  Olly Betts <olly@survex.com>

	* api/,backends/brass/brass_postlist.cc,
	  backends/remote/net_postlist.cc,backends/slowvaluelist.cc,
	  expand/esetinternal.cc,include/xapian/unicode.h,
	  matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
	  tests/api_query.cc,tests/queryparsertest.cc,unicode/: Fix all
	  get_description() methods to always return UTF-8 text.  (fixes #620)

Mon Sep 16 11:47:16 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Document how Utf8Iterator handles invalid
	  UTF-8.

Mon Sep 16 11:19:48 GMT 2013  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test coverage for explicit synonym of
	  a term with a prefix (e.g. ~foo:search).

Fri Sep 06 07:11:29 GMT 2013  Olly Betts <olly@survex.com>

	* api/valueiterator.cc,tests/api_backend.cc: Don't segfault is
	  skip_to() or check() are called on a ValueIterator which is already
	  at_end().

Fri Sep 06 06:52:49 GMT 2013  Olly Betts <olly@survex.com>

	* api/positioniterator.cc,api/postingiterator.cc,api/termiterator.cc,
	  tests/api_backend.cc: Don't segfault if skip_to() is called on an
	  iterator which is already at_end().  Reported by David Bremner.

Wed Sep 04 04:52:50 GMT 2013  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: TermFreqs now tracks collection frequency,
	  so make TermFreqs::get_description() report it.

Thu Aug 29 01:30:45 GMT 2013  Olly Betts <olly@survex.com>

	* matcher/andmaybepostlist.cc,matcher/multiandpostlist.h: Fix
	  assertion failure for when an OrPostList decays to an AndPostList
	  - the ordering of the subqueries by estimated termfreq may not be
	  the same as it was when the OrPostList was constructed, as the
	  subqueries may themselves have decayed.  Reported by Michel
	  Pelletier.

Fri Aug 23 03:17:33 GMT 2013  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.3.m4: Handle empty or unset XAPIAN_CONFIG
	  correctly.

Mon Jul 15 12:01:17 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/dphweight.cc: Add an
	  implementation of DfR weighting scheme DPH.

Sun Jul 14 07:39:37 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/weight.h,weight/pl2weight.cc: Optimise PL2Weight to
	  only calculate 2 logs per call to get_sumpart() instead of 4 by
	  precalculating three document-independent values in init().

Sun Jul 14 07:04:52 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/pl2weight.cc: Add an
	  implementation of DfR weighting scheme PL2.

Sat Jul 13 11:24:20 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* weight/tfidfweight.cc: Explicitly cast argument of log() to double,
	  as xlC doesn't manage to chose an overloaded form to call otherwise.

Sat Jul 13 07:29:25 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* include/xapian/weight.h,tests/api_weight.cc,
	  tests/generate-api_generated,weight/: Fix new weighting schemes to
	  work with OP_SCALE_WEIGHT.

Wed Jul 10 12:57:01 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/dlhweight.cc: Add an
	  implementation of DfR weighting scheme DLH.

Wed Jul 10 07:38:15 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* expand/expandweight.h: Track collection_freq and totlen restricted
	  to the RSet in preparation for supporting DfR query expansion
	  schemes.

Mon Jul 08 06:27:05 GMT 2013  Olly Betts <olly@survex.com>

	* weight/Makefile.mk: Normalise whitespace in BB2 change.

Sun Jul 07 12:29:48 GMT 2013  Olly Betts <olly@survex.com>

	* weight/bb2weight.cc: New file for BB2Weight which I failed to
	  commit.

Sun Jul 07 11:51:45 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk: Add implementation of DfR
	  weighting scheme BB2.

Sat Jul 06 02:07:13 GMT 2013  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix add_document() to always use exactly the next
	  docid after get_lastdocid() in the multidatabase case.

Fri Jul 05 06:19:55 GMT 2013  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Allow open a stub database containing
	  multiple subdatabases as a WritableDatabase.

Thu Jul 04 06:29:56 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,tests/harness/index_utils.cc,
	  tests/harness/index_utils.h: Simplify the FileIndexer class.

Thu Jul 04 06:09:06 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_multi.cc,tests/harness/index_utils.cc,
	  tests/harness/index_utils.h: Make use of the new writable
	  multidatabase feature to simplify the multi-database handling in the
	  test harness.

Wed Jul 03 13:58:46 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/ineb2weight.cc: Add
	  implementation of DfR weighting scheme IneB2.

Wed Jul 03 13:39:11 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: "please refer:" -> "please refer to:"

Wed Jul 03 13:31:59 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/ifb2weight.cc: Add
	  implementation of DfR weighting scheme IfB2.

Wed Jul 03 12:42:23 GMT 2013  Olly Betts <olly@survex.com>

	* common/safeuuid.h: Make a few tweaks to support AIX.

Wed Jul 03 12:33:40 GMT 2013  Olly Betts <olly@survex.com>

	* common/safeuuid.h: Remove bogus take-address-of from uuid handling
	  code for netbsd and openbsd.

Wed Jul 03 11:56:05 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/registry.cc,include/xapian/weight.h,tests/api_nodb.cc,
	  tests/api_weight.cc,weight/Makefile.mk,weight/inl2weight.cc: Add
	  implementation of DfR weighting scheme InL2.

Wed Jul 03 08:20:26 GMT 2013  Olly Betts <olly@survex.com>

	* api/error.cc,common/Makefile.mk,common/safenetdb.h,net/tcpclient.cc,
	  net/tcpserver.cc: AIX needs _USE_IRS defined for hstrerror, so
	  create safenetdb.h to take care of that.

Wed Jul 03 07:34:13 GMT 2013  Olly Betts <olly@survex.com>

	* common/safeuuid.h: Add missing '#include <cstdlib>' and qualify free
	  with std.

Tue Jul 02 23:44:48 GMT 2013  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Add support for WritableDatabase with multiple
	  subdatabases.

Tue Jul 02 23:40:08 GMT 2013  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,tests/api_none.cc: Trying to perform operations on
	  a database with no subdatabases now throws InvalidOperationError not
	  DocNotFoundError.

Tue Jul 02 13:22:31 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* tests/api_weight.cc: Extend checkstatsweight1 to check that
	  Weight::get_collection_freq() returns the same number as
	  Database::get_collection_freq().

Tue Jul 02 05:00:30 GMT 2013  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omenquireinternal.h,
	  backends/remote/remote-database.cc,backends/remote/remote-database.h,
	  common/remoteprotocol.h,configure.ac,docs/remote_protocol.rst,
	  include/xapian/enquire.h,matcher/multimatch.cc,matcher/multimatch.h,
	  net/remoteserver.cc,tests/api_postingsource.cc: Add
	  Enquire::set_time_limit() method which sets a timelimit after which
	  check_at_least will be disabled.

Mon Jul 01 23:42:33 GMT 2013  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Fix to actually removed cached databases before
	  "make check".

Mon Jul 01 22:21:41 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS,api/queryinternal.cc,matcher/valuestreamdocument.h: Revert
	  changes accidentally included in r17373.

Sat Jun 29 12:39:10 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,unicode/tclUniData.cc: Change
	  Xapian::Unicode::Internal::get_character_info() to simply return
	  Xapian::Unicode::UNASSIGNED for character outside unicode (ch >=
	  0x110000) which avoids a special check for such values before
	  we call get_character_info().

Sat Jun 29 09:31:12 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_serialise.cc: Remove code from registry* testcases which
	  tries to test the consequences of throwing an exception from a
	  destructor - it's complex to ensure we don't leak memory while doing
	  this (it seems GCC doesn't release the object in this case, but
	  clang does), and it's generally frowned upon, plus C++11 makes
	  destructors noexcept by default.

Thu Jun 27 02:36:02 GMT 2013  Olly Betts <olly@survex.com>

	* weight/weightinternal.h: Initialise total_term_count to zero.
	  Fixes failure of qp_flag_wildcard3 under valgrind in buildbot.

Wed Jun 26 05:48:21 GMT 2013  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: '# if defined' -> '#ifdef' to match
	  surrounding code better.

Wed Jun 26 05:47:38 GMT 2013  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Fix 'unused label' warning when chert backend
	  is disabled.

Wed Jun 26 05:40:29 GMT 2013  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix previous change to compile.

Wed Jun 26 05:34:25 GMT 2013  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Change qp_scale1 to time 5 repetitions of
	  the large query to help average out variations.

Wed Jun 26 04:52:33 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Tweak to simplify diff against similar code in
	  xapian-omega.

Wed Jun 26 03:56:14 GMT 2013  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Fix get_description() to work on a
	  ValueCountMatchSpy with NULL internals - fixes matchspy5 testcase
	  with remote backends when configured with --enable-log.
	* api/matchspy.cc: Add assertions that internal is non-NULL before
	  using it.
	* include/xapian/matchspy.h: If internal is NULL, make
	  ValueCountMatchSpy::get_total() return 0 rather than dereferencing
	  NULL.

Wed Jun 26 03:10:58 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc,tests/harness/testsuite.h: If
	  -v/--verbose is specified more than once, show the diagnostic output
	  for passing tests as well as failing/skipped ones.

Wed Jun 26 03:08:08 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_scalability.cc: Change querypairwise1_helper to repeat the
	  query build 100 times, as with a fast modern machine we were
	  sometimes trying to so many subqueries that we would run out of
	  stack.

Wed Jun 26 02:55:20 GMT 2013  Olly Betts <olly@survex.com>

	* weight/tfidfweight.cc: Wrap long lines.

Wed Jun 26 02:00:12 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac,m4-macros/xapian-1.3.m4: Fix stripping of _git suffix
	  from snapshot versions not to relying of sed having support for \|
	  as it doesn't on OS X.

Tue Jun 25 13:21:44 GMT 2013  Olly Betts <olly@survex.com>

	* weight/tfidfweight.cc: Merge "impossible" cases in switch statements
	  into possible ones which contain the same code, adding assertions
	  that the "impossible" hasn't happened.  More robust and improves
	  test coverage.

Tue Jun 25 06:28:00 GMT 2013  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.3.m4: XO_LIB_XAPIAN now handles the user
	  specifying a relative path in XAPIAN_CONFIG, e.g.: "./configure
	  XAPIAN_CONFIG=../xapian-core/xapian-config"

Tue Jun 25 05:34:41 GMT 2013  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.3.m4: Fix comment typo.

Tue Jun 25 05:33:54 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Use AC_PATH_PROG instead of AC_PATH_PROG when there's
	  only one name for the program to look for.

Sun Jun 23 13:12:54 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: clang doesn't support -Wstrict-null-sentinel or
	  -Wlogical-op, so don't pass it these options.

Sat Jun 22 13:40:40 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
	  Fix failure when built with -D_GLIBCXX_DEBUG - we were modifying
	  the top() element of a heap before calling pop(), such that the
	  heap comparison operation (which is called when -D_GLIBCXX_DEBUG
	  is on to verify the heap is valid) would read off the end of the
	  data.  In a normal build, this issue would likely never manifest.

Sat Jun 22 11:21:22 GMT 2013  Olly Betts <olly@survex.com>

	* common/bitstream.cc: Fix assertion in BitReader::decode().

Sat Jun 22 09:13:13 GMT 2013  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: Fix assertion failure when built with
	  --enable-assertions.  The behaviour when built without assertions
	  happened to be correct.

Fri Jun 21 13:10:53 GMT 2013  Olly Betts <olly@survex.com>

	* tests/unittest.cc: Add simple test for log2().

Fri Jun 21 13:09:09 GMT 2013  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/log2.h,configure.ac: Add log2.h header
	  which provides an implementation of log2() if it isn't available in
	  the standard libraries.

Fri Jun 14 13:20:58 GMT 2013  Olly Betts <olly@survex.com>

	* common/fd.h: Add missing header include guards.

Fri Jun 14 13:19:44 GMT 2013  Olly Betts <olly@survex.com>

	* common/append_filename_arg.h,geospatial/geoencode.h: Fix header
	  include guard names which don't match our naming conventions.

Fri Jun 14 13:18:40 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_dbcheck.h,backends/chert/chert_dbcheck.h,
	  backends/multi/multi_alltermslist.h: Fix header include guard macro
	  names which don't match the source file names.

Fri Jun 14 12:48:14 GMT 2013  Olly Betts <olly@survex.com>

	* common/compression_stream.h: Whitespace tweak.

Thu Jun 13 13:58:14 GMT 2013  Olly Betts <olly@survex.com>

	* backends/chert/chert_positionlist.cc: Remove 'Assert(rd);' since rd
	  is no longer a pointer.

Thu Jun 13 13:28:43 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/utestsuite.cc: Add missing GPL boilerplate and
	  copyright statements.

Thu Jun 13 13:26:07 GMT 2013  Olly Betts <olly@survex.com>

	* common/compression_stream.cc,common/compression_stream.h: Add
	  missing GPL boilerplate and copyright statements.

Thu Jun 13 13:24:34 GMT 2013  Olly Betts <olly@survex.com>

	* common/compression_stream.cc,common/compression_stream.h: Remove
	  unused header includes; don't use "using namespace std;" in a
	  header.

Thu Jun 13 08:30:26 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Remove 'Assert(rd);' since rd
	  is no longer a pointer.

Thu Jun 13 05:07:27 GMT 2013  Olly Betts <olly@survex.com>

	* common/compression_stream.h: Update include guard to match source
	  file name.

Thu Jun 13 02:38:20 GMT 2013  Olly Betts <olly@survex.com>

	* common/,net/length.h,net/serialise.h: Fix @file markup which wasn't
	  actually in a doxygen comment.

Thu Jun 13 02:14:22 GMT 2013  Olly Betts <olly@survex.com>

	* preautoreconf: Remove needless use of perl prototype.

Tue Jun 11 00:40:37 GMT 2013  Olly Betts <olly@survex.com>

	* common/remoteprotocol.h,docs/remote_protocol.rst: Bump
	  remote protocol version to 38.o.

Tue Jun 11 00:37:01 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* api/leafpostlist.cc,matcher/,net/serialise.cc,weight/weight.cc,
	  weight/weightinternal.cc,weight/weightinternal.h: Make collection
	  frequency available to Xapian::Weight subclasses.  Extracted from
	  Gaurav Arora's LM branch.

Wed May 22 10:04:25 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: When generating ABI compatibility checks in
	  xapian/version.h, pass $CXXFLAGS and $CPPFLAGS to $CXXCPP as they
	  could contain options which affect the ABI (such as -fabi-version
	  for GCC).  (Fixes #622)

Wed May 22 04:20:39 GMT 2013  Olly Betts <olly@survex.com>

	* common/win32_uuid.cc: Microsoft GUIDs in binary form have reversed
	  byte order in the first three components compared to standard UUIDs,
	  so the same database would report a different UUID on Windows to
	  on other platforms.  With this fix, the UUIDs of existing databases
	  will appear to change on Windows (except in rare "palindronic" cases).

Fri May 17 05:52:43 GMT 2013  Olly Betts <olly@survex.com>

	* docs/overview.rst: Correct documentation for stub files specifying
	  "prog" remote databases.

Thu May 16 05:47:40 GMT 2013  Olly Betts <olly@survex.com>

	* backends/chert/chert_dbcheck.cc: Code tweak for clarity.

Thu May 16 05:46:42 GMT 2013  Olly Betts <olly@survex.com>

	* backends/chert/chert_dbcheck.cc: Fix database check that first docid
	  in each doclength chunk is more than the last docid in the previous
	  chunk - previously this didn't actually work.

Thu May 16 05:45:04 GMT 2013  Olly Betts <olly@survex.com>

	* common/bitstream.h: Fix database check not to falsely report
	  "position table: Junk after position data" whenever there are 7
	  unused bits (7 is OK, *more* than 7 isn't).

Tue May 14 12:42:11 GMT 2013  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.3.m4: Adjust XO_LIB_XAPIAN to strip _gitNNN
	  suffix from snapshot versions.

Sun May 12 06:11:36 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Simplify previous change.

Sun May 12 06:06:47 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Handle git snapshot naming when calculating REVISION.

Wed May 08 11:56:27 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,Makefile.am,README,docs/Makefile.am,docs/install.rst,
	  docs/stemming.rst,languages/Makefile.mk,queryparser/Makefile.mk,
	  tests/Makefile.am,tests/perftest/perftest.cc: SVN -> git.

Wed May 08 08:51:22 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc,backends/chert/chert_version.cc:
	  Remove unused '#include <cstdio>'.

Mon May 06 11:10:25 GMT 2013  Olly Betts <olly@survex.com>

	* api/omenquire.cc,configure.ac,include/xapian/enquire.h: Merge two
	  Enquire::get_eset() overloaded forms into one with a default value
	  for parameter min_wt.

Thu May 02 12:05:28 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.3.1.

Thu May 02 11:13:30 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/weight.h,tests/api_nodb.cc,tests/api_weight.cc,
	  weight/tfidfweight.cc: Use lowercase letters for the TfIdfWeight
	  descriptions to match what SMART uses.

Wed May 01 05:13:07 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Work around Apple's OS X SDK defining a
	  check() macro.

Tue Apr 30 13:51:53 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Apr 29 03:09:16 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_dbcheck.cc,backends/chert/chert_dbcheck.cc:
	  Use decode_interpolative_next() when checking database consistency.
	  We also now complain about any junk after the position data.
	* common/bitstream.cc,common/bitstream.h: Remove the old version of
	  decode_interpolative() which unpacks into a std::vector.

Mon Apr 29 02:16:54 GMT 2013  Olly Betts <olly@survex.com>

	* backends/chert/chert_positionlist.cc,
	  backends/chert/chert_positionlist.h: Backport positionlist changes
	  from brass.

Mon Apr 29 01:58:59 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: No need to initialise the
	  BitReader object in the single-entry position list case.

Mon Apr 29 01:58:10 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Fix bug when reaching the last
	  positionlist entry in skip_to().

Mon Apr 29 00:46:10 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_posdb.cc: Fix comment typos.

Mon Apr 29 00:27:42 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Fix handling of single-entry
	  position lists.

Sun Apr 28 23:45:02 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Fix BrassPositionList for case
	  when there's no positional information for a term.

Sun Apr 28 10:29:59 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Simplify setting of
	  have_started in BrassPositionList::skip_to().

Sun Apr 28 10:19:52 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc,
	  backends/brass/brass_positionlist.h,common/bitstream.h: Make the
	  BitReader object a member of BrassPositionList rather than tracking
	  a pointer to it.

Sun Apr 28 07:22:07 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc,common/bitstream.h: Reuse the
	  same BitReader object for each document rather than deleting the old
	  one and creating a new one.

Sun Apr 28 07:06:12 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Move check for reaching the
	  end after the next() in the loop in skip_to(), as we know we aren't
	  at the end on the first iteration, and we've now handled the case of
	  termpos == last before we get here.

Sun Apr 28 07:04:54 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: We know what the last entry in
	  the position list is, so special case skip_to(last_entry) to just
	  move there rather than calling next() a lot of times.

Sun Apr 28 07:03:57 GMT 2013  Olly Betts <olly@survex.com>

	* common/bitstream.h: We don't need to stack pos_j when doing lazy
	  interpolative decoding.

Sun Apr 28 06:48:01 GMT 2013  Olly Betts <olly@survex.com>

	* common/bitstream.h: Store j and k before pos_j and pos_k as it's
	  fractionally more efficient.

Sun Apr 28 06:44:32 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc,
	  backends/brass/brass_positionlist.h,common/bitstream.cc,
	  common/bitstream.h: Hook up BrassPositionList to the new lazy
	  interpolative decoder.

Fri Apr 26 02:09:38 GMT 2013  Marius Tibeica <mtibeica@gmail.com>

	* common/bitstream.cc,common/bitstream.h: Support reading entries from
	  an interpolative coded list one by one.

Thu Apr 25 10:57:02 GMT 2013  Olly Betts <olly@survex.com>

	* docs/remote_protocol.rst: Correct error in documentation of
	  REPLY_DOCDATA message.

Thu Apr 25 10:44:56 GMT 2013  Marius Tibeica <mtibeica@gmail.com>

	* common/bitstream.cc: renamed my_fls to highest_order_bit.

Thu Apr 25 06:49:48 GMT 2013  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteprotocol.h,
	  docs/remote_protocol.rst,net/remoteserver.cc: Prefix compress
	  list of terms and metadata keys in the remote protocol.
	  This requires a remote protocol major version bump.

Wed Apr 24 23:14:47 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Fix comment typos.

Wed Apr 24 06:27:26 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian.h: Add catch for Wt defining a macro called slots,
	  like we already do for Qt.

Wed Apr 24 03:40:13 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update.

Tue Apr 23 12:34:23 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc: Use a block's revision number to
	  check if it was newly allocated in the current revision, and
	  assert that the base file shows it block_free_at_start (previously
	  the check and assertion were the other way around).

Tue Apr 23 12:11:21 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Note macports needed for development work.

Tue Apr 23 11:41:17 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Fix typo in doc comment.

Tue Apr 23 11:39:30 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Disable error for direct inclusion
	  of xapian/version.h for now.

Sun Apr 21 07:49:38 GMT 2013  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Fix quotes in new #error in version.h.

Sun Apr 21 06:25:57 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac,generate-exceptions,include/xapian/: Give an error if
	  user code tries to include API headers other than xapian.h directly.

Sat Apr 20 10:12:23 GMT 2013  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Generate '#include <config.h>' at
	  the start of the stemmer code.

Fri Apr 19 23:36:25 GMT 2013  Olly Betts <olly@survex.com>

	* configure.ac: Remove empty default cases.

Wed Apr 17 03:06:57 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.2.15 and ChangeLog.

Thu Apr 11 22:17:44 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc,backends/chert/chert_version.cc:
	  Call io_sync() on the version file when we create it.

Tue Apr 09 11:02:35 GMT 2013  Olly Betts <olly@survex.com>

	* bin/xapian-delve.cc: If -v is specified more than once, show even
	  more info in some cases.

Tue Apr 09 09:40:02 GMT 2013  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Force automake to use the serial test driver,
	  which requires automake 1.12 (to recognise the serial-tests driver).

Mon Apr 08 06:30:40 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* weight/: Added tfidfweight.cc containing the implementation of the
	  TfIdfWeight class.

	* include/xapian/weight.h: Added TfIdfWeight class for the tf-idf
	  weighting scheme.

	* tests/api_weight.cc: Added tests for TfIdfWeight.

	* tests/api_nodb.cc: Added simple tests for TfIdfWeight.

Sat Apr 06 00:21:34 GMT 2013  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.3.m4: XO_LIB_XAPIAN now handles the user
	  specifying XAPIAN_CONFIG without a path - e.g.: "./configure
	  XAPIAN_CONFIG=xapian-config-1.3"

Thu Apr 04 12:02:36 GMT 2013  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Remove random comment.

Thu Apr 04 10:06:53 GMT 2013  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,tests/Makefile.am: Remove support for
	  'configure --enable-quiet', 'make QUIET=' and 'make QUIET=y' -
	  automake now supports 'configure --enable-silent-rules', 'make V=1'
	  and 'make V=0' which are broadly equivalent and more standard.

Thu Apr 04 09:58:35 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Update to note that automake 1.12.2 is now a hard
	  requirement.

Tue Apr 02 10:22:44 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Comment typo fixes.

Tue Apr 02 09:47:14 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Sync with latest
	  upstream version of lemon.  The only notable change is a bug fix for
	  platforms where sizeof(long) < sizeof(void*) (LLP64 model).

Tue Apr 02 05:51:12 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Tell vim to syntax highlight as rst.

Tue Apr 02 05:50:26 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Update for recent changes to bootstrap.  In particular, we
	  now bootstrap snapshots with automake 1.13.1.

Fri Mar 29 05:18:11 GMT 2013  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Fix __WIN32__ conditional, accidentally broken in
	  last change to this file.

Thu Mar 28 04:19:26 GMT 2013  jiangwen jiang <jiangwen127@gmail.com>

	* api/expanddecider.cc,include/xapian/expanddecider.h,
	  tests/api_anydb.cc,tests/api_nodb.cc: Add ExpandDeciderFilterPrefix
	  class to only return terms with a particular prefix.  (fixes #467)

Thu Mar 21 23:55:26 GMT 2013  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test coverage for change to
	  QueryParser CJK handling in previous commit.

Thu Mar 21 07:21:30 GMT 2013  Greg Banks <gnb@fastmail.fm>

	* queryparser/cjk-tokenizer.cc,queryparser/termgenerator_internal.cc,
	  tests/termgentest.cc: Some CJK codepoints are also punctuation and
	  hence not word characters, and should not really be used as fodder
	  for generating N-grams.  Also fixes a pre-existing bug where every
	  second sequence of N-grammable CJK characters in the text failed to
	  generate the first 2-gram.

Sun Mar 17 20:45:48 GMT 2013  Olly Betts <olly@survex.com>

	* common/pretty.h: Restore space after comma in output.

Sun Mar 17 03:59:52 GMT 2013  Dan Colish <dcolish@gmail.com>

	* common/pretty.h: Correct recursion issue.

Sun Mar 17 02:58:52 GMT 2013  Dan Colish <dcolish@gmail.com>

	* common/pretty.h: Resolve ambiguity by moving operator| to a member
	  function of PrettyOStream

Sat Mar 16 21:43:32 GMT 2013  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: std::less provides a total order over
	  pointers, so we can just use that to implement
	  filter_group_id::operator<() - we only need a consistent order so we
	  can use it as the key to a std::map.

Fri Mar 15 06:36:32 GMT 2013  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc,
	  common/pretty.h: Avoid needlessly casting away const-ness in
	  debug logging.

Fri Mar 15 06:31:32 GMT 2013  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc,matcher/multixorpostlist.cc: Add a
	  couple more LOGCALL annotations.

Fri Mar 15 06:27:42 GMT 2013  Dan Colish <dcolish@gmail.com>

	* api/registry.cc,common/pretty.h: Fix incorrect LOGCALL return value.

Fri Mar 15 06:24:11 GMT 2013  Olly Betts <olly@survex.com>

	* api/registry.cc,common/Makefile.mk,common/registryinternal.h:
	  common/registryinternal.h is only included by api/registry.cc so
	  just inline its contents.

Fri Mar 15 06:11:14 GMT 2013  Olly Betts <olly@survex.com>

	* api/registry.cc: No need to explicitly default initialise std::map
	  members or the base class.

Fri Mar 08 04:05:31 GMT 2013  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc: Fix
	  multipass compaction not to damage document values, and to merge the
	  database stats correctly.  (fixes #615)
	* tests/api_compact.cc: Add regression test compactmultipass1.

Thu Mar 07 00:34:46 GMT 2013  Aarsh Shah <aarshkshah1992@gmail.com>

	* tests/api_anydb.cc: Added tradweight4 testcase to test TradWeight
	  with an RSet for weighting documents.

Wed Mar 06 08:55:12 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: gs package has been replaced by ghostscript package in
	  current Debian and Ubuntu releases.

Tue Feb 19 04:17:19 GMT 2013  Olly Betts <olly@survex.com>

	* common/Tokeniseise.pm: Add the ability to append lines to the
	  header.

Fri Feb 15 05:37:09 GMT 2013  Olly Betts <olly@survex.com>

	* common/realtime.h: Fix RealTime::sleep() to calculate the delta to
	  the time we want to sleep to the right way round.  Previously we
	  wouldn't sleep if we were before the deadline, but would sleep if
	  the deadline had already passed (and by the amount the deadline had
	  passed)!  And on Windows, fix the sleep to be for the delta rather
	  than 43+ years (the time elapsed since the start of 1970).  (Fixes
	  #472)

Fri Feb 15 04:09:28 GMT 2013  Olly Betts <olly@survex.com>

	* api/queryinternal.cc: Need <functional> for mem_fun().

Fri Feb 15 03:56:32 GMT 2013  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Don't provide explicit template types to
	  make_pair - it isn't useful, and breaks with C++11.  Fixes build
	  error with MSVC2012.

Thu Jan 31 23:39:08 GMT 2013  Olly Betts <olly@survex.com>

	* common/Tokeniseise.pm: Put the binary chop tables with the larger
	  ones last, so the offsets to the start of them are more likely to
	  fit into a byte.

Wed Jan 30 04:17:07 GMT 2013  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/Tokeniseise.pm,languages/Makefile.mk,
	  languages/collate-sbl: Factor out the generic code to create a
	  string-to-enum mapping table into a perl module so we can reuse
	  it elsewhere.

Mon Jan 28 01:44:53 GMT 2013  Olly Betts <olly@survex.com>

	* examples/quest.cc: Fix to build with Sun Studio 12 compiler.
	  (ticket#611)

Thu Jan 24 22:40:12 GMT 2013  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/keyword.cc,common/keyword.h: Commit new
	  keyword lookup function needed by previous commit.

Thu Jan 24 22:26:19 GMT 2013  Olly Betts <olly@survex.com>

	* languages/: Generate a compact and efficient table to convert
	  language names to enum codes, which we can then use a C switch
	  statement to dispatch.  The table first checks the token length,
	  and then does a binary chop on tokens of the same length.  This
	  is both faster and smaller than the approach we were using, with
	  the benefit that the table is auto-generated.

Wed Jan 23 00:51:42 GMT 2013  Olly Betts <olly@survex.com>

	* matcher/selectpostlist.cc,matcher/selectpostlist.h: Check document
	  matches weight threshold before checking positional information,
	  which speeds up slow phrase searches (tweaked version of
	  positional-query-weight-check-first.patch from #394).

Thu Jan 17 06:48:41 GMT 2013  Olly Betts <olly@survex.com>

	* tests/api_stem.cc: Extend stem2 to ensure description of the stemmer
	  isn't the same as the description of Stem("none").  Fix description
	  of testcase stemlangs2.

Thu Jan 17 02:32:31 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING: Update link to new home of autotools tutorial.

Wed Jan 16 02:40:20 GMT 2013  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am: Rename CHK_SOURCES to check_sources - variables
	  ending _SOURCES usually have a special meaning in automake, so it's
	  confusing to have one which doesn't.

Wed Jan 16 01:55:50 GMT 2013  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Don't cache documents retrieved by
	  MSet::get_document() unless they were requested with fetch().  This
	  avoids using a lot of memory when many MSet entries are retrieved.
	  (Fixes #604)

Wed Jan 09 11:49:58 GMT 2013  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and 1.2 branch.

Fri Jan 04 23:14:33 GMT 2013  Olly Betts <olly@survex.com>

	* net/progclient.cc: Fix typo so we actually use SOCK_CLOEXEC.

Fri Jan 04 23:14:01 GMT 2013  Olly Betts <olly@survex.com>

	* common/safesyssocket.h: We need the same workaround for socket() too.

Fri Jan 04 04:41:17 GMT 2013  Olly Betts <olly@survex.com>

	* common/safesyssocket.h: On Linux at least, sometimes SOCK_CLOEXEC is
	  defined but the kernel doesn't handle it in socketpair(), so add a
	  wrapper which will retry without SOCK_CLOEXEC in this case.  Noticed
	  on Ubuntu precise.

Sat Dec 29 17:53:30 GMT 2012  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Fix seriously outdated statement that Xapian
	  doesn't create the database directory - that changed in 0.7.2
	  (release 2003-07-11), pointed out by aarsh on #xapian.

Thu Dec 27 06:06:30 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Adjust handling of Unicode
	  opening/closing double quotes - if a quoted boolean term was started
	  with ASCII double quote, then only ASCII double quote can end it, as
	  otherwise it's impossible to quote a term containing Unicode double
	  quotes.
	* tests/queryparsertest.cc: Update testcases.

Sun Dec 23 18:16:52 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Fix typo in previous commit.

Sun Dec 23 18:06:45 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Use the new flock()-based flint-compatible locking
	  under DJGPP, and remove special cases to disable chert and brass
	  under DJGPP (untested, as I no longer have a DJGPP setup or
	  cross-compiler).

Sun Dec 23 17:51:36 GMT 2012  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc,backends/flint_lock.h: Add flock() based
	  locking implementation, which is much simpler than using fcntl() due
	  to saner semantics around releasing locks when closing other
	  descriptors on the same file (at least on platforms where flock()
	  isn't just a compatibility wrapper around fcntl()).  We can't simply
	  switch to this without breaking locking compatibility with previous
	  releases, though it might be useful for porting to platforms without
	  fcntl() locking.  Also, flock() apparently doesn't work over NFS -
	  perhaps that's OK, but we should at least check the failure mode.

Sat Dec 22 06:29:23 GMT 2012  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Only set close-on-exec on the lockfile fd if
	  we are able to clear it in the child process, and clear it in the
	  child process if we set it when we opened it.

Sat Dec 22 06:14:40 GMT 2012  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc,net/progclient.cc: Use SOCK_CLOEXEC with
	  socketpair(), and then clear the close-on-exec flag for child process
	  end of the pair before we call exec.

Sat Dec 22 06:13:44 GMT 2012  Olly Betts <olly@survex.com>

	* net/progclient.cc: Remove O_CLOEXEC where we open stderr on /dev/null
	  before calling exec as we want that fd to survive the exec!

Sat Dec 22 05:53:12 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING,backends/flint_lock.cc,common/Makefile.mk,
	  common/safesyssocket.h,net/progclient.cc,net/tcpclient.cc,
	  net/tcpserver.cc,tests/harness/backendmanager_remotetcp.cc:
	  Use SOCK_CLOEXEC where available, and try FD_CLOEXEC if SOCK_CLOEXEC
	  isn't available.

Sat Dec 22 04:09:23 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/,backends/chert/,backends/flint_lock.cc,
	  common/debuglog.cc,common/replicate_utils.cc,common/safefcntl.h,
	  net/progclient.cc,net/remoteconnection.cc,
	  tests/harness/testsuite.cc: If O_CLOEXEC is supported, pass it to
	  open() so fds we open are closed if the application using us calls
	  exec().

Fri Dec 21 03:48:36 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Don't autodisable the remote backend if we fail to find
	  a required function.  It's more likely the user needs to pass
	  LIBS=-lfoo and it's more helpful to error out so they can do that, or
	  pass --disable-backend-remote if they really don't want it, rather
	  than having them not notice the automatic disabling until after
	  they've built.  This also matches what we do for the disk based
	  backends.

Fri Dec 21 03:48:11 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Expand comment about DJGPP.

Fri Dec 21 03:47:13 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Update comment - we've supported the prog backend on
	  Windows for more than 5 years now!

Fri Dec 21 03:32:13 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Use O_BINARY in replication tests.

Fri Dec 21 03:24:37 GMT 2012  Olly Betts <olly@survex.com>

	* common/replicate_utils.cc: Make posixy_open() always use O_BINARY.
	* backends/brass/brass_btreebase.cc,backends/brass/brass_database.cc,
	  backends/brass/brass_databasereplicator.cc,
	  backends/chert/chert_btreebase.cc,
	  backends/chert/chert_databasereplicator.cc,common/posixy_wrapper.cc:
	  Don't pass O_BINARY to posixy_open() in the places where we were
	  (which wasn't everywhere, probably causing replication bugs under
	  __WIN32__).

Fri Dec 21 02:57:56 GMT 2012  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc,net/remoteconnection.h: Only "outline"
	  RemoteConnection dtor under __WIN32__.

Fri Dec 21 02:56:28 GMT 2012  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Make the UnimplementedError for a
	  MatchSpy which doesn't implement name() clearer that it's this
	  particular subclass which can't be used remotely, not all MatchSpy
	  objects.

Thu Dec 20 22:27:40 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Use user-specified LIBS for configure tests, which is
	  what's expected, and provides a way for the user to tell configure
	  where to find library functions which configure can't find for
	  itself.

Thu Dec 20 22:07:19 GMT 2012  Olly Betts <olly@survex.com>

	* api/compactor.cc,api/replication.cc,backends/brass/,backends/chert/,
	  common/,net/remoteconnection.cc: Rename msvc_posix_rename(), etc to
	  posixy_rename() (avoid a posix_ prefix as that's used by some library
	  functions, and these aren't necessarily 100% POSIX compatible), and
	  provide macro versions on Unix, so we can avoid a #ifdef at every
	  call site.

Thu Dec 20 20:57:18 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: socketpair() needs -lnetwork on Haiku.

Thu Dec 20 02:30:12 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc,
	  backends/chert/chert_databasereplicator.cc: Simplify how we open the
	  .DB file on the replication slave to just call open() once with
	  O_CREAT, rather than once without, than stat() if that fails, and
	  then again with O_CREAT|O_TRUNC if stat() doesn't show an ordinary
	  file exists.

Thu Dec 20 02:05:12 GMT 2012  Olly Betts <olly@survex.com>

	* api/compactor.cc,common/,languages/compiler/syswords2.h,
	  tests/api_compact.cc: Remove extra blank lines at end of files.

Thu Dec 20 01:54:47 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc:
	  Fix "if (fd > 0)" tests to be "if (fd >= 0)" in code related to
	  replication.  In practice this is unlikely to actually have caused
	  problems in real world cases.

Sun Dec 16 23:10:13 GMT 2012  Olly Betts <olly@survex.com>

	* bin/Makefile.mk: INCLUDES is always used, AM_CPPFLAGS isn't if there
	  are per-executable CPPFLAGS, so add AM_CPPFLAGS explicitly when we
	  use per-executable CPPFLAGS.

Fri Dec 14 21:25:58 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am,languages/Makefile.mk,queryparser/Makefile.mk,
	  tests/Makefile.am: In automake, INCLUDES is now deprecated in favour
	  of AM_CPPFLAGS so update to use the latter.

Tue Nov 27 05:39:30 GMT 2012  Olly Betts <olly@survex.com>

	* examples/quest.cc: Need <algorithm> for lower_bound().

Mon Nov 26 23:46:43 GMT 2012  Olly Betts <olly@survex.com>

	* examples/quest.cc: Align option descriptions in --help output, and
	  make the initial letter of such descriptions consistently lowercase.

Mon Nov 26 19:52:50 GMT 2012  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add --flags command line option to allow setting
	  arbitrary QueryParser flags.

Mon Nov 26 03:02:03 GMT 2012  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc: Move 3 declarations to where we first use the
	  variables.

Mon Nov 26 02:59:41 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: We no longer use the highest weighted
	  MSet entry to calculate percentages, so stop searching for it.
	  (Spotted by cppcheck)

Mon Nov 26 02:59:02 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
	  Remove unused variables (spotted by cppcheck).

Mon Nov 26 02:12:19 GMT 2012  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/matchspy.cc,api/omdatabase.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_positionlist.cc,
	  backends/multi/multi_postlist.cc,backends/remote/net_termlist.cc,
	  bin/xapian-delve.cc,matcher/exactphrasepostlist.cc,
	  matcher/mergepostlist.cc,matcher/phrasepostlist.cc,
	  tests/harness/backendmanager.cc: Prefer ++i to i++.

Fri Nov 23 03:38:39 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am: With lcov 1.10, we no longer need any of our
	  hacky workarounds, so make this a requirement and simplify the rules
	  in the makefile.

Thu Nov 22 23:34:09 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am: Pass -f to lcov, which should avoid the need for the
	  patch we've been applying to lcov.

Thu Nov 22 01:34:05 GMT 2012  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Close excess file handles before we get the
	  fcntl() lock, just in case one of those file handles is open on the
	  lock file.
	* tests/api_backend.cc: Add regression test lockfilealreadyopen1.

Thu Nov 22 00:35:51 GMT 2012  Olly Betts <olly@survex.com>

	* common/closefrom.cc,configure.ac: On platforms with the F_MAXFD
	  fcntl but without closefrom(), we were failing to close the highest
	  numbered open fd in our closefrom() replacement.  We now also work
	  around valgrind not hiding some extra fds it has open, but then
	  complaining if we try to close them.

Wed Nov 21 22:50:21 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: When reporting valgrind error, skip any
	  warnings.

Tue Nov 20 07:26:24 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: msetweights1 makes multidb1 and multidb2
	  redundant, so remove them.

Tue Nov 20 07:21:46 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Extend msetweights1 to test the case where
	  only even docids match, so in the multi_* case, only docids from
	  one subdatabase match.

Tue Nov 20 07:04:55 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add testcase msetweights1 which checks we
	  get the weights we expect for a two term query.

Mon Nov 19 21:17:33 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/termgenerator.cc: TermGenerator internal member can
	  never be NULL, so drop NULL test.

Sat Nov 17 20:54:50 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Remove compatibility code for valgrind <
	  3.3.0, since we reject such old versions at configure time.

Sat Nov 17 00:05:36 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.cc: Optimise an unweighted query term which
	  matches all the documents in a subdatabase to use the "MatchAll"
	  postlist.  (ticket#387)

Fri Nov 16 23:36:34 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_weight.cc: New testcase checkstatsweight1 which checks a
	  weight subclass gets the correct values for all the stats.

Fri Nov 16 07:30:18 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Generate a check for compatible _DEBUG
	  settings if built with MSVC.  (ticket#389)

Fri Nov 16 01:28:55 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Improve a couple of comments.

Fri Nov 16 01:25:28 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Implicitly close any unclosed brackets
	  at the end of the query string.  Patch from Sehaj Singh Kalra.
	* tests/queryparsertest.cc: Adjust existing testcases and feature tests.

Thu Nov 15 23:57:10 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_query.cc: Add testcase xor3 to ensure that XOR handles all
	  remaining subqueries running out at the same time.

Thu Nov 15 10:57:32 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_query.cc: One test here does need a backend, and it seems
	  a more useful category, so drop the "don't need a backend" part from
	  the @brief documentation comment.

Thu Nov 15 09:29:47 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix calculation of 0.0/0.0 in some cases.
	  This then got used as a minimum weight, but it seems this gives -nan
	  (at least on x86-64 Linux) so it may have been harmless in practice.

Thu Nov 15 05:39:47 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Eliminate workarounds for egcs 1.1.2 (certainly
	  we no longer support a compiler that old, but maybe some newer
	  compilers have the same issue, so I've rewritten the code to iterate
	  backwards over one MSet, which is a useful feature to have coverage
	  for).

Thu Nov 15 05:28:40 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix reversebool1 and reversebool2 to actually
	  use the result when they check an MSetIterator against end().

Thu Nov 15 01:55:15 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Add --quiet option to xapian-replicate, and
	  be a little more verbose by default.

Thu Nov 15 01:54:14 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: xapian-replicate --force-copy now only
	  forces a single copy, and then attempts to replicate incrementally.

Thu Nov 15 00:51:50 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Tweak code layout.

Wed Nov 14 21:40:45 GMT 2012  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Allow files > 32G to be be copied by
	  replication.

Tue Nov 13 03:44:03 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Pass 'true' or 'false' for 'bool' parameter,
	  not '0' or '1' (especially confusing as the two previous parameters
	  were integers which were often 0 or 1...)

Tue Nov 13 03:34:42 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc,net/replicatetcpclient.cc,
	  net/replicatetcpclient.h: Add --full-copy option to xapian-replicate.
	* tests/api_replicate.cc: New testcase replicate6 which tests the same
	  code path used by 'xapian-replicate --full-copy'.

Tue Nov 13 02:55:44 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Use '++' instead of '+= 1'.  Drop superfluous
	  'return;' at end of function returning void.

Tue Nov 13 01:12:33 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Tweak to avoid default initialisation of
	  string.

Mon Nov 12 23:25:14 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: GCC 4.6.3 doesn't optimise the asr idion
	  either.  Add links to the PR I filed and the GCC documentation that
	  signed right shift does sign extension.

Mon Nov 12 10:21:19 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
	  character database to 6.2.0.
	* tests/api_unicode.cc: Add tests for U+20BA, added in 6.2.0.

Sat Nov 10 05:39:16 GMT 2012  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,matcher/multiandpostlist.cc: Improved fix for
	  #590 - count all matching LeafPostList objects with a Weight object
	  rather than trying to prune at the MultiAndPostList level based on
	  max_wt (if wdf is always zero for a term, BM25 gives max_wt of 0,
	  which leads to us never counting that subquery.
	* tests/api_percentages.cc: Add regression test topercent7.

Fri Nov 09 04:25:32 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Note bug number in regression test for
	  #590.

Tue Nov 06 22:42:31 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc: Restore two missing lines in database
	  checking where we report a block with the wrong level.

Tue Oct 16 11:19:42 GMT 2012  Olly Betts <olly@survex.com>

	* api/compactor.cc,backends/dbcheck.cc,backends/dbfactory.cc,
	  common/Makefile.mk: Fix to build when configured with
	  --disable-backend-brass --disable-backend-chert.  (ticket#586)

Mon Oct 15 04:07:30 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: automake 1.12.4 is now used to generate snapshots and
	  releases.

Sat Oct 13 09:34:21 GMT 2012  Olly Betts <olly@survex.com>

	* weight/weightinternal.h: Revert addition of "#include <config.h>" in
	  r16820.
	* HACKING: Document that we don't include <config.h> from header
	  files, and the reason why.

Sat Oct 13 09:00:23 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix documentation comment typos:
	  "covert" -> "convert".

Thu Oct 11 12:28:30 GMT 2012  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Update documentation to reflect change in
	  Xapian 1.1.2 - DateValueRangeProcessor and StringValueRangeProcessor
	  now support a prefix or suffix.

Mon Oct 01 05:05:54 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Try to make it clearer we're looking for a dual-licence
	  on submitted patches.

Tue Sep 25 08:09:08 GMT 2012  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/append_filename_arg.h,
	  tests/harness/unixcmds.cc: Split out append_filename_argument() into
	  its own file so it can be used elsewhere.

Tue Sep 25 06:46:03 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Mark MSetIterator::at_end() and
	  ESetIterator::at_end() as @private @internal so that they don't
	  appear in the API docs.

Tue Sep 25 06:45:07 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Remove FIXMEs about converting MSetIterator
	  and ESetIterator to use Internal classes - as HACKING notes, the
	  current implementation is that way for performance reasons.

Tue Sep 25 06:36:37 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Escape filenames on POSIX platforms by
	  wrapping in single quotes and specially handling single quotes in
	  the filename - previously newlines in filenames got eaten by the
	  shell.

Tue Sep 25 06:32:36 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Protect filenames which start with '-' on
	  MS Windows like we already do on other platforms.  The built-in
	  commands generally only interpret '/' as the character introducing a
	  command line option (which we already convert to '\'), but many
	  ported programs understand '-' too/instead.

Sat Aug 25 16:09:50 GMT 2012  Dan Colish <dcolish@gmail.com>

	* include/xapian/enquire.h: Add function to test MSetIterator and
	  ESetIterator exhaustion against the size of the underlying interee
	  since comparison against an empty Itor is not suitable for an
	  exhaustion test. Add FIXME that these Iterators should use an Internal
	  class.

Thu Aug 09 21:50:52 GMT 2012  Dan Colish <dcolish@gmail.com>

	* weight/weightinternal.h: Include config.h since macros are used
	  from it.

Wed Aug 08 15:40:38 GMT 2012  Dan Colish <dcolish@gmail.com>

	* api/queryvector.h: Backout previous fix. When compiling with -O0,
	  increase the stack limit to > 8M when running scalability tests.

Wed Aug 08 02:10:21 GMT 2012  Dan Colish <dcolish@gmail.com>

	* api/queryvector.h: Fix SIGBUS when clearing QueryVectors

Wed Aug 01 15:25:25 GMT 2012  Dan Colish <dcolish@gmail.com>

	* HACKING,Makefile.am,tests/Makefile.am: Fix non-portable warnings
	from automake, add HACKING doc for check-syntax make target

Wed Aug 01 04:54:18 GMT 2012  Dan Colish <dcolish@gmail.com>

	* Makefile.am,api/Makefile,backends/Makefile,backends/brass/Makefile,
	  backends/chert/Makefile,backends/inmemory/Makefile,
	  backends/multi/Makefile,backends/remote/Makefile,bin/Makefile,
	  common/Makefile,examples/Makefile,expand/Makefile,
	  geospatial/Makefile,include/Makefile,include/xapian/Makefile,
	  languages/Makefile,matcher/Makefile,net/Makefile,
	  queryparser/Makefile,tests/harness/Makefile,unicode/Makefile,
	  weight/Makefile: Add check-syntax target to Makefiles to support
	  editor syntax checks

Sun Jul 29 15:32:00 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Bump LIBRARY_VERSION_INFO so I can package a snapshot
	  cleanly.

Tue Jul 24 01:35:17 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
	  tests/queryparsertest.cc: Add FieldProcessor class (ticket#128) -
	  currently marked as an experimental API while we sort out how best
	  to sort out exactly how it interacts with other QueryParser features.

Tue Jul 24 01:19:03 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add extra DateValueRangeProcessor
	  constructor overloaded form so that in DateValueRangeProcessor(1,
	  "date:"), the const char * gets interpreted as std::string rather
	  than bool.
	* tests/queryparsertest.cc: Add regression test.

Thu Jul 19 05:32:04 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_dbcheck.h,
	  backends/inmemory/inmemory_alltermslist.cc,bin/xapian-delve.cc: Fix
	  filenames in comments which mismatch actual name of file.

Thu Jul 19 05:27:38 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Remove "FIXME: Add API to
	  allow control of how stemming is used?", as we have now added such
	  an API.

Thu Jul 19 05:24:49 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc,
	  queryparser/termgenerator_internal.cc,
	  queryparser/termgenerator_internal.h,tests/termgentest.cc: Add new
	  method TermGenerator::set_max_word_length() to allow this limit to
	  be adjusted by the user.

Mon Jul 16 03:34:27 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Clarify that the "reverse" parameter of
	  set_sort_by_relevance_then_value() and
	  set_sort_by_relevance_then_key() only affects the ordering of the
	  value/key part of the sort.

Fri Jul 13 04:55:26 GMT 2012  Dan Colish <dcolish@gmail.com>

	* matcher/multimatch.cc: Remove duplicate import

Thu Jul 12 05:13:57 GMT 2012  Olly Betts <olly@survex.com>

	* common/debuglog.cc: Preserve errno over debug logging calls, so they
	  can safely be added to code which expects errno not to change.

Mon Jul 02 05:27:43 GMT 2012  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_databasereplicator.cc: Use new/delete to avoid
	  variable length array gcc extension and comply with c++98

Mon Jul 02 05:02:14 GMT 2012  Dan Colish <dcolish@gmail.com>

	* api/omdatabase.cc,tests/api_wrdb.cc: Prefer container.empty() to
	  container.size() == 0.

Sun Jul 01 10:46:19 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog, 1.2.11 and 1.2.12.

Fri Jun 29 15:32:11 GMT 2012  Dan Colish <dcolish@>

	* tests/harness/testsuite.cc: Add safeunistd.h unconditionally for
	  isatty, required by GCC 4.7

Wed Jun 27 10:45:13 GMT 2012  Olly Betts <olly@survex.com>

	* AUTHORS: Add GSoC students.

Tue Jun 26 08:45:03 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian.h: Add check for Qt headers being included before us
	  and defining 'slots' as a macro - if they are, give a clear error
	  advising how to work around this.

Thu Jun 14 23:48:15 GMT 2012  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Correction - we don't "create a lock file", we
	  "lock a file".

Tue Jun 12 13:08:58 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Make sure XAPIAN_MAX_CHANGESETS gets unset
	  after testcases which set it, so further testcases don't waste time
	  generating changesets.

Tue Jun 12 12:11:51 GMT 2012  Olly Betts <olly@survex.com>

	* docs/replication.rst: The value of XAPIAN_MAX_CHANGESETS does now
	  actually determine how many changesets we keep.

Tue Jun 12 01:20:59 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Force link_all_deplibs_CXX=no for Solaris.

Tue Jun 12 01:08:17 GMT 2012  Olly Betts <olly@survex.com>

	* xapian-config.in: Don't interpret a missing .la file as meaning that
	  we only have static libraries.

Sun Jun 10 12:57:16 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
	  backends/brass/brass_check.cc: Remove is_empty(), tweak
	  calculate_last_block() to calculate the bit map size correctly in
	  the case of an empty table, and use the bit map size instead of
	  is_empty() in xapian-check.
	* backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h,
	  backends/chert/chert_check.cc: Make equivalent changes for chert.

Sun Jun 10 11:27:52 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/brass/brass_table.h: We don't
	  need the workaround for existing tables which were built with a 32
	  bit item count for brass, since that bug was fixed in 1.1.4, which
	  is the same version which brass was added in.

Sun Jun 10 11:20:58 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
	  backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h:
	  Remove unused copy constructors for BrassTable_base and
	  ChertTable_base.

Wed Jun 06 11:10:26 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Note that STEM_ALL_Z was added in
	  1.2.11.  Change already made on 1.2 branch.

Tue Jun 05 06:51:12 GMT 2012  Olly Betts <olly@survex.com>

	* common/compression_stream.cc,common/compression_stream.h: Move the
	  default argument to the CompressionStream constructor to the header
	  and mark the constructor as explicit, since it has a single argument
	  form.

Tue Jun 05 06:41:22 GMT 2012  Olly Betts <olly@survex.com>

	* api/queryvector.h: Fix somewhat dubious warning from clang.

Tue Jun 05 06:33:09 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Overhaul handling of compilers which pretend to be GCC,
	  using a simple "case" on the preprocessed output of '__INTEL_COMPILER
	  __clang__' to tell which is in use.  We now explicitly check for
	  clang, and only pass it warning flags it actually understands.  GCC
	  4.0 is now lumped in with 3.*, since we handle it exactly the same.
	  Enable -Wdouble-promotion for GCC >= 4.6.  Check for symbol
	  visibility support under any GCC-alike (which means we now run the
	  test with Intel's compiler).  Move the check for -Bsymbolic-functions
	  to be run for all compilers.

Mon Jun 04 06:21:02 GMT 2012  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Test if we fail to open a stub database file
	  in Xapian::Auto::open_stub() and throw an exception if so.
	* tests/api_backend.cc: Add regression test stubdb7.

Sun Jun 03 11:43:44 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Add second fake specialised form of the
	  templated iterator Query constructor, for use in the Java bindings.

Sat Jun 02 12:15:11 GMT 2012  Olly Betts <olly@survex.com>

	* docs/scalability.rst: Update gmane size, fix a typo, tweak wording.

Sat Jun 02 12:10:55 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am,api/omdocument.cc,api/omenquire.cc,backends/brass/,
	  backends/chert/,bin/xapian-delve.cc,common/getopt.cc,configure.ac,
	  docs/,m4-macros/xapian-1.3.m4,matcher/multimatch.cc,preautoreconf,
	  tests/Makefile.am,tests/api_db.cc,tests/harness/testsuite.h,
	  tests/harness/testutils.h: Change `...' quoting in prose to '...'.

Fri Jun 01 07:40:48 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am: If you run "make coverage-check" by hand, the
	  default of compressed HTML is unhelpful, so don't default to passing
	  --html-gzip to genhtml, but instead add support for GENHTML_ARGS.

Thu May 31 11:41:19 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_weight.cc: Add test that init() is now called for the
	  term-independent weight contribution.

Thu May 31 11:23:05 GMT 2012  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Avoid use of undefined values when k1 or b are
	  zero.

Wed May 30 21:50:54 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_matchspy.cc: Use a cached generated database for matchspy2
	  and matchspy4.

Wed May 30 13:22:54 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/weight.h,weight/weight.cc: We were failing to call
	  init() for Weight objects providing the term-independent weight.
	  These now get called with init(0.0).

Wed May 30 13:13:03 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Remove duplicate "need_stat(WDF);" calls,
	  accidentally added by merge of opsynonym branch in r12609.

Wed May 30 07:44:23 GMT 2012  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Fix use of uninitialised value found by new
	  bm25weight4 testcase.

Wed May 30 05:38:58 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_weight.cc: Add tests for BM25 parameter combinations where
	  doclen shouldn't affect the weights.

Wed May 30 05:11:34 GMT 2012  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Move api_geospatial.cc into alphabetical order.

Wed May 30 05:07:51 GMT 2012  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc,weight/tradweight.cc: Throw SerialisationError
	  not NetworkError if unserialise() fails.
	* tests/.gitignore,tests/Makefile.am,tests/api_weight.cc: Add test
	  coverage for this.

Wed May 30 05:01:33 GMT 2012  Olly Betts <olly@survex.com>

	* weight/tradweight.cc: BM25Weight -> TradWeight in exception message.

Wed May 30 04:28:43 GMT 2012  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix feature test added for STEM_ALL_Z.

Tue May 29 07:29:01 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc,tests/harness/testutils.h: Remove unused
	  test helper mset_range_is_same_percents() (thanks, lcov!)

Tue May 29 04:10:07 GMT 2012  Olly Betts <olly@survex.com>

	* tests/generate-api_generated: Test that the string returned by a
	  get_description() method isn't empty.

Tue May 29 03:54:15 GMT 2012  Olly Betts <olly@survex.com>

	* generate-exceptions: Use function attributes in generated error.h.

Tue May 29 02:10:23 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac,tests/runsrv.in: In the testsuite, only run remote
	  servers under valgrind if x87 FP instructions are in use.

Tue May 29 00:24:42 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/: Use the new function attributes on various API
	  methods.
	* tests/api_wrdb.cc: get_termfreq() is now marked as pure, so the
	  testsuite needs to actually use the return value to check its
	  exception behaviour.

Mon May 28 22:31:21 GMT 2012  Olly Betts <olly@survex.com>

	* api/query.cc,api/queryinternal.cc,api/queryinternal.h,
	  include/xapian/query.h: Pass vector<pair<Xapian::termpos>, string> >&
	  argument to Query::Internal::gather_terms() as a void* to avoid
	  having to include <vector> in query.h.

Mon May 28 05:07:02 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/attributes.h: Remove unused XAPIAN_NOTHROW_API_METHOD
	  as we're handling that a different way instead.

Mon May 28 00:41:55 GMT 2012  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Hide new
	  function attribute macros from doxygen.

Sun May 27 14:04:34 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Use "Internal" instead of "Query::Internal"
	  in constructor prototype argument list for consistency with other
	  cosntructors, and so this constructor gets ignored by SWIG.

Sun May 27 07:38:56 GMT 2012  Olly Betts <olly@survex.com>

	* exception_data.pm: Fix typo to fix warning and so that XAPIAN_NOTHROW
	  on a method will work.

Sun May 27 01:43:30 GMT 2012  Olly Betts <olly@survex.com>

	* exception_data.pm,include/Makefile.mk,include/xapian.h,
	  include/xapian/attributes.h,include/xapian/unicode.h: Add
	  XAPIAN_CONST_FUNCTION, XAPIAN_PURE_FUNCTION, and XAPIAN_NOTHROW
	  macros for marking functions and methods with those attributes.
	  (tickets #151, #454)

Fri May 25 06:42:35 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Fix documentation comment typo ("k1" ->
	  "k").

Fri May 25 05:44:05 GMT 2012  Olly Betts <olly@survex.com>

	* backends/flint_lock.h: Mark FlintLock::throw_databaselockerror() as
	  XAPIAN_NORETURN.

Thu May 24 12:28:35 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc,
	  queryparser/termgenerator_internal.cc,
	  queryparser/termgenerator_internal.h: Add
	  TermGenerator::set_stemming_strategy() method, with strategies which
	  correspond to those of QueryParser.  Based on patch from Sehaj Singh
	  Kalra, with some tweaks for adding term positions in more cases.
	  (Fixes ticket#563)
	* tests/termgentest.cc: Add test coverage for the new features.

Thu May 24 01:37:31 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add doc comment for stem_strategy
	  typedef.

Wed May 23 11:33:08 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.lemony:
	  Add new QueryParser::STEM_ALL_Z stemming strategy, which stems all
	  terms and adds a Z prefix.  (Patch from Sehaj Singh Kalra, fixes
	  ticket#562)
	* tests/queryparsertest.cc: Add test coverage for
	  QueryParser::STEM_ALL_Z.

Wed May 23 05:37:20 GMT 2012  Olly Betts <olly@survex.com>

	* api/valuesetmatchdecider.cc,include/xapian/valuesetmatchdecider.h:
	  "Limited" to "Ltd" in (C) two statements, for consistency (and with
	  Charlie's agreement on IRC).

Wed May 23 02:25:53 GMT 2012  Olly Betts <olly@survex.com>

	* api/,include/xapian/query.h: Rework QueryBranch to use a special
	  QueryVector class rather than std::vector<Xapian::Query>.  The
	  special class is no bigger than std::vector<Xapian::Query>, and
	  handles up to two entries by holding them within the object (at
	  least GCC's std::vector doesn't currently do this space optimisation)
	  which significantly reduces the memory used by a pairwise operator,
	  which is very desirable as we no longer flatten a tree of the same
	  pairwise operator as we build the query.

Tue May 22 06:25:10 GMT 2012  Olly Betts <olly@survex.com>

	* api/queryinternal.cc: Handle the left side of AND_NOT and
	  AND_MAYBE being MatchNothing in add_subquery() rather than
	  in done().

Tue May 22 02:40:45 GMT 2012  Olly Betts <olly@survex.com>

	* api/queryinternal.cc: Handle QueryAndLike with a MatchNothing
	  subquery in add_subquery() rather than done().

Tue May 22 02:01:00 GMT 2012  Olly Betts <olly@survex.com>

	* api/queryinternal.cc,api/queryinternal.h: Drop MatchNothing
	  subqueries in OR-like situations in add_subquery() rather than
	  adding them and then handling it later.

Sat May 19 00:27:23 GMT 2012  Olly Betts <olly@survex.com>

	* tests/runsrv.in: Add explanation of why we have this script.

Sat May 19 00:27:10 GMT 2012  Olly Betts <olly@survex.com>

	* tests/runtest.in: Fix comment typo.

Fri May 18 12:50:08 GMT 2012  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Check if the database is
	  closed when asked to iterate metadata keys.  Fixes recently added
	  testcase closedb10 for inmemory.

Fri May 18 12:34:24 GMT 2012  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Pass -ldl last when compiling zlib-vg.so, as that
	  seems to be needed on Ubuntu 12.04.

Fri May 18 04:54:09 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: We now test almost all methods of Database
	  and WritableDatabase after calling close().  (ticket#337)

Thu May 17 14:26:11 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/,backends/chert/: After closing the database, methods
	  which try to use the termlist would throw FeatureUnavailableError
	  with message "Database has no termlist", assuming that the termlist
	  table not being open meant it wasn't present.  Fix to check if the
	  postlist_table is open to determine which case we're in.
	* tests/api_closedb.cc: Improve test coverage for closed databases.
	  (ticket#337)

Tue May 15 11:24:34 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and 1.2.10.

Tue May 15 11:12:42 GMT 2012  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc: Fix incorrect use of "delete" to
	  "delete []".  The type is POD, so I suspect this mistake didn't
	  actually cause any problems, and it only happens when a cursor
	  gets rebuilt because the B-tree has gained a level, so it's
	  a rather rare occurrence.

Tue May 15 11:09:44 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_cursor.cc: Fix incorrect use of "delete" to
	  "delete []".  The type is POD, so I suspect this mistake didn't
	  actually cause any problems, and it only happens when a cursor
	  gets rebuilt because the B-tree has gained a level, so it's
	  a rather rare occurrence.

Thu May 10 02:16:21 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Update Debian/Ubuntu packaging instructions.

Thu May 10 02:14:48 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: freshmeat -> freecode.

Wed May 09 02:54:40 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Add "safeunistd.h", required for GCC 4.7.

Wed May 09 00:09:17 GMT 2012  Olly Betts <olly@survex.com>

	* api/query.cc: Construct MatchAll using constructor rather than
	  assignment syntax.

Wed May 09 00:08:29 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_cursor.h: Whitespace tweaks.

Tue May 08 23:51:01 GMT 2012  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Document xapian-check for fixing corrupted
	  databases.

Tue May 08 11:30:06 GMT 2012  Olly Betts <olly@survex.com>

	* common/fileutils.cc: Add safeunistd.h for mkdir, required by GCC
	  4.7 (reported by Gaurav Arora).

Wed May 02 03:44:25 GMT 2012  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Using AssertEq() on NULL doesn't compile,
	  at least with recent GCC.

Wed May 02 02:58:37 GMT 2012  Olly Betts <olly@survex.com>

	* common/omassert.cc: Fix warning with GCC in build with assertions
	  enabled.

Wed May 02 02:55:54 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: We're now using automake 1.12 to generate snapshots and
	  releases.

Mon Apr 23 13:16:36 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix tradweight1 to test that TradWeight(0)
	  means that wdf and doc length don't affect the weight of a term.

Mon Apr 23 03:44:02 GMT 2012  Olly Betts <olly@survex.com>

	* backends/chert/,backends/dbcheck.cc,bin/xapian-check.cc,
	  include/xapian/database.h: Add "fix" option to xapian-check, which
	  currently will regenerate iamchert if it isn't valid, and will
	  regenerate base files from the .DB files (only really tested on
	  databases which have just been compacted).

Mon Apr 23 03:40:35 GMT 2012  Olly Betts <olly@survex.com>

	* common/filetests.h: Add new function file_size() to get the size
	  of a file from a path or file descriptor.
	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
	  net/remoteconnection.cc,tests/api_replicate.cc: Use this new
	  function.

Wed Apr 18 01:35:21 GMT 2012  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc,weight/tradweight.cc: Fix comment typo.

Wed Apr 11 08:26:42 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Update section on patches to mention git (git diff and git
	  format-patch), and using "-r" with normal diff, and also that
	  ptardiff offers a nice way to diff against an unpacked tarball.

Wed Apr 04 02:22:04 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc:
	  If the output database is empty, don't write a metainfo tag out.
	  Take care not to divide by zero when computing the percentage
	  size change for a table.
	* tests/api_compact.cc: Add new testcase compactempty1 to provide
	  regression tests.

Wed Apr 04 01:48:34 GMT 2012  Olly Betts <olly@survex.com>

	* backends/dbcheck.cc: If the database couldn't be opened, don't try
	  to reserve space for cross-checking doclens, as that just results in
	  us reporting a confusing warning about there being too many documents
	  to cross-check doclens.

Fri Mar 30 22:23:53 GMT 2012  Olly Betts <olly@survex.com>

	* backends/document.h: "An string" -> "A string" in internal doc
	  comment.

Fri Mar 30 22:20:11 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Fix switched lower and upper in doc comments
	  for Weight methods get_doclength_lower_bound() and
	  get_doclength_upper_bound().  Correct maximum to minimum in
	  get_doclength_lower_bound() comment and note that this excludes zero
	  length documents.  Fix "An lower" to "A lower".

Wed Mar 28 09:54:33 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Fix typos in another old entry.

Wed Mar 28 09:53:00 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: DatabaseCoruptError -> DatabaseCorruptError in old entries.

Wed Mar 28 08:05:13 GMT 2012  Olly Betts <olly@survex.com>

	* tests/termgentest.cc: Add test coverage for discarding of terms > 64
	  bytes by TermGenerator.

Tue Mar 27 21:07:07 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Note when Database::close() was added.

Tue Mar 27 13:03:22 GMT 2012  Olly Betts <olly@survex.com>

	* api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h,
	  include/xapian/errorhandler.h: Deprecate Xapian::ErrorHandler.
	  (ticket#3)

Tue Mar 27 13:01:53 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING,docs/deprecation.rst,docs/doxygen_api.conf.in,
	  docs/doxygen_source.conf.in: Updates for addition of
	  XAPIAN_DEPRECATED_EX() and XAPIAN_DEPRECATED_CLASS_EX.

Tue Mar 27 10:11:23 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING,include/xapian.h,include/xapian/deprecated.h: Add
	  XAPIAN_DEPRECATED_EX() and XAPIAN_DEPRECATED_CLASS_EX macros which
	  mark a feature as deprecated externally but not when building the
	  library.

Tue Mar 27 08:46:29 GMT 2012  Olly Betts <olly@survex.com>

	* api/compactor.cc: Include the xapian sub-headers we actually use
	  rather than xapian.h, to avoid needless rebuilds.

Tue Mar 27 08:33:28 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Add example of deprecating a pure virtual method.

Tue Mar 27 08:30:17 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sat Mar 24 12:33:44 GMT 2012  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc: Fix signed vs unsigned
	  comparison warning with GCC 4.4.3.

Sat Mar 24 12:26:13 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser_internal.h:
	  Change the default stemming strategy to STEM_SOME, to eliminate
	  the API gotcha that setting a stemmer is ignored until you also
	  set a strategy.
	* tests/queryparsertest.cc: Add testcase qp_defaultstrategysome1 to
	  check that the default is STEM_SOME.

Fri Mar 23 04:29:32 GMT 2012  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: Fix comment cut-and-paste error.

Fri Mar 23 04:28:24 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am: Use git commit hash in the title of a coverage report
	  generated from a git tree.

Thu Mar 22 04:29:38 GMT 2012  Olly Betts <olly@survex.com>

	* xapian-core.spec.in: Remove xapian-chert-update.

Mon Mar 19 05:42:50 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: Don't count unweighted subqueries of
	  MultiAndPostList for percentage calculations, as OP_FILTER maps to
	  MultiAndPostList now.  (ticket#590)
	* tests/api_percentages.cc: Regression test topercent6.

Sun Mar 18 23:24:04 GMT 2012  Dan Colish <dcolish@>

	* backends/brass/brass_databasereplicator.cc: size out buffer to the
	  incoming blocksize

Sun Mar 18 17:02:14 GMT 2012  Dan Colish <dcolish@>

	* .gitignore: ignore /.deps as well

Sun Mar 18 16:46:45 GMT 2012  Dan Colish <dcolish@>

	* .gitignore:Update gitignore for bump to libxapian-1.3

Sun Mar 18 04:37:37 GMT 2012  Olly Betts <olly@survex.com>

	* configure.ac: Set LIBRARY_VERSION_SUFFIX to -1.3.

Sun Mar 18 00:48:05 GMT 2012  Dan Colish <dcolish@gmail.com>

	* backends/brass/,common/Makefile.mk, common/compression_stream.h,
	  common/compression_stream.cc: Compress changesets in brass
	  replication. Increments the changeset version. Ticket #348

Sun Mar 18 00:39:23 GMT 2012  Dan Colish <dcolish@gmail.com>

	* tests/.gitignore,tests/soaktest/.gitignore: Add additional ignores
	  for test artifacts

Fri Mar 16 05:23:54 GMT 2012  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Missing part of previous change.

Fri Mar 16 04:59:53 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am,m4-macros/xapian.m4: Rename libxapian to libxapian-1.3
	  and xapian.m4 to xapian-1.3.m4.

Wed Mar 14 04:58:55 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS,tests/api_unicode.cc,unicode/tclUniData.cc: Update
	  Unicode character database to 6.1.0.

Wed Mar 14 02:23:27 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Update for 1.3.0.

Tue Mar 13 07:44:32 GMT 2012  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.2.9 and ChangeLog.

Tue Mar 13 00:28:58 GMT 2012  Olly Betts <olly@survex.com>

	* docs/geospatial.rst: Fix typo - it's LatLongCoords::append() not
	  LatLongCoords::insert().

Mon Mar 12 23:14:20 GMT 2012  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Fix typo - need "1.2.x" not "1.0.x" to get
	  both flint and chert support.

Mon Mar 12 11:54:19 GMT 2012  Olly Betts <olly@survex.com>

	* docs/Makefile.am: doxygen no longer generates any GIF files, so
	  stop trying to ship or install them.

Thu Mar 08 10:21:51 GMT 2012  Olly Betts <olly@survex.com>

	* docs/index.rst: Add link to new "getting started" guide.

Mon Mar 05 06:05:28 GMT 2012  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix curly double quote testcase.

Mon Mar 05 00:36:33 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/: Fix issue with AND, OR, and XOR queries against a database
	  with no documents in it - this was causing a divide by zero, which led
	  to MSet::get_matches_estimated() reporting 2147483648 on i386.
	* tests/api_backend.cc: Add regression test emptydb1.

Sun Mar 04 23:05:17 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix comment typo.

Fri Mar 02 04:00:19 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Address new warnings from GCC 4.6.

Wed Feb 29 22:36:26 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Improve documentation of Database::close()
	  and ~WritableDatabase().

Thu Jan 26 03:49:24 GMT 2012  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow
	  Unicode curly double quote characters to start and/or end phrases.

Sun Jan 22 13:28:30 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-delve.cc: Send errors to stderr not stdout.

Sun Jan 22 13:16:21 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Update details of versions of doxygen, automake and libtool
	  used to bootstrap snapshots and releases.

Fri Jan 20 21:35:38 GMT 2012  Olly Betts <olly@survex.com>

	* tests/Makefile.am: unittest needs getopt for non-glibc platforms.

Fri Jan 20 21:33:59 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/query.h: GCC 4.2.1 on Mac OS X seems to need a copy
	  ctor for InvertedQuery_ - unclear why, but it's easy to add one.

Wed Jan 18 13:13:07 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h,include/xapian/postingsource.h,
	  include/xapian/weight.h: Document that you can define a static
	  operator delete method in your subclass if deallocation needs to be
	  handled specially.  (Closes ticket#554)

Wed Jan 18 12:27:20 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/geospatial.h: Mark as experimental for now.

Wed Jan 18 12:22:39 GMT 2012  Olly Betts <olly@survex.com>

	* docs/geospatial.rst: Say "haversine" rather than "Haversine"
	  consistently.

Wed Jan 18 12:01:28 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/geospatial.h: Change empty() to return bool not
	  size_t.

Wed Jan 18 10:44:16 GMT 2012  Olly Betts <olly@survex.com>

	* docs/geospatial.rst: Fix minor typos in geospatial docs.

Wed Jan 18 10:39:53 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am,api/postingsource.cc,api/queryinternal.cc,
	  api/registry.cc,common/output.h,common/registryinternal.h,
	  docs/geospatial.rst,geospatial/,include/Makefile.mk,include/xapian.h,
	  include/xapian/geospatial.h,include/xapian/postingsource.h,
	  include/xapian/registry.h,tests/.gitignore,tests/Makefile.am,
	  tests/api_geospatial.cc: Merge geotomerge2 branch from github.
	  Closes ticket#481.

Tue Jan 17 22:29:10 GMT 2012  Olly Betts <olly@survex.com>

	* api/errorhandler.cc: Reorder header includes.

Mon Jan 16 22:59:02 GMT 2012  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.lemony: Fix
	  FLAG_AUTO_SYNONYMS not to enable auto multi-word synonyms too.
	* tests/queryparsertest.cc: Extend testcase qp_synonym1 to include a
	  regression test for this bug.

Sun Jan 15 12:41:35 GMT 2012  Olly Betts <olly@survex.com>

	* .gitignore,backends/Makefile.mk,backends/brass/,backends/chert/,
	  backends/dbcheck.cc,bin/,common/bitstream.h,
	  include/xapian/database.h: Add a (currently experimental) API for
	  checking the integrity of databases (partly addresses ticket#238).
	  This means we can remove XAPIAN_VISIBILITY_DEFAULT from a number of
	  functions which aren't in the public API (partly addresses
	  ticket#63).

Fri Jan 13 12:07:39 GMT 2012  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Include <xapian.h> rather than <xapian/stem.h> -
	  we're trying to test the public API, so including the public API
	  header is better.

Thu Jan 12 13:15:27 GMT 2012  Olly Betts <olly@survex.com>

	* tests/unittest.cc: Add new testcases simple_exceptions_work1 and
	  class_exceptions_work1 which perform sanity tests of exception
	  handling.
	* tests/internaltest.cc: Remove testcase test_except1 which is now
	  redundant.

Thu Jan 12 13:09:25 GMT 2012  Olly Betts <olly@survex.com>

	* common/str.cc: Special cases for 0 in tostring() templates aren't
	  actually needed, but special casing single digit numbers may be
	  worthwhile anyway, so change comments to FIXME ones about checking
	  this.
	* tests/internaltest.cc: Test str() on unsigned 0, and some negative,
	  signed positive, and unsigned positive single digits values.

Wed Jan 11 13:03:54 GMT 2012  Olly Betts <olly@survex.com>

	* backends/multi/multi_alltermslist.h: Fix filename in @file.

Wed Jan 11 12:53:44 GMT 2012  Olly Betts <olly@survex.com>

	* api/documentterm.h,api/maptermlist.h,api/omenquireinternal.h,
	  backends/brass/,backends/chert/,backends/database.h,
	  backends/document.h,backends/inmemory/inmemory_alltermslist.h,
	  backends/inmemory/inmemory_database.h,
	  backends/inmemory/inmemory_positionlist.h,
	  backends/multi/multi_postlist.h,backends/multi/multi_termlist.h,
	  backends/positionlist.h,backends/remote/net_termlist.h,
	  backends/valuestats.h,common/,include/xapian/query.h,matcher/,
	  queryparser/queryparser_internal.h,tests/harness/,
	  tests/perftest/freemem.h,tests/perftest/runprocess.h: Convert
	  comments at the start of files to @file and @brief doxygen comments.

Wed Jan 11 11:36:55 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/phrasepostlist.h: Remove lone "----START-LICENCE----" -
	  the rest got removed ages ago.

Wed Jan 11 11:23:04 GMT 2012  Olly Betts <olly@survex.com>

	* common/replicate_utils.h: Fix "@raises" to "@exception".

Wed Jan 11 11:21:31 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.h: Fix "@parameter" to "@param".

Wed Jan 11 11:20:11 GMT 2012  Olly Betts <olly@survex.com>

	* common/debuglog.h: Fix "@msg" to "@a msg" in doxygen comment.

Wed Jan 11 11:18:50 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.h: Correct @exceptions to @exception.

Wed Jan 11 10:48:05 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: We no longer have any uses of \ to introduce doxygen
	  directives, so update HACKING to reflect that.

Wed Jan 11 10:46:01 GMT 2012  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Change \todo to @todo.

Wed Jan 11 10:09:29 GMT 2012  Olly Betts <olly@survex.com>

	* api/replication.h,api/valuesetmatchdecider.cc,
	  common/output-internal.h,common/output.h,include/xapian/,
	  tests/harness/testrunner.cc,tests/harness/testrunner.h,
	  tests/perftest/perftest.cc,tests/perftest/perftest.h: Change the
	  instances of \file and \brief in doxygen comments to @file and
	  @brief.

Wed Jan 11 10:08:19 GMT 2012  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Remove serialisedoc1 from the list of
	  testcases to run too.

Wed Jan 11 09:50:22 GMT 2012  Olly Betts <olly@survex.com>

	* matcher/multixorpostlist.h: Remove "using namespace std;" which we
	  don't need here.

Wed Jan 11 09:38:27 GMT 2012  Olly Betts <olly@survex.com>

	* common/filetests.h: Remove "using namespace std;" which we don't
	  need here.

Wed Jan 11 09:36:27 GMT 2012  Olly Betts <olly@survex.com>

	* common/filetests.h: Add documentation comments.

Wed Jan 11 09:28:26 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_serialise.cc: Extend serialise_document1 to test
	  serialising and unserialising an empty document, which is an
	  interesting edge case.
	* tests/internaltest.cc: Remove testcase serialisedoc1, which
	  now doesn't add useful additional coverage over serialise_document1.

Wed Jan 11 08:29:04 GMT 2012  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Test document serialisation via the public
	  API (which was added after the tests were).
	* net/serialise.h: Remove XAPIAN_VISIBILITY_DEFAULT from
	  serialise_document() and unserialise_document().

Wed Jan 11 05:57:14 GMT 2012  Olly Betts <olly@survex.com>

	* api/replication.cc,common/,tests/unittest.cc: Move removedir() from
	  utils.{cc,h} to fileutils.{cc,h}, and remove the now empty
	  utils.{cc,h}.

Wed Jan 11 05:44:38 GMT 2012  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Check return values from system() calls
	  and throw a std::string exception if non-zero.

Wed Jan 11 05:20:30 GMT 2012  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/omassert.cc,common/omassert.h,
	  common/utils.cc: Change the sense of the bool returned by
	  within_DBL_EPSILON() to match what the name suggests instead of being
	  the opposite, and change the use of it too.  Move
	  within_DBL_EPSILON() implementation from utils.cc to new file
	  omassert.cc, only compile it when assertions are on, and prototype it
	  in omassert.h rather than utils.h.

Wed Jan 11 05:09:39 GMT 2012  Olly Betts <olly@survex.com>

	* api/compactor.cc,api/replication.cc,backends/brass/,backends/chert/,
	  backends/dbfactory.cc,common/utils.cc,common/utils.h,
	  tests/api_backend.cc,tests/api_wrdb.cc,
	  tests/harness/backendmanager.cc,tests/harness/unixcmds.cc: Remove
	  std::string wrappers for C library functions from utils.h and just
	  explicitly call c_str() when we need to.  These wrappers are
	  problematic as they suppress warnings from _FORTIFY_SOURCE about
	  ignored return values, and I can't see an easy way to avoid that.

Wed Jan 11 03:35:35 GMT 2012  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/brass/brass_databasereplicator.cc,
	  backends/brass/brass_table.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/chert/chert_table.cc,backends/databasereplicator.cc,
	  backends/dbfactory.cc,common/utils.cc,common/utils.h: Use
	  file_exists() and dir_exists() from common/filetests.h everywhere and
	  remove the old versions in common/utils.h and common/utils.cc.

Wed Jan 11 02:20:45 GMT 2012  Olly Betts <olly@survex.com>

	* common/utils.h: Remove XAPIAN_VISIBILITY_DEFAULT from old
	  file_exists() and dir_exists().

Wed Jan 11 02:19:58 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Convert to use filetests.h.

Wed Jan 11 02:14:07 GMT 2012  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc,bin/xapian-inspect.cc: Convert to use
	  filetests.h.

Wed Jan 11 02:13:02 GMT 2012  Olly Betts <olly@survex.com>

	* common/filetests.h: Rename directory_exists() to dir_exists().

Wed Jan 11 02:10:06 GMT 2012  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/filetests.h,tests/api_replicate.cc,
	  tests/harness/backendmanager_multi.cc,tests/harness/testsuite.cc:
	  Add new inline versions of file_exists() and directory_exists() and
	  use these from the testsuite, as a step towards making these internal
	  to the library.

Tue Jan 10 23:37:36 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_serialise.cc: Change the rather odd "operator delete(p);"
	  to the more natural "delete p;".

Tue Jan 10 22:45:01 GMT 2012  Olly Betts <olly@survex.com>

	* tests/unittest.cc: Fix message typo in recent unittest change.

Tue Jan 10 13:48:38 GMT 2012  Olly Betts <olly@survex.com>

	* common/safesysstat.h: The S_ISDIR and S_ISREG macros for MSVC are
	  unlikely to work on other platforms (_S_IFMT vs S_IFMT, etc) so
	  split them.  Tweak a few comments.

Tue Jan 10 13:10:25 GMT 2012  Olly Betts <olly@survex.com>

	* net/: Split encode_length() and decode_length() out of
	  serialise.{cc,h} into new file length.{cc,h}, and remove
	  XAPIAN_VISIBILITY_DEFAULT from decode_length().
	* api/,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,backends/remote/net_postlist.cc,
	  backends/remote/remote-database.cc,net/: Update headers which need
	  to be included.
	* tests/internaltest.cc,tests/unittest.cc: Move serialiselength1 and
	  serialiselength2 from internaltest to unittest.

Mon Jan 09 02:16:22 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Actually add test coverage for
	  ByteLengthPrefixedStringItor - the previous attempt didn't cause
	  merging of synonym lists to happen.

Mon Jan 09 00:21:25 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Fix comment typo.

Sun Jan 08 14:47:19 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Add test coverage for
	  ByteLengthPrefixedStringItor.

Sun Jan 08 14:05:19 GMT 2012  Olly Betts <olly@survex.com>

	* common/fd.h,tests/api_db.cc,tests/harness/backendmanager.cc: Add
	  missing explicit header includes, uncovered by compiling with
	  STLport.

Sat Jan 07 11:45:00 GMT 2012  Olly Betts <olly@survex.com>

	* INSTALL,configure.ac,m4/rjb_find_stlport.m4,xapian-config.in: Remove
	  configure's --with-stlport and --with-stlport-compiler options, as
	  they don't allow you to actually specify what you need (at least to
	  use the Debian STLport package), and instead document what to pass
	  to configure to enable building with STLport (though it seems to no
	  longer be actively maintained, and the debug mode (which is probably
	  the most interesting feature now) doesn't seem to work on Debian
	  stable).

Sat Jan 07 10:24:25 GMT 2012  Olly Betts <olly@survex.com>

	* HACKING: Update STLPort URL to point to the more active fork on
	  SourceForge.

Fri Jan 06 20:07:06 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_sorting.cc: Add check that NeverUseMeKeyMaker::operator()
	  would actually cause a test failure if called.

Fri Jan 06 20:01:27 GMT 2012  Olly Betts <olly@survex.com>

	* tests/api_stem.cc: Test get_description() on a user-implemented
	  stemmer.

Fri Jan 06 14:34:16 GMT 2012  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/harness/,tests/queryparsertest.cc,
	  tests/termgentest.cc,tests/unittest.cc: Make unittest use the test
	  harness, so it gets all the valgrind and fd leak checks, and other
	  handy features all the other tests have.  Currently this is done in
	  a bit of a hacky way, but it's a starting point for abstracting out
	  the Xapian-specific parts of the test harness.

Fri Jan 06 08:42:26 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am: Delete generated lcov directory before running genhtml.
	  Pass --demangle-cpp and --html-gzip to genhtml.

Fri Jan 06 08:14:05 GMT 2012  Olly Betts <olly@survex.com>

	* Makefile.am: Trim `pwd` off all paths in coverage report.

Fri Jan 06 02:29:04 GMT 2012  Olly Betts <olly@survex.com>

	* common/pretty.h: Add support for AndContext and OrContext.

Fri Jan 06 02:28:07 GMT 2012  Olly Betts <olly@survex.com>

	* common/pretty.h: Use XAPIAN_PRETTY_AS_CLASSNAME for classes in
	  namespace Xapian::Internal too.

Thu Jan 05 12:23:10 GMT 2012  Olly Betts <olly@survex.com>

	* tests/internaltest.cc,tests/unittest.cc: Move tests of
	  serialise_double() and unserialise_double() from internaltest to
	  unittest.
	* common/serialise-double.h: This means serialise_double() and
	  unserialise_double() no longer need external visibility, so make
	  them internal only.

Thu Jan 05 12:08:15 GMT 2012  Olly Betts <olly@survex.com>

	* common/bitstream.h: BitWriter doesn't need public visibility.

Thu Jan 05 10:53:23 GMT 2012  Olly Betts <olly@survex.com>

	* common/output-internal.h,common/pretty.h: Fix include paths for two
	  cases which are only used in a logging build.

Fri Dec 30 09:17:50 GMT 2011  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Update expected results (mostly because we
	  no longer flatten groups of the same operator at Query construction
	  time).

Thu Dec 29 13:47:04 GMT 2011  Olly Betts <olly@survex.com>

	* api/Makefile.mk: Add missing backslash so various headers actually
	  get shipped.

Thu Dec 29 11:29:04 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Add fake templated ctor for SWIG.

Thu Dec 29 00:23:25 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_scalability.cc: Add regression test querypairwise1 for
	  ticket#273.

Thu Dec 29 00:03:17 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/remote/remote-database.cc,
	  backends/remote/remote-database.h,docs/deprecation.rst,
	  include/xapian/query.h,matcher/,net/remoteserver.cc,
	  queryparser/queryparser.lemony,tests/,weight/weightinternal.h: Merge
	  query-internal-reimplementation git branch which reimplements
	  Query::Internal. (ticket#280).  These are the most notable changes:
	  + Query objects are smaller and should be faster.
	  + More readable format for Query::get_description().
	  + More compact serialisation format for Query objects.
	  + Query operators are no longer flattened as you build up a tree (but
	    the query optimiser still combines groups of the same operator).
	    This means that Query objects are truly immutable, and so we don't
	    need to copy Query objects when composing them.  This should also
	    fix a few O(n*n) cases when building up an n-way query pair-wise.
	    (ticket#273)
	  + The Query optimiser can do a few extra optimisations.

Mon Dec 26 12:13:36 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc: Change
	  QueryParser::set_default_op() to reject operators which don't make
	  sense to set, and explicitly document all the operators which are
	  allowed.
	* tests/queryparsertest.cc: Check that bad operators are rejected in
	  existing testcase qp_default_op2.  Add new testcase qp_default_op3 to
	  check that good operators can be set and work in a simple testcase.

Mon Dec 26 09:12:09 GMT 2011  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_brass.h,
	  tests/harness/backendmanager_chert.h: Remove superfluous "private:"
	  access specifiers.

Sat Dec 24 12:34:19 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Recommend installing valgrind, ccache, and eatmydata.

Sat Dec 24 12:28:44 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Make it clear "Building from SVN" applies to git too, and
	  mention that git-svn is needed when building from git.

Thu Dec 22 11:18:17 GMT 2011  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Initialise variable which can
	  be used uninitialised.

Thu Dec 22 03:14:02 GMT 2011  Olly Betts <olly@survex.com>

	* bin/Makefile.mk: Link $(libxapian_la) after libbrasscheck.la and
	  libchertcheck.la to fix mingw build.  Probably closes ticket#567.

Thu Dec 22 02:45:45 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Document that OP_ELITE_SET with non-term
	  subqueries might pick subqueries which don't match anything.
	  Closes ticket#49.

Thu Dec 22 02:37:10 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Improve documentation of OP_ELITE_SET.

Wed Dec 21 12:26:00 GMT 2011  Olly Betts <olly@survex.com>

	* api/errorhandler.cc: Rearrange code in ErrorHandler::operator() to
	  be clearer.

Wed Dec 21 11:23:28 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/errorhandler.h: Fix typo: 'APU' -> 'API'.

Wed Dec 21 09:57:32 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/brass_postlist.cc,
	  backends/brass/brass_postlist.h,backends/chert/,
	  backends/contiguousalldocspostlist.cc,
	  backends/contiguousalldocspostlist.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
	  backends/remote/,docs/,expand/,include/xapian/,matcher/,
	  net/remoteserver.cc,net/serialise.cc,tests/,weight/bm25weight.cc,
	  weight/boolweight.cc,weight/tradweight.cc: Deprecate Xapian::weight
	  typedef in favour of just using double, and make the replacement
	  everywhere.  Closes ticket#560.

Tue Dec 20 13:31:21 GMT 2011  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Include "safesysstat.h" for fstat().

Fri Dec 16 03:05:17 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_termlisttable.cc,
	  backends/chert/chert_termlisttable.cc,
	  backends/multi/multi_postlist.cc,net/replicatetcpclient.cc,
	  net/serialise.cc,net/tcpserver.cc,tests/,
	  tests/harness/backendmanager_remoteprog.cc,tests/queryparsertest.cc,
	  tests/soaktest/soaktest_queries.cc,tests/termgentest.cc: Remove
	  unnecessary includes on "utils.h".

Fri Dec 16 02:57:49 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc,backends/brass/brass_database.cc,
	  backends/brass/brass_databasereplicator.cc,
	  backends/chert/chert_btreebase.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_databasereplicator.cc,
	  net/remoteconnection.cc,tests/api_replicate.cc: Replace uses of
	  fdcloser class with new FD class.
	* common/utils.h: Remove fdcloser class.

Fri Dec 16 00:56:45 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Use a const int rather than a #define for
	  BUFSIZE.

Fri Dec 16 00:50:57 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Avoid leaking fds on exceptions in
	  truncated_copy().

Fri Dec 16 00:42:11 GMT 2011  Olly Betts <olly@survex.com>

	* common/fd.h: Oops, fix to actually compile.

Thu Dec 15 23:54:44 GMT 2011  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/fd.h: Add new FD class which wraps a file
	  descriptor and ensures it gets released when we exit the scope.

Thu Dec 15 22:44:16 GMT 2011  Olly Betts <olly@survex.com>

	* weight/Makefile: Add forwarding Makefile.

Thu Dec 15 22:17:18 GMT 2011  Olly Betts <olly@survex.com>

	* weight/Makefile.mk: Ship dir_contents and Makefile.

Tue Dec 13 10:33:21 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and branches/1.2.

Fri Dec 09 10:33:25 GMT 2011  Olly Betts <olly@survex.com>

	* tests/soaktest/soaktest.cc,tests/soaktest/soaktest.h,
	  tests/soaktest/soaktest_queries.cc: "boulton" -> "Boulton" in
	  copyright statements.

Fri Dec 09 10:31:18 GMT 2011  Olly Betts <olly@survex.com>

	* tests/soaktest/soaktest.cc: With Sun's compiler, random() and
	  srandom() aren't in <cstdlib> so we need to use <stdlib.h> instead.

Fri Dec 09 07:51:44 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/types.h: Set BAD_VALUENO to 0xffffffff rather than
	  static_cast<valueno>(-1) - it's the same value currently, but more
	  robust to valueno being set a wider type.

Fri Dec 09 07:49:07 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/types.h: Explicitly document which value slot numbers
	  are valid.  Fixes ticket#555.

Sat Dec 03 09:32:55 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_opsynonym.cc: Fix typo in comment.

Thu Dec 01 04:41:24 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Remove bogus paragraph in
	  replace_document() documentation comment, cut and pasted from
	  delete_document() documentation comment.  (Fixes bug#579)

Tue Nov 08 01:50:25 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Add missing doxygen @param commands.

Tue Nov 08 01:33:34 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/database.h,include/xapian/document.h: Add missing
	  doxygen @param commands.

Mon Nov 07 10:31:04 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Address doxygen warnings.

Mon Nov 07 02:40:50 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Document undocumented parameters,
	  fixing doxygen warnings.
	* include/xapian/queryparser.h: Escape < and > in doxygen comments.

Mon Nov 07 02:38:18 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Enquire::get_eset() doesn't take a min_wt
	  parameter, so remove @param documentation for it.

Mon Nov 07 01:59:54 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/: Document lots of parameters, fixing doxygen
	  warnings.

Sun Nov 06 22:05:09 GMT 2011  Olly Betts <olly@survex.com>

	* generate-exceptions: Document all parameters to fix doxygen
	  warnings.

Sun Nov 06 22:03:50 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/: Fix doxygen warnings.

Sun Nov 06 21:00:08 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Document value parameter of
	  sortable_serialise() and sortable_unserialise().

Sun Nov 06 17:53:31 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Improve Document get_data() and set_data()
	  documentation comments.

Sun Nov 06 17:14:39 GMT 2011  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Add -I$(top_srcdir) so api/replication.h is found
	  in a VPATH build.

Sun Nov 06 16:06:52 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/database.h,backends/document.h,
	  backends/multi/multi_alltermslist.h,backends/positionlist.h,common/,
	  tests/harness/: More more headers out of common.

Sun Nov 06 14:55:25 GMT 2011  Olly Betts <olly@survex.com>

	* api/maptermlist.h,backends/inmemory/Makefile.mk,
	  backends/inmemory/inmemory_positionlist.h,
	  backends/remote/Makefile.mk,backends/remote/remote-database.cc,
	  backends/remote/remote-database.h,common/Makefile.mk,
	  common/inmemory_positionlist.h,common/remote-database.h,
	  matcher/multimatch.cc,matcher/remotesubmatch.cc,
	  matcher/remotesubmatch.h,net/progclient.h,net/remotetcpclient.h:
	  Move two more headers out of common.

Sun Nov 06 11:56:46 GMT 2011  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Fix for VPATH build.

Sun Nov 06 11:26:18 GMT 2011  Olly Betts <olly@survex.com>

	* common/,tests/api_replicate.cc: Factor internal classes out of
	  output.h into new output-internal.h to fix build failures in VPATH
	  due to move of weightinternal.h out of common (since the test harness
	  uses output.h).

Sun Nov 06 00:49:45 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/,backends/chert/,backends/dbfactory_remote.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/multi/multi_termlist.cc,backends/remote/net_postlist.cc,
	  backends/remote/net_termlist.h,backends/remote/remote-database.cc,
	  bin/,common/,expand/,matcher/,net/,tests/internaltest.cc,
	  weight/Makefile.mk,weight/weightinternal.h: Move even more headers
	  out of common and next to their corresponding C++ file.

Sat Nov 05 23:55:55 GMT 2011  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/Makefile.mk,
	  backends/brass/brass_databasereplicator.h,
	  backends/chert/chert_databasereplicator.h,
	  backends/databasereplicator.h,common/Makefile.mk,
	  common/databasereplicator.h: Move databasereplicator.h from common to
	  backends.

Sat Nov 05 23:51:40 GMT 2011  Olly Betts <olly@survex.com>

	* backends/Makefile.mk: Fix sort order of noinst_HEADERS.

Sat Nov 05 23:50:33 GMT 2011  Olly Betts <olly@survex.com>

	* api/documentvaluelist.h,api/omdatabase.cc,api/valueiterator.cc,
	  backends/Makefile.mk,backends/brass/,backends/chert/,
	  backends/inmemory/inmemory_database.cc,
	  backends/multi/multi_valuelist.cc,backends/multivaluelist.h,
	  backends/valuelist.h,backends/valuestats.h,bin/xapian-check-brass.cc,
	  bin/xapian-check-chert.cc,common/,matcher/valuerangepostlist.h,
	  matcher/valuestreamdocument.h: Move multivaluelist.h, valuelist.h and
	  valuestats.h from common to backends.

Sat Nov 05 23:40:49 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/brass_postlist.h,backends/chert/chert_postlist.h,
	  backends/contiguousalldocspostlist.h,backends/database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_postlist.h,backends/remote/net_postlist.h,
	  backends/remote/remote-database.cc,common/,matcher/: Move
	  emptypostlist.h, leafpostlist.h and postlist.h from common to api.

Sat Nov 05 23:31:14 GMT 2011  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,
	  backends/contiguousalldocspostlist.h,common/Makefile.mk,
	  common/contiguousalldocspostlist.h: Move contiguousalldocspostlist.h
	  from common to backends.

Sat Nov 05 23:28:49 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/Makefile.mk,backends/alltermslist.h,
	  backends/brass/,backends/chert/,
	  backends/inmemory/inmemory_alltermslist.h,common/Makefile.mk,
	  common/alltermslist.h,common/multialltermslist.h: Move alltermslist.h
	  from common to backends.

Sat Nov 05 23:20:05 GMT 2011  Olly Betts <olly@survex.com>

	* common/safesysselect.h: Fix typo (FDSET -> FD_SET).

Sat Nov 05 23:12:09 GMT 2011  Olly Betts <olly@survex.com>

	* common/safesysselect.h: Enhance to provide portability for __WIN32__
	  too.
	* net/remoteconnection.cc,net/tcpclient.cc: Update to make use of this.

Sat Nov 05 22:39:51 GMT 2011  Olly Betts <olly@survex.com>

	* common/safesysselect.h: Add wrapper around FD_SET() under __WIN32__
	  which casts the fd parameter to unsigned to avoid a warning on mingw.
	* net/tcpclient.cc: Remove __WIN32__-specific case here which was
	  working around this warning.

Sat Nov 05 21:58:12 GMT 2011  Olly Betts <olly@survex.com>

	* bin/.gitignore,bin/Makefile.mk,bin/xapian-delve.cc,
	  docs/admin_notes.rst,examples/,xapian-core.spec.in: Move delve from
	  examples to bin and rename to xapian-delve.

Sat Nov 05 15:18:37 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst: Fix a few things which were out of date and
	  improve wording in various places.

Sat Nov 05 12:07:14 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Fix some factual errors, and tweak .rst
	  source layout a little (":\n::\n" -> "::\n").

Thu Nov 03 20:53:49 GMT 2011  Richard Boulton <richard@tartarus.org>

	* common/msvc_posix_wrapper.cc,common/safe.cc,net/tcpclient.cc:
	  Some fixes for warnings when cross-compiling with mingw; missing
	  includes to get declarations of functions in windows support
	  code, and change to use the windows SOCKET type to avoid a
	  signed/unsigned comparison warning in tcpclient.

Sun Oct 30 23:31:09 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sun Oct 30 13:16:12 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: List which flags FLAG_DEFAULT includes
	  in the doxygen documentation comments.

Sat Oct 29 14:47:04 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Add note to API docs to discourage use
	  of percentage scores.

Sat Oct 29 14:40:39 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstart.rst,docs/quickstartexpand.cc.html,
	  docs/quickstartsearch.cc.html,examples/quest.cc,
	  examples/simpleexpand.cc,examples/simplesearch.cc: Use get_weight()
	  instead of get_percent() in examples, since percentages are rather
	  old fashioned and you probably don't want to use them in new
	  applications.

Sat Oct 29 13:29:37 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,docs/deprecation.rst,
	  include/xapian/enquire.h,include/xapian/types.h,tests/api_anydb.cc:
	  Deprecate Xapian::percent and use int instead in the API and our
	  own code.

Sat Oct 29 12:30:05 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Fix indentation of example code.

Sat Oct 29 10:04:24 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst: Fix typo in example code.

Fri Oct 28 14:39:09 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Note that commit() was new in 1.1.0.

Fri Oct 14 12:38:45 GMT 2011  Olly Betts <olly@survex.com>

	* common/realtime.h: Use safesysselect.h.

Mon Oct 03 00:53:13 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Incorporate changes from latest upstream
	  version.  I'm failing to follow branch structure upstream to work
	  out which changesets to merge so it's simpler to just compare the
	  latest version with what we currently have.

Sun Oct 02 23:31:52 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge http://www.sqlite.org/src/info/d8bab8cf0b:
	  'Added %expect directive, to consider a certain number of conflicts
	  "correct." This has the side effect of changing the process exit
	  code to never overflow.'

Sun Oct 02 23:26:34 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge http://www.sqlite.org/src/info/e6cbe1e5ee:
	  "Added -T option, to specify a template filename on the command
	  line.  The default is still "lempar.c", though."  Not currently
	  useful to us, but trying to minimise differences with upstream
	  lemon.

Sun Oct 02 23:14:32 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge http://www.sqlite.org/src/info/e22c090f35:
	  "Another attempt at fixing the table generator in lemon. Again, this
	  does not effect the SQLite grammar."  No change to generated grammar
	  for QueryParser.

Sun Oct 02 22:59:28 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge http://www.sqlite.org/src/info/077a6bee2d:
	  "Fix an issue with lemon generating incorrect grammars. This issue
	  does not effect SQLite."  This means we now get the same tables
	  generated as before the previous change.

Sun Oct 02 22:25:54 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge
	  http://www.sqlite.org/src/info/27d8e684db: Enhancements to lemon to
	  generate more compact action tables and to avoid making array bounds
	  tests that can never fail on action table calculations.  This
	  reduces the size of QueryParser's tables a little.

Sun Oct 02 21:47:36 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge http://www.sqlite.org/src/info/d66a0f31eb:
	  Adjust the lemon implementation so that it always computes the same
	  PDA regardless of qsort() implementation on the host platform. In
	  other words, make all sorts in lemon stable.

Thu Sep 29 12:11:28 GMT 2011  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add cases to ensure a quoted boolean
	  prefix accepts an empty value or a single space.

Wed Sep 14 04:48:57 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Correct link which was to
	  quickstartsearch.cc.html but should be to quickstartindex.cc.html.

Tue Sep 13 08:51:34 GMT 2011  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Fix comment typo.

Thu Sep 01 12:50:43 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Clarify "sort by date" with BoolWeight
	  example.

Tue Aug 30 13:51:48 GMT 2011  Olly Betts <olly@survex.com>

	* docs/index.rst: Add link to apidoc.pdf.

Wed Aug 24 14:12:05 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix memory leak (caught by existing
	  testcase queryparser1 when run under valgrind).

Wed Aug 24 12:47:49 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/,tests/queryparsertest.cc,tests/termgentest.cc: Add
	  support for indexing and searching CJK text using n-grams.  Currently
	  this is only enabled if environmental variable XAPIAN_CJK_NGRAM is
	  set to a non-empty value.

Tue Aug 23 03:49:27 GMT 2011  Olly Betts <olly@survex.com>

	* api/vectortermlist.cc,api/vectortermlist.h: Change so that p == NULL
	  represents at_end, and p == data.data() means we've yet to start.

Mon Aug 22 15:30:51 GMT 2011  Olly Betts <olly@survex.com>

	* api/vectortermlist.cc: Add new source file missed from last commit.

Mon Aug 22 14:32:50 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/brass_synonym.cc,backends/chert/chert_synonym.cc,
	  common/Makefile.mk,common/vectortermlist.h,
	  queryparser/queryparser.cc: Reimplement VectorTermList to store the
	  list of terms encoded into a single std::string, which is a lot more
	  memory efficient that std::vector<std::string>.

Mon Aug 22 12:22:49 GMT 2011  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/const_database_wrapper.cc,
	  common/const_database_wrapper.h,matcher/Makefile.mk,
	  matcher/const_database_wrapper.cc,matcher/const_database_wrapper.h:
	  Move const_database_wrapper.h and const_database_wrapper.cc from
	  common/ to matcher/.

Sun Aug 21 12:43:38 GMT 2011  Olly Betts <olly@survex.com>

	* Makefile.am: Since we require GNU find for the coverage-check target,
	  make use of its -delete option, so we no longer also need GNU xargs.

Thu Aug 18 06:28:11 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Reorder header includes to be more
	  standard.

Thu Aug 18 01:06:00 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: <cstring> not <string.h>.

Tue Aug 16 04:56:20 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Throw Xapian::FeatureUnavailableError if
	  backends are disabled, rather than const char *.

Tue Aug 16 04:49:05 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.cc,backends/brass/brass_check.h,
	  backends/chert/chert_check.cc,backends/chert/chert_check.h,
	  bin/xapian-check.cc: Instead of giving cryptic numeric codes for
	  B-tree errors and then throwing const char *, throw
	  Xapian::DatabaseError() exceptions with string descriptions.

Fri Aug 12 23:11:51 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.2.7 and ChangeLog.

Fri Aug 12 06:38:45 GMT 2011  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Factor out throw_bad_message().

Fri Aug 12 06:22:14 GMT 2011  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Factor out throw_database_closed().

Fri Aug 12 06:17:43 GMT 2011  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Factor out throw_read_only() function.

Fri Aug 12 06:17:01 GMT 2011  Olly Betts <olly@survex.com>

	* common/noreturn.h: Add comment showing how to use XAPIAN_NORETURN
	  macro.

Sat Aug 06 05:15:53 GMT 2011  Olly Betts <olly@survex.com>

	* api/positioniterator.cc,api/postingsource.cc,api/valueiterator.cc,
	  common/serialise.h,include/xapian/positioniterator.h,
	  include/xapian/postingsource.h: Fix new warnings from -Wshadow with
	  GCC 4.6.  These warnings are when a variable name "shadows" a
	  typename, which doesn't seem problematic in general, but the only
	  alternative seems to be to disable -Wshadow entirely, and it is
	  useful in other cases.

Thu Aug 04 07:57:09 GMT 2011  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc,docs/deprecation.rst,
	  include/xapian/dbfactory.h,include/xapian/types.h: Deprecate
	  Xapian::timeout in favour of POSIX type useconds_t.

Thu Aug 04 04:04:45 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h,
	  queryparser/termgenerator_internal.cc: Rename weight parameter to
	  wdf_inc, which much better describes what it does, and avoids a
	  -Wshadow warning with GCC 4.6.

Thu Aug 04 04:03:37 GMT 2011  Olly Betts <olly@survex.com>

	* api/registry.cc: Rename weight variable to weighting_scheme to avoid
	  -Wshadow warning.

Wed Aug 03 23:13:36 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: -Wshadow gives bogus warnings with 4.0 (at least on Mac
	  OS X), so disable it for GCC < 4.1 (like the comments suggest we
	  already did!)

Wed Aug 03 22:53:55 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: Enable -fshow-column for GCC - things like vim's
	  quickfix mode will then jump to the appropriate column for a
	  compiler error or warning, not just the appropriate line.

Wed Aug 03 22:13:26 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdocument.cc,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,common/document.h: Document objects
	  now track if term positions might have been modified, so we can avoid
	  having to consider them at all if you take a document and add or
	  remove a boolean filter term.  This gives an 18% speedup for adding
	  tags in notmuch.

Mon Aug 01 15:15:17 GMT 2011  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/ompostlistiterator.cc,api/postingiterator.cc,
	  include/xapian/postingiterator.h,tests/api_db.cc: Redo
	  PostingIterator based on TermIterator with efficient end iterator
	  checks.

Mon Aug 01 13:34:44 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,
	  backends/inmemory/inmemory_database.cc,common/positionlist.h,
	  examples/delve.cc,include/xapian/positioniterator.h,
	  include/xapian/termiterator.h,include/xapian/valueiterator.h: Take
	  the old SVN end-iterator-proxies branch and rework the TermIterator
	  and PositionIterator reimplementations there to use the same
	  approach as ValueIterator now uses.

Sun Jul 31 15:24:55 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/valueiterator.h: Fix comment typo.

Sun Jul 31 14:45:46 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,tests/api_anydb.cc: Previously,
	  Enquire::get_matching_terms_begin() threw InvalidArgumentError if
	  the query was empty.  Now we just return an end iterator, which is
	  more consistent with how empty queries behave elsewhere.

Sun Jul 31 13:44:06 GMT 2011  Olly Betts <olly@survex.com>

	* api/valueiterator.cc,include/xapian/valueiterator.h: Rename private
	  ValueIterator::deref() method to decref() (since dereference has
	  another meaning to the intended "remove a reference").

Sun Jul 31 11:27:33 GMT 2011  Olly Betts <olly@survex.com>

	* api/valueiterator.cc,include/xapian/database.h,
	  include/xapian/document.h,include/xapian/valueiterator.h: Don't use
	  intrusive_ptr to reference count ValueIterator internals, but
	  instead update the reference count in hand-written code.  This is
	  less good in itself, but it means we can inline ValueIterator's
	  default constructor and its destructor in the case where the
	  internal is NULL, which should mean a comparison with the end
	  iterator optimises to a NULL pointer check but without needing
	  the ValueIteratorEnd_ class, which doesn't work as ValueIterator()
	  would in templates or some cases of overload resolution.

Sat Jul 30 12:07:52 GMT 2011  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in: Don't generate XML from doxygen for the
	  bindings - the bindings now do this for themselves.  (ticket#262)

Fri Jul 29 01:33:37 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Just forward declare "class KeyMaker"
	  rather than including <xapian/keymaker.h>.

Fri Jul 29 01:28:08 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/slowvaluelist.cc,
	  include/xapian/database.h,matcher/valuestreamdocument.cc: Change
	  Database::get_document_lazily_() to return void* so we don't need
	  to include xapian/document.h from xapian/database.h just to get
	  Document::Internal declared.  This doesn't affect user code, but
	  reduces the number of files which need to be rebuilt in the library
	  when xapian/document.h changes.

Wed Jul 27 05:59:32 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h: Remove unnecessary header includes.

Wed Jul 27 02:11:08 GMT 2011  Olly Betts <olly@survex.com>

	* docs/index.rst: Add links to Omega and bindings docs.

Tue Jul 26 05:36:50 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add Omega's OLDP CGI parameter.

Fri Jul 22 15:37:48 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Reword documentation of
	  add_boolean_prefix()'s exclusive parameter to talk about terms and
	  prefixes rather than values and fields (which was confusing since
	  "document value" has a particular meaning in Xapian).

Thu Jul 21 03:37:49 GMT 2011  Olly Betts <olly@survex.com>

	* matcher/mergepostlist.cc: Another debug logging fix.

Thu Jul 21 03:16:39 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/ompostlistiterator.cc,
	  backends/brass/brass_database.cc,
	  backends/brass/brass_positionlist.cc,
	  backends/brass/brass_postlist.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_positionlist.cc,
	  backends/chert/chert_postlist.cc: More debug logging fixes.

Thu Jul 21 02:55:00 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/omenquire.cc,api/replication.cc,
	  backends/brass/brass_alldocspostlist.cc,
	  backends/brass/brass_database.cc,
	  backends/brass/brass_spellingwordslist.cc,backends/chert/,
	  matcher/mergepostlist.cc,matcher/msetpostlist.cc,
	  matcher/synonympostlist.cc: Fix various incorrect LOGCALL lines.

Thu Jul 21 02:12:25 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_postlist.cc,backends/chert/chert_postlist.cc,
	  common/documentterm.h,net/progclient.cc: Fix uses of LOGCALL_VOID
	  which should be LOGCALL_CTOR.

Wed Jul 20 07:00:48 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_matchspy.cc: Remove checks for remote dbtype in matchspy2
	  and matchspy4 testcases - these were checking for values which would
	  never match, and the testcases should and do work with remote
	  backends.

Wed Jul 20 01:19:46 GMT 2011  Olly Betts <olly@survex.com>

	* docs/facets.rst: Minor clarification.

Wed Jul 20 00:22:38 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Document in --help that checking a whole
	  database performs additional cross-checks between the tables.

Tue Jul 19 18:29:51 GMT 2011  Richard Boulton <richard@tartarus.org>

	* docs/facets.rst: Expand descriptions for indexing and finding
	  facets to hopefully be more helpful to newcomers.

Tue Jul 19 17:52:25 GMT 2011  Richard Boulton <richard@tartarus.org>

	* docs/facets.rst: Fix example calls to add_matchspy() to be passed
	  pointers, and example call to get_termfreq().

Sat Jul 16 10:54:39 GMT 2011  Olly Betts <olly@survex.com>

	* tests/collate-test: Now understand use of "#if 0" to disable
	  testcases.
	* tests/api_db.cc: Remove comment in front of
	  "DEFINE_TESTCASE(multierrhandler1, [...]" which is no longer needed.

Wed Jul 13 15:07:27 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Improve the documentation comment for
	  Database::close().  (ticket#504)

Sat Jul 09 14:00:08 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/stem.h,languages/stem.cc: Stem::operator= now returns
	  a reference to the assigned-to object.

Sat Jul 09 07:08:03 GMT 2011  Olly Betts <olly@survex.com>

	* languages/compiler/analyser.c: Change reporting of line number for
	  repeated string in among to use "FILE:LINE:" prefix.

Sat Jul 09 01:04:18 GMT 2011  Olly Betts <olly@survex.com>

	* common/pretty.h: Don't dereference a NULL pointer.

Fri Jul 08 14:28:42 GMT 2011  Olly Betts <olly@survex.com>

	* common/output.h,common/pretty.h: Fix invalid templates in pretty.h.

Fri Jul 08 12:55:19 GMT 2011  Olly Betts <olly@survex.com>

	* common/pretty.h: Fix template for pretty printing a std::list.

Thu Jul 07 10:40:53 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Add assertions that the index is in range when
	  dereferencing MSetIterator and ESetIterator.

Wed Jul 06 08:20:56 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc: Trust
	  new to throw std::bad_alloc rather than returning NULL.

Wed Jul 06 05:50:38 GMT 2011  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Remove testcase serialisequery1.
	* tests/api_serialise.cc: Extend serialise_query1 to cover equivalent
	  cases via the API.

Tue Jul 05 01:20:59 GMT 2011  Olly Betts <olly@survex.com>

	* common/debuglog.h: Add QUERY category for debug logging.

Fri Jul 01 04:55:02 GMT 2011  Olly Betts <olly@survex.com>

	* common/unordered_map.h: Add my <unordered_map> portability wrapper
	  which was used by the JNI java bindings.  It's not currently used
	  here, but is likely to be useful (two of the GSoC projects are
	  using unordered_map).

Wed Jun 29 12:16:59 GMT 2011  Richard Boulton <richard@tartarus.org>

	* languages/compiler/tokeniser.c: Fix memory leak (of file name) in
	  snowball compiler introduced by last commit.

Wed Jun 29 07:49:36 GMT 2011  Olly Betts <olly@survex.com>

	* languages/compiler/: Report "FILE:LINE:" before each error so tools
	  like vim's quickfix mode can parse this and bring up the line with
	  the error automatically.

Wed Jun 29 07:49:10 GMT 2011  Olly Betts <olly@survex.com>

	* languages/compiler/header.h: Add comments to note that struct input
	  must be a prefix of struct tokeniser.

Wed Jun 29 07:47:30 GMT 2011  Olly Betts <olly@survex.com>

	* languages/basque.sbl: Use stringdef instead of literal accented
	  characters in the code.

Wed Jun 29 07:13:30 GMT 2011  Olly Betts <olly@survex.com>

	* docs/stemming.rst,include/xapian/stem.h,languages/: Add stemmers
	  for Armenian (hy), Basque (eu), and Catalan (ca).

Mon Jun 27 08:16:55 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Add a fake specialised form of the templated
	  ctor for SWIG.

Sat Jun 25 11:27:00 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix doc comment typo which reversed the
	  intended sense.

Sat Jun 25 06:20:34 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h: Remove unused method
	  Enquire::Internal::register_match_decider().

Sat Jun 25 06:05:22 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: MSet(MSet::Internal *) -> MSet(Internal *)
	  for consistency with other classes.

Fri Jun 24 16:15:00 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/slowvaluelist.cc,
	  include/xapian/database.h,matcher/valuestreamdocument.cc: Rename
	  Database::get_document_lazily() to get_document_lazily_() to conform
	  to our convention for naming methods for internal use which have
	  "public" visibility.

Wed Jun 22 23:51:15 GMT 2011  Richard Boulton <richard@tartarus.org>

	* configure.ac: Correct tiny typo in error message when zlib isn't
	  found.

Tue Jun 21 04:08:29 GMT 2011  Olly Betts <olly@survex.com>

	* common/autoptr.h: Update comment about why we have this file.  It's
	  no longer a concern that we might need our own AutoPtr implementation
	  but we are likely to want to be able to migrate to unique_ptr easily
	  as C++0x features become more widely available.

Tue Jun 21 02:26:36 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING,common/pretty.h,configure.ac,tests/internaltest.cc: Fix a
	  few lingering references to RefCntPtr and RefCntBase.

Tue Jun 21 02:01:25 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/,backends/chert/,backends/database.cc,
	  backends/inmemory/inmemory_alltermslist.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_alltermslist.cc,
	  backends/multi/multi_valuelist.cc,backends/remote/,common/,
	  docs/doxygen_api.conf.in,include/Makefile.mk,include/xapian/,
	  matcher/msetpostlist.h,matcher/multimatch.cc,
	  queryparser/queryparser_internal.h,
	  queryparser/termgenerator_internal.h,tests/internaltest.cc: Convert
	  to use xapian/intrusive_ptr.h instead of xapian/base.h.

Mon Jun 20 23:55:10 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/intrusive_ptr.h: Unmodified version of
	  boost/smart_ptr/intrusive_ptr.hpp as of Boost 1.42 (committed to aid
	  merging changes in the future).

Mon Jun 20 12:46:47 GMT 2011  Olly Betts <olly@survex.com>

	* common/databasereplicator.h,languages/steminternal.h,tests/harness/:
	  Remove inclusions of xapian/base.h from files which don't use
	  RefCntPtr or RefCntBase.

Mon Jun 20 11:33:03 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/base.h: Remove unnecessary check for self-assignment
	  as it isn't a common case and the current code copes gracefully with
	  it anyway.

Mon Jun 20 05:25:05 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_postlist.cc,backends/brass/brass_postlist.h,
	  backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h:
	  Reduce size of BrassPostList/ChertPostList objects by moving bool
	  members together (168->160 bytes for ChertPostList on x86-64 Linux).

Sun Jun 19 13:44:32 GMT 2011  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Fix typo in comment and verbose output.

Sun Jun 19 12:23:43 GMT 2011  Olly Betts <olly@survex.com>

	* api/error.cc,generate-exceptions: Rearrange members of Xapian::Error
	  to reduce its size (from 48 to 40 bytes on x86-64 Linux).

Sun Jun 19 12:22:53 GMT 2011  Olly Betts <olly@survex.com>

	* common/pretty.h: Fix comment typo.

Sun Jun 19 04:45:26 GMT 2011  Olly Betts <olly@survex.com>

	* INSTALL: Update GCC details - we now recommend 4.3 or newer (was 4.1)
	  and note that while 3.1 is the hard minimum requirement, the oldest
	  we've tested with at all recently was 3.3.

Sat Jun 18 14:27:14 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,
	  queryparser/termgenerator_internal.cc: Fix warning from GCC 3.3.

Sat Jun 18 06:27:03 GMT 2011  Olly Betts <olly@survex.com>

	* api/,expand/ortermlist.cc,include/xapian/: Use TermIterator() instead
	  of TermIterator(NULL), and similarly for other Xapian iterator
	  classes.

Sat Jun 18 05:16:23 GMT 2011  Olly Betts <olly@survex.com>

	* tests/zlib-vg.so: Remove file committed accidentally.

Sat Jun 18 05:07:56 GMT 2011  Olly Betts <olly@survex.com>

	* api/,include/xapian/positioniterator.h,
	  include/xapian/termiterator.h: Reimplementations of PositionIterator
	  and TermIterator from the end-iterator-proxies branch.  Assignment
	  operators for these classes now return *this rather than void.

Sat Jun 18 01:49:02 GMT 2011  Olly Betts <olly@survex.com>

	* tests/perftest/Makefile.mk: Make sure that perftest isn't run with
	  libeatmydata preloaded.

Fri Jun 17 07:39:35 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Tabs to spaces.

Fri Jun 17 07:38:06 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add flush() -> commit().

Thu Jun 16 14:40:35 GMT 2011  Olly Betts <olly@survex.com>

	* tests/: Add TEST( ) or TEST(! ) around existing reopen() calls to
	  check that we get true or false returned as we would expect.
	  (ticket#548)

Thu Jun 16 05:15:28 GMT 2011  Olly Betts <olly@survex.com>

	* README: Note licence is GPL *2+*.  Say "SVN/git".  Use trac URL for
	  wiki.

Wed Jun 15 23:31:03 GMT 2011  Olly Betts <olly@survex.com>

	* xapian-core/api/error.cc: Don't include the magic code byte at the
	  start of Error::get_description()'s return value.

Wed Jun 15 15:51:42 GMT 2011  Olly Betts <olly@survex.com>

	* exception_data.pm,generate-exceptions,net/serialise.cc: When
	  propagating exceptions from a remote backend server, use a numeric
	  code to represent which exception is being transferred rather than
	  the name of the type as that can be turned back into an exception
	  with a simple switch statement.  It's also less data to transfer.
	  (ticket#471)

Wed Jun 15 14:03:49 GMT 2011  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,docs/remote_protocol.rst,net/remoteserver.cc:
	  Propagate the return value of Database::reopen() across the link.
	  (ticket#548)

Wed Jun 15 13:03:56 GMT 2011  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,docs/remote_protocol.rst,net/remoteserver.cc:
	  Unify REPLY_GREETING and REPLY_UPDATE; send (last_docid - doccount)
	  instead of last_docid; send (doclen_ubound - doclen_lbound) instead
	  of doclen_ubound.  This requires a remote protocol major version
	  bump.  Fix out of date documentation for what's in a REPLY_UPDATE
	  message.

Wed Jun 15 12:24:07 GMT 2011  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Remove special check which gives
	  a more helpful error message when a modern client is used against a
	  remote server running Xapian <= 0.9.6.

Wed Jun 15 11:07:19 GMT 2011  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Remove unnecessary call to reopen() - either we
	  just called it or we're a writable database and it doesn't do
	  anything.

Wed Jun 15 09:03:06 GMT 2011  Olly Betts <olly@survex.com>

	* xapian-core/backends/remote/remote-database.cc,
	  xapian-core/common/remote-database.h: Factor out the code to decode
	  the returned stats into a new apply_stats_update() method.

Wed Jun 15 08:57:12 GMT 2011  Olly Betts <olly@survex.com>

	* xapian-core/Makefile.am: Remove check-* from .PHONY as that doesn't
	  work with a pattern rule.  Fix check-% pattern rule to actually work.

Tue Jun 14 15:11:38 GMT 2011  Olly Betts <olly@survex.com>

	* docs/remote_protocol.rst: Fixed typo which reversed the intended
	  sense.

Tue Jun 14 02:01:42 GMT 2011  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac: Avoid portability warning from automake
	  about GNU make %-style pattern rules.

Tue Jun 14 01:42:01 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: Add unnecessary AC_LANG_SOURCE wrapper to shut up
	  autoconf warning.

Tue Jun 14 01:18:54 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: Reset LIBRARY_VERSION_INFO to 0:0:0 for the
	  development series, since the library name is different (it has a
	  -1.3 suffix).

Mon Jun 13 16:24:20 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
	  docs/deprecation.rst,include/xapian/enquire.h,matcher/multimatch.cc,
	  net/remoteserver.cc,tests/api_backend.cc: Remove the deprecated
	  old-style match spy approach of using a MatchDecider.

Mon Jun 13 15:47:57 GMT 2011  Olly Betts <olly@survex.com>

	* api/keymaker.cc,docs/deprecation.rst,include/xapian/keymaker.h,
	  tests/Makefile.am,tests/api_sortingold.cc: Remove deprecated Sorter
	  class and MultiValueSorter subclass.
	* tests/Makefile.mk,tests/perftest/Makefile.mk,
	  tests/soaktest/Makefile.mk: Make the generated "*_all.h" depend on
	  the Makefile.am or Makefile.mk which contains the list of files it
	  is generated from so that it gets regenerated when a file is
	  removed from that list.

Mon Jun 13 13:18:29 GMT 2011  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: Remove a FIXME - caching the Document
	  object in MSetItem isn't a replacement for storing the sort_key
	  now that sort_keys can be computed.

Mon Jun 13 13:07:31 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc: Fold the
	  two forms of QueryParser::add_boolean_prefix() into one method
	  with a default parameter now that changing the ABI isn't a worry.

Mon Jun 13 12:00:36 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Non-pythonic iterators have been removed.
	  (ticket#255)

Mon Jun 13 10:40:30 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Python Stem_get_available_languages() has now
	  been removed.

Mon Jun 13 10:38:49 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,include/xapian/enquire.h: Remove deprecated
	  default value for second parameter to Enquire::set_sort_by_value()
	  and friends.

Mon Jun 13 09:30:15 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/brass/brass_database.cc,
	  backends/brass/brass_database.h,backends/chert/chert_database.cc,
	  backends/chert/chert_database.h,backends/database.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/,
	  include/xapian/database.h: Database::reopen() now returns true if
	  the database may have been reopened.  (ticket#548)

Mon Jun 13 09:01:33 GMT 2011  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Add note about xapian-chert-update.

Mon Jun 13 08:47:06 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-check-flint.cc,bin/xapian-check-flint.h: Remove two
	  flint-specific files I missed.

Mon Jun 13 08:42:11 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,Makefile.am,api/compactor.cc,api/replication.cc,
	  backends/Makefile.mk,backends/brass/brass_compact.cc,
	  backends/chert/chert_compact.cc,backends/databasereplicator.cc,
	  backends/dbfactory.cc,backends/dir_contents,backends/flint/,
	  backends/slowvaluelist.h,bin/,common/database.h,common/pretty.h,
	  common/unaligned.h,configure.ac,docs/,include/xapian/dbfactory.h,
	  include/xapian/valueiterator.h,include/xapian/version_h.cc,tests/,
	  tests/harness/,tests/queryparsertest.cc,tests/termgentest.cc,
	  tests/testdata/flint-0.9.9/,tests/testdata/flint-1.0.1/,
	  tests/testdata/flint-1.0.2/: Remove flint backend.

Mon Jun 13 06:09:29 GMT 2011  Olly Betts <olly@survex.com>

	* bin/Makefile.mk: Remove lingering reference to quartz (rules to
	  generate man pages for quartzdump, etc).

Mon Jun 13 05:46:00 GMT 2011  Olly Betts <olly@survex.com>

	* Makefile.am,tests/Makefile.am: Just use a GNU-make-specific pattern
	  rules to forward check-* targets from the top level to the tests
	  subdirectory.  It's clear we aren't keeping the explicit list of
	  target forwarding rules up to date, and this is just a convenience
	  so not worth a lot of maintenance effort.

Mon Jun 13 05:01:33 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: Update version to 1.3.0 and add -1.3 suffix for
	  library and /xapian-1.3 suffix to include file installation
	  directory.

Mon Jun 13 04:56:13 GMT 2011  Olly Betts <olly@survex.com>

	* unicode/tclUniData.cc: Upgrade to Unicode 6.0.0 (ticket#497).
	* tests/api_unicode.cc: Extend testcases to check for assorted changes
	  and additions in Unicode 6.0.0.

Sun Jun 12 11:54:45 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Final update for 1.2.6.

Sat Jun 11 10:11:23 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Update LOGCALL(MATCH, ...) to LOGCALL(DB, ...).
	  Convert LOGLINE() at start of method to LOGCALL().

Sat Jun 11 09:57:00 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Remove self-assignment check from
	  Database::operator= since this is an uncommon code path and
	  RefCntPtr ensures that self-assignment of the internals is
	  safe.

Sat Jun 11 08:48:10 GMT 2011  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/brass/brass_cursor.h,
	  backends/chert/chert_cursor.h,backends/flint/flint_cursor.h,
	  backends/flint/flint_table.cc,backends/flint/flint_values.cc,
	  backends/inmemory/inmemory_database.cc,bin/xapian-check-brass.cc,
	  bin/xapian-check-chert.cc,bin/xapian-chert-update.cc,
	  matcher/queryoptimiser.cc,matcher/valuegepostlist.h: Use string() or
	  std::string() rather than "".
	* common/remoteconnection.h,net/tcpserver.cc: Use 2 parameter form of
	  Error subclass ctors when the context is "".
	* api/replication.cc,backends/flint/flint_database.cc,
	  common/remoteconnection.h,net/replicatetcpclient.cc,
	  net/replicatetcpserver.cc: Make context parameter of
	  RemoteConnection ctor optional.
	* common/leafpostlist.h: Say 'empty' rather than '""' in a
	  documentation comment.
	* examples/simpleindex.cc: Use '.resize(0)' rather than '= ""'.

Sat Jun 11 07:01:41 GMT 2011  Olly Betts <olly@survex.com>

	* api/,backends/brass/,backends/chert/,backends/flint/,
	  backends/remote/remote-database.cc,common/,include/xapian/,matcher/,
	  net/remoteserver.cc,net/serialise.cc: Consistently use "slot" in
	  variable names for value slots, rather than valueno, valno, valueid
	  or value.  The only exception remaining is a protected member of
	  Xapian::StringValueRangeProcessor since that's really part of the
	  public API.

Fri Jun 10 11:55:45 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update in preparation for 1.2.6.

Fri Jun 10 09:05:38 GMT 2011  Olly Betts <olly@survex.com>

	* examples/NEWS,examples/TODO: Remove files which are unused since the
	  examples were merged into xapian-core.

Fri Jun 10 09:03:33 GMT 2011  Olly Betts <olly@survex.com>

	* Makefile.am: Ship ChangeLog.0 in the tarball.

Fri Jun 10 05:19:24 GMT 2011  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Actually include soaktest/Makefile.mk.

Thu Jun 09 23:26:52 GMT 2011  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Define
	  XAPIAN_DEPRECATED_CLASS to empty for doxygen.

Thu Jun 09 22:21:29 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst: Document "remote" in stub databases.

Thu Jun 09 15:23:12 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING,docs/deprecation.rst,include/xapian/deprecated.h,
	  include/xapian/keymaker.h: Add XAPIAN_DEPRECATED_CLASS macro
	  for marking a class as deprecated, so we don't have to call
	  XAPIAN_DEPRECATED() with no parameters.

Thu Jun 09 14:03:17 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Clarify wording about PATH.

Thu Jun 09 13:04:53 GMT 2011  Olly Betts <olly@survex.com>

	* docs/queryparser.rst,include/xapian/queryparser.h,
	  queryparser/queryparser.cc,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h,tests/queryparsertest.cc: Add
	  QueryParser::set_max_wildcard_expansion() method to allow limiting
	  the number of terms a wildcard can expand to.  Implementation mostly
	  from a patch by Adam Sjøgren in ticket#350.

Tue Jun 07 23:16:33 GMT 2011  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_changesetapplier.h,
	  backends/chert/chert_changesetapplier.h,
	  backends/flint/flint_changesetapplier.h: Remove dead code

Thu Jun 02 13:21:28 GMT 2011  Olly Betts <olly@survex.com>

	* AUTHORS: Add recent bug reporters.

Thu Jun 02 11:03:57 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: If default_op is OP_NEAR or
	  OP_PHRASE then disable stemming of the terms, since we don't index
	  positional information for stemmed terms by default.
	* tests/queryparsertest.cc: Adjust near1 and phrase1 to act as
	  regression tests for this fix.

Thu Jun 02 02:58:58 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_spelling.cc,backends/brass/brass_spelling.h,
	  backends/chert/chert_spelling.cc,backends/chert/chert_spelling.h,
	  backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h:
	  Fix bug Nikita Smetanin spotted with adding a word which has the
	  same trigram in an even number of times.
	* tests/api_spelling.cc: Add regression test spell8.

Wed Jun 01 14:11:38 GMT 2011  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Kill the child process which holds the lock
	  with SIGKILL as that can't be ignored, whereas SIGHUP can be in some
	  cases it seems.

Wed Jun 01 12:12:14 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstartexpand.cc.html,docs/quickstartindex.cc.html,
	  docs/quickstartsearch.cc.html: Reinstate the old HTML versions
	  of these files.

Wed Jun 01 12:09:55 GMT 2011  Olly Betts <olly@survex.com>

	* docs/queryparser.rst,docs/remote_protocol.rst: Fix literal hard
	  spaces in input to just be spaces.

Wed Jun 01 12:06:26 GMT 2011  Olly Betts <olly@survex.com>

	* docs/quickstart.rst: Fix sub-heading run in to previous paragraph.

Wed Jun 01 12:04:52 GMT 2011  Olly Betts <olly@survex.com>

	* docs/remote.rst: Replace out-dated list of xapian-tcpsrv's command
	  line options with a reference to --help and the man page.  Tweak
	  wording in a few places.

Wed Jun 01 11:54:37 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst: Change omrset to rset.  Remove some bogus `` left
	  over from fixing definition list formatting.

Wed Jun 01 11:38:09 GMT 2011  Olly Betts <olly@survex.com>

	* docs/stemming.rst: Comment out bogus claim that there are stopword
	  lists in xapian-data (the lack of stopword lists is already
	  ticket#269).

Wed Jun 01 11:29:58 GMT 2011  Olly Betts <olly@survex.com>

	* docs/matcherdesign.rst,docs/stemming.rst: Convert more arrows to
	  Unicode.
	* docs/stemming.rst: Fix some missing paragraph breaks.

Wed Jun 01 11:18:25 GMT 2011  Olly Betts <olly@survex.com>

	* docs/intro_ir.rst: Use Unicode right arrow.

Wed Jun 01 10:38:27 GMT 2011  Olly Betts <olly@survex.com>

	* docs/: Revert quickstart*.cc.html to being HTML rather than .rst as
	  the .rst version lose the syntax highlighting.  Update svn:ignore.

Wed Jun 01 10:27:11 GMT 2011  Olly Betts <olly@survex.com>

	* docs/intro_ir.rst: Sort out the remaining formatting issues.

Wed Jun 01 08:05:05 GMT 2011  Olly Betts <olly@survex.com>

	* docs/intro_ir.rst: More markup fixes.

Wed Jun 01 06:16:56 GMT 2011  Olly Betts <olly@survex.com>

	* docs/tests.rst: Use generated contents list instead of manual one.

Wed Jun 01 06:16:13 GMT 2011  Olly Betts <olly@survex.com>

	* docs/index.rst,docs/internals.rst: Centre links at top; Sort out
	  <hr> to be full width.

Wed Jun 01 03:23:20 GMT 2011  Olly Betts <olly@survex.com>

	* docs/bm25.rst: Sort out inline equations.

Tue May 31 15:21:10 GMT 2011  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Add link to Omega documentation.

Tue May 31 07:52:19 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst,docs/quickstart.rst,docs/remote_protocol.rst: More
	  .rst formatting fixes.

Tue May 31 05:02:48 GMT 2011  Olly Betts <olly@survex.com>

	* docs/overview.rst: More .rst fixes.

Tue May 31 04:32:52 GMT 2011  Olly Betts <olly@survex.com>

	* docs/: More .rst fixes.

Tue May 31 04:11:27 GMT 2011  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/code_structure.rst: Revert code_structure.html
	  conversion - this file is generated by a script.

Tue May 31 03:56:39 GMT 2011  Olly Betts <olly@survex.com>

	* docs/install.rst,docs/stemming.rst,docs/tests.rst: Fix up some .rst
	  conversion issues.

Tue May 31 03:36:49 GMT 2011  Dan Colish <dcolish@gmail.com>

	* docs/remote_protocol.rst docs/quickstart.rst docs/remote.rst
	docs/internals.rst docs/scalability.rst
	docs/quickstartsearch.cc.rst
	docs/bm25.rst docs/install.rst docs/quickstartindex.cc.rst
	docs/index.rst docs/matcherdesign.rst docs/quickstartexpand.cc.rst
	docs/queryparser.rst docs/stemming.rst docs/intro_ir.rst
	docs/code_structure.rst docs/Makefile.am docs/tests.rst
	docs/overview.rst: Bulk port all remaining documentation to RST.

Sun May 29 07:04:42 GMT 2011  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Add PostingSource example.  (ticket#503)

Sun May 29 05:19:40 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Add @exception InvalidArgumentError for
	  Database::get_document() (ticket#542).

Fri May 27 05:36:28 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu May 26 02:44:07 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: FIXME:1.1.3 -> FIXME:1.3.

Wed May 25 14:58:37 GMT 2011  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Document the precedence order of operators.

Fri May 20 04:13:54 GMT 2011  Olly Betts <olly@survex.com>

	* examples/simpleindex.cc: Add short description to usage message.

Tue May 17 21:44:55 GMT 2011  Olly Betts <olly@survex.com>

	* docs/scalability.html: Bring up-to-date.

Wed May 11 01:34:34 GMT 2011  Olly Betts <olly@survex.com>

	* AUTHORS: Add Scott Zhang for mingw fixes.

Wed May 11 01:30:54 GMT 2011  Olly Betts <olly@survex.com>

	* net/progclient.cc,net/tcpserver.cc: Need <cstdio> for sprintf on
	  __WIN32__ and cygwin.

Wed May 11 01:22:07 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: Define __MSVCRT_VERSION__ to 0x0601 under mingw so
	  we get _ftime64().

Wed May 11 01:19:14 GMT 2011  Olly Betts <olly@survex.com>

	* common/closefrom.cc,common/closefrom.h: We don't need closefrom()
	  under __WIN32__ currently, so disable it there as it doesn't
	  compile under mingw.

Mon May 09 20:13:17 GMT 2011  Olly Betts <olly@survex.com>

	* examples/delve.cc: Report has_positions().

Thu Apr 07 05:38:36 GMT 2011  Dan Colish <dcolish@gmail.com>

	* matcher/phrasepostlist.cc, matcher/queryoptimiser.cc,
	  matcher/exactphrasepostlist.cc, matcher/exactphrasepostlist.h,
	  matcher/phrasepostlist.h: Remove temporary vector in queryoptimiser
	  and replace with iterators.

Wed Apr 06 10:27:41 GMT 2011  Richard Boulton <richard@tartarus.org>

	* docs/admin_notes.rst: Remove the word "also", which makes sense
	  when read in context of the previous section, but is confusing if
	  the paragraph is read standalone, and isn't necessary.

Mon Apr 04 14:41:33 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Final update for 1.2.5.

Mon Apr 04 14:06:56 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc: Remove ? from comment - the brass
	  version change is definitely going to be in 1.2.5.

Mon Apr 04 13:57:23 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Bump release date.

Sat Mar 26 14:49:41 GMT 2011  Olly Betts <olly@survex.com>

	* INSTALL: Fix typo in previous commit.

Sat Mar 26 14:03:15 GMT 2011  Olly Betts <olly@survex.com>

	* INSTALL: Note how to build for a non-default arch on a multi-arch
	  platform.

Sat Mar 26 13:22:49 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.2.5.

Sat Mar 26 12:28:38 GMT 2011  Olly Betts <olly@survex.com>

	* AUTHORS: Update.

Sat Mar 26 10:33:19 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_postlist.cc,backends/brass/brass_postlist.h,
	  backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h,
	  backends/inmemory/inmemory_database.h: Address issues highlighted
	  by clang++ warnings.

Fri Mar 25 05:36:41 GMT 2011  Olly Betts <olly@survex.com>

	* docs/tests.html: Slight tweak to improve up-to-date-ness, but more
	  work would be useful.

Fri Mar 25 05:30:56 GMT 2011  Olly Betts <olly@survex.com>

	* docs/matcherdesign.html: Update - quite a bit has changed in the
	  matcher since this was last updated!

Thu Mar 24 23:31:57 GMT 2011  Olly Betts <olly@survex.com>

	* api/replication.cc,common/replication.h: Pass reader_close_time as
	  double everywhere, rather than truncating it to int.  Include
	  reader_close_time parameters in debug logging.  Document
	  reader_close_time in doxygen comments.

Tue Mar 22 15:36:25 GMT 2011  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_database.h:
	  Remove left over copyright.

Tue Mar 22 04:54:12 GMT 2011  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_btreebase.cc,backends/chert/chert_btreebase.cc,
	  backends/flint/flint_btreebase.cc:
	  Correct comments for which revision is packed when writing base files

Tue Mar 22 03:18:19 GMT 2011  Dan Colish <dcolish@gmail.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc,include/xapian/database.h:
	  Remove FIXME and comments for DB_OVERWRITE.

Tue Mar 22 01:18:38 GMT 2011  Dan Colish <dcolish@gmail.com>

	* backends/brass/,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc,tests/api_replicate.cc:
	  Clean up changesets when replicating. Add test coverage for this
	  feature. Allow XAPIAN_MAX_CHANGESETS to be altered without reopening
	  the database. Closes Ticket #278.

Mon Mar 21 01:50:41 GMT 2011  Olly Betts <olly@survex.com>

	* docs/bm25.html: Add a link to the 1976 Robertson/Sparck Jones paper.

Wed Mar 16 05:56:58 GMT 2011  Dan Colish <dcolish@gmail.com>

	* bin/xapian-check-flint.cc: Initialize did and current_wdf to prevent
	  uninitalized usage and compiler warnings.

Mon Mar 14 03:20:18 GMT 2011  Olly Betts <olly@survex.com>

	* common/debuglog.cc,common/debuglog.h: Rename indent member to
	  indent_level so it doesn't clash with indent() method.

Mon Mar 14 02:44:24 GMT 2011  Olly Betts <olly@survex.com>

	* common/debuglog.cc,common/debuglog.h: Use an integer counter for the
	  indent rather than a std::string which we add/remove spaces to/from.
	  This is cleaner, but also there seems to be an issue with having a
	  std::string member in a global static object on OS X.

Fri Mar 11 01:12:04 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Document using '{ }' rather than ';' for empty loop bodies.

Fri Mar 11 01:02:47 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Remove bogus ; after method definition in code example.

Fri Mar 11 00:07:22 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc: Factor out literal constant as
	  MAX_OPEN_RETRIES.

Wed Mar 09 14:54:06 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Improve the new testcases a bit.

Wed Mar 09 14:11:59 GMT 2011  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/esetinternal.h,common/omenquireinternal.h,
	  expand/esetinternal.cc,expand/expandweight.cc,
	  include/xapian/enquire.h,tests/api_anydb.cc: Enquire::get_eset() now
	  accepts a min_wt argument to allow the minimum wanted weight to be
	  specified.  Default is 0, which gives the previous behaviour.

Wed Mar 09 00:00:25 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/termiterator.h: Fix misspelling in doc comment.

Tue Mar 08 06:58:14 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/brass/brass_table.h,
	  backends/chert/chert_table.cc,backends/chert/chert_table.h,
	  backends/flint/flint_table.cc,backends/flint/flint_table.h: Use
	  defined constant BLOCK_CAPACITY instead of hardcoded 4 (ticket#536).

Tue Mar 08 05:56:42 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc,
	  backends/flint/flint_table.cc: If we try to delete an old base file
	  and it isn't there, just continue rather than throwing an exception.
	  We wanted to get rid of it anyway, and it may be NFS issues telling
	  us the wrong thing.  In particular, DatabaseCoruptError was rather
	  a pessimistic assessment.

Tue Mar 08 05:55:48 GMT 2011  Olly Betts <olly@survex.com>

	* common/io_utils.h: Note that io_unlink() may return false when it
	  should have returned true on NFS.

Sun Mar 06 23:25:47 GMT 2011  Olly Betts <olly@survex.com>

	* common/io_utils.cc,common/io_utils.h: Add io_unlink().
	* backends/brass/brass_database.cc,backends/brass/brass_table.cc,
	  backends/chert/chert_database.cc,backends/chert/chert_table.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_table.cc:
	  Use io_unlink() instead of sys_unlink_if_exists().

Sun Mar 06 22:26:36 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc: If DANGEROUS mode is turned on,
	  then actually set the flag for this in replication changes files
	  (the reader will currently throw an exception, but that's better
	  than quietly handling them incorrectly).

Sat Mar 05 12:58:31 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sat Mar 05 12:49:16 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Fix a few typos.

Sat Mar 05 06:19:25 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Fix typo in old entry.

Sat Mar 05 06:16:41 GMT 2011  Olly Betts <olly@survex.com>

	* common/remoteconnection.h: Internal doc comment improvements: Fix
	  typo, finish truncated sentence, wrap lines to 80 columns.

Sat Mar 05 02:59:35 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Make sure port number is specified.  Add
	  "(required)" after --host and --port in help.

Sat Mar 05 02:50:04 GMT 2011  Olly Betts <olly@survex.com>

	* docs/replication.rst: Mention new defaulting of -m.

Sat Mar 05 02:44:37 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: If --master isn't specified, default to
	  DATABASE.

Sat Mar 05 00:14:21 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Give an error if the host isn't set, rather
	  than trying to connect to an empty hostname, which gives the error
	  "Couldn't resolve host  (Unknown server error)", which might confuse
	  if you fail to notice the double space and realise what it means.

Fri Mar 04 17:20:13 GMT 2011  Richard Boulton <richard@tartarus.org>

	* docs/replication.rst: Update documentation to make it clear that
	  users shouldn't try to create the destination directory for
	  replication themselves.

Thu Mar 03 11:10:10 GMT 2011  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Fix typo in author's name.

Thu Mar 03 11:06:30 GMT 2011  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Update link to a paper.  Update text about book
	  "to be published in 2008".

Tue Mar 01 11:39:40 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Feb 28 12:40:24 GMT 2011  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Avoid leaking postlist tree if an exception
	  is thrown during the match.

Wed Feb 23 15:26:56 GMT 2011  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/index.html: Process collapsing.rst and link
	  it into the documentation.

Wed Feb 23 15:22:06 GMT 2011  Olly Betts <olly@survex.com>

	* docs/collapsing.rst: Add missing document (for some reason this file
	  was empty in SVN, but present in my tree under a different name, and
	  not checked in).

Mon Feb 21 14:49:06 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Deprecate MSet.items and ESet.items.

Mon Feb 21 14:06:21 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc,common/remoteconnection.h,
	  net/remoteconnection.cc: Pass a file descriptor to
	  RemoteConnection::send_file() to avoid a race between the caller
	  checking if a file exists and send_file() trying to open it to send
	  it.

Mon Feb 21 13:50:06 GMT 2011  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix issues detected by DACA cppcheck run on the
	  Debian archive.

Mon Feb 21 13:30:55 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix spaceterms1 which was never running one part
	  of the testcase (and had been that way for years).  Fix an
	  off-by-one error in the enabled code.

Mon Feb 21 13:05:36 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add some test coverage for
	  DatabaseModifiedError in get_mset().

Mon Feb 21 12:03:35 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Fix typo in old entry.

Mon Feb 21 11:36:07 GMT 2011  Olly Betts <olly@survex.com>

	* examples/quest.cc: Report any spelling correction (requires the
	  database contains spelling data of course).

Wed Feb 16 13:11:03 GMT 2011  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Add doxygen markup so alternative
	  overloaded forms of Enquire::get_mset() appear in the API
	  documentation.

Wed Feb 09 14:24:57 GMT 2011  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Up to darte for 1.2.5.  Minor wording
	  improvements.  Mention copydatabase --no-renumber.

Wed Feb 09 14:06:55 GMT 2011  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Add --no-renumber option.

Tue Feb 01 11:17:58 GMT 2011  Olly Betts <olly@survex.com>

	* configure.ac: -Wstrict-null-sentinel was added in GCC 4.0.1 so
	  doesn't work with GCC 4.0.0.  For simplicity, only enable it for
	  GCC >= 4.1.

Tue Feb  1 08:22:52 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add $set{spelling,true}.

Thu Jan 20 14:52:53 GMT 2011  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h,
	  backends/flint/flint_table.cc: Don't read the bitmaps from the base
	  files when opening a database for reading (cross-port of equivalent
	  change to chert).

Thu Jan 20 14:37:10 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_btreebase.cc,backends/brass/brass_btreebase.h,
	  backends/brass/brass_table.cc: Don't read the bitmaps from the base
	  files when opening a database for reading (cross-port of equivalent
	  change to chert).

Thu Jan 20 14:21:10 GMT 2011  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h,
	  backends/chert/chert_table.cc: Don't read the bitmaps from the base
	  files when opening a database for reading.

Thu Jan 20 01:57:02 GMT 2011  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc: Optimise not to update doclength
	  when it hasn't changed (cross-port of equivalent change to chert).

Thu Jan 20 01:36:51 GMT 2011  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Optimise not to update doclength
	  when it hasn't changed.

Wed Jan 19 03:50:18 GMT 2011  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Close ofstream objects used to write out stub
	  files for testing before we run the actual compaction, to avoid
	  issues on Microsoft Windows (ticket#525).

Wed Jan 19 01:01:38 GMT 2011  Olly Betts <olly@survex.com>

	* HACKING: Snapshots and releases are now bootstrapped with autoconf
	  2.68 and libtool 2.4.  Prune information about reasons for needing
	  really old autotools versions when there's a reason to need a newer
	  version anyway.

Sat Jan 15 11:10:26 GMT 2011  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and 1.0.23.

Sat Jan 15 10:28:10 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-chert-update.cc: Fix to handle value slot entries in the
	  termlist table.

Wed Jan 12 23:49:21 GMT 2011  Olly Betts <olly@survex.com>

	* bin/xapian-chert-update.cc: Adjust keys for doclength chunks too.

Wed Jan 12 13:37:30 GMT 2011  Olly Betts <olly@survex.com>

	* AUTHORS,bin/xapian-chert-update.cc: Fix to also rewrite docids in
	  value chunk keys (reported by Luca Barbieri on xapian-discuss).

Tue Jan 11 08:41:02 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Note removal of if idx in mset.

Tue Jan 11 08:30:29 GMT 2011  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: PostingSource now offers a replacement for
	  Enquire::set_bias().

Mon Jan 10 09:40:24 GMT 2011  Olly Betts <olly@survex.com>

	* api/compactor.cc: Add missing header <ctime> for time() (ticket#530).

Sun Jan 09 23:14:02 GMT 2011  Olly Betts <olly@survex.com>

	* api/compactor.cc: Use msvc_posix_rename() under __WIN32__ to
	  atomically update stub file after compaction (ticket#525).

Thu Dec 23 13:00:43 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Whitespace consistency tweak.

Thu Dec 23 11:01:26 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Handle
	  NEAR/<offset> and ADJ/<offset> where offset isn't an integer the same
	  way at the end of the query as in the middle.

Tue Dec 21 10:28:08 GMT 2010  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: If we can't bind to the specified port because it
	  is a privileged one, exit with code 77 (EX_NOPERM) to make it easier
	  to automatically handle failure when starting the server from a
	  script.

Tue Dec 21 07:43:52 GMT 2010  Olly Betts <olly@survex.com>

	* docs/index.html: Add link to main website.

Tue Dec 21 07:40:57 GMT 2010  Olly Betts <olly@survex.com>

	* docs/index.html,docs/overview.html: Update links to wiki.xapian.org
	  to point to trac.xapian.org/wiki instead.

Mon Dec 20 10:02:06 GMT 2010  Richard Boulton <richard@tartarus.org>

	* docs/deprecation.rst: Add note about botched removal of python's
	  Enquire.get_matching_terms (now fully removed).

Sun Dec 19 12:40:12 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update release date.

Sat Dec 18 13:17:52 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.2.4.

Wed Dec 15 11:56:22 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update.

Tue Dec 14 12:46:36 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,tests/runtest.in: Add XAPIAN_TESTSUITE_LD_PRELOAD hook to
	  allow libeatmydata to easily be used when running the testsuite.

Mon Dec 13 14:28:19 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/: Make it more explicitly clear that PostingIterator,
	  PositionIterator, and TermIterator's skip_to methods advance (and
	  hence shouldn't be expected to allow you to "rewind" the stream).

Mon Dec 13 14:18:18 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/database.h: "network databases" -> "remote databases".

Mon Dec 13 14:10:08 GMT 2010  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: If the message parameter only contains a
	  string then we can just use it as is.

Mon Dec 13 13:34:30 GMT 2010  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,common/remoteserver.h,
	  docs/remote_protocol.html,net/remoteserver.cc,tests/api_metadata.cc:
	  Add support for iterating metadata keys with the remote backend.
	  This change necessitated a minor version bump in the remote protocol.

Sun Dec 12 12:24:48 GMT 2010  Olly Betts <olly@survex.com>

	* weight/tradweight.cc: Fix calculation order to avoid inconsistent
	  weights due to rounding for TradWeight(0).
	* tests/api_backend.cc: Add regression test tradweight2.

Sat Dec 11 11:38:32 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Update thanks list with bug reporters and patch submitters.

Thu Dec 09 03:59:42 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Dec 09 03:58:20 GMT 2010  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Add FIXME note about using sendfile() or
	  similar.

Tue Dec 07 10:16:31 GMT 2010  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Note 1.0.x version #515 was fixed in.

Mon Dec 06 05:26:01 GMT 2010  Olly Betts <olly@survex.com>

	* net/replicatetcpclient.cc: Rearrange loop to avoid duplicating code.

Mon Dec 06 01:39:23 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix typo so we test for OP_NEAR or
	  OP_PHRASE, not twice for OP_NEAR, which fixes a bug with not setting
	  the correct window size for default_op of OP_PHRASE in some cases.
	  Factor out the "is_positional(op)" test into an inlined function to
	  help avoid repeating this error.
	* tests/queryparsertest.cc: Add regression test coverage.

Mon Dec 06 01:01:03 GMT 2010  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add coverage for OP_PHRASE as default_op.

Sun Dec 05 12:35:32 GMT 2010  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Fix calculation order to avoid inconsistent
	  weights due to rounding when BM25Weight is used with certain
	  non-default parameter combinations.
	* tests/api_backend.cc: Add regression test bm25weight2.

Sun Dec 05 12:10:36 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_compact.cc: Add FIXME comment regarding
	  resolve_duplicate_metadata() getting called multiple times for the
	  same key in multipass mode.

Sun Dec 05 12:09:32 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/compactor.h: Add documentation comments.

Sun Dec 05 04:54:03 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Omega now wants libmagic-dev (though it's optional
	  currently).

Wed Nov 17 10:56:10 GMT 2010  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add command line options to allow prefixes to
	  be specified for the QueryParser.

Tue Nov 09 23:18:36 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
	  backends/flint/flint_compact.cc: Fix access to empty priority_queue
	  while merging synonyms (found with _GLIBCXX_DEBUG).

Tue Nov 09 03:23:49 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Drop list of platforms valgrind supports, as it takes
	  effort to keep up to date.  People can check valgrind.org for an
	  accurate list of currently supported platforms.

Sun Nov 07 14:13:44 GMT 2010  Olly Betts <olly@survex.com>

	* api/compactor.cc,backends/brass/brass_compact.cc,
	  backends/chert/chert_compact.cc,backends/flint/flint_compact.cc,
	  bin/xapian-compact.cc,include/xapian/compactor.h:
	  Compactor::resolve_duplicate_metadata() callback method is now passed
	  an array of std::string plus the array length, which allows for more
	  efficient merging that the series of pairwise merges which was
	  required before.

Mon Nov 01 14:47:37 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/multimatch.cc,matcher/multixorpostlist.cc,
	  matcher/multixorpostlist.h: Add debugging to print out the
	  postlist description after recalculation of maxweight, and to
	  MultiXorPostList methods.  Fix problem shown by soaktest where
	  the matcher was not told to recalculate the maxweight after a
	  MultiXorPostList child reached end, which was causing an
	  assertion failure in debug builds.  (This could also have been
	  causing some performance problems, but I have not measurements.)

Mon Nov 01 10:34:30 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/soaktest/soaktest_queries.cc: Fix compilation: call c_str()
	  on argument to atoi, now that util.h no longer defines a string
	  wrapper.

Sun Oct 31 10:51:12 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Don't delete this in TermGroup, etc
	  until after we have successfully constructed the Query object to
	  return to avoid a double free in the Query construction throws an
	  exception.  Fixes ticket#515.

Fri Oct 29 12:46:15 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Fix comment typo in previous commit.

Fri Oct 29 12:32:47 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Empty query now return MSet with firstitem
	  set correctly.
	* tests/api_backend.cc: Extend msetfirst2 to be a regression test for
	  this issue too.

Fri Oct 29 12:13:51 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc: If first is larger than get_doccount() then clamp
	  it to avid pointlessly trying to allocate far too much memory.
	* tests/api_backend.cc: Regression test msetfirst2.

Thu Oct 21 09:38:44 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/Makefile.am: Add zlib-vg.c to distribution tarballs.

Wed Oct 20 11:38:13 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: Add '-z' option to count zero-length documents.

Mon Oct 18 10:35:46 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add --quiet/-q option to suppress progress
	  output.

Thu Oct 14 03:51:02 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Fix typo in previous change.

Thu Oct 14 01:16:31 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Expand tested cases to (hopefully) cover all
	  conditional combinations in unicode/utf8itor.cc.

Mon Oct 11 11:46:30 GMT 2010  Olly Betts <olly@survex.com>

	* Makefile.am: Remove xapian-config on "make distclean" rather than
	  "make clean", since configure builds it.  Never remove man pages
	  under "make clean".

Mon Oct 11 11:41:32 GMT 2010  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Fix typo - CLEAN_FILES should be CLEANFILES.
	  This means that where zlib-vg.so is used, it now gets cleaned up.

Sun Oct 10 11:00:31 GMT 2010  Olly Betts <olly@survex.com>

	* Makefile.am: Fix so coverage-reconfigure-maintainer-mode adds
	  --enable-maintainer-mode rather than coverage-reconfigure!

Sun Oct 10 10:45:38 GMT 2010  Olly Betts <olly@survex.com>

	* Makefile.am: Factor out COVERAGE_CONFIGURE to make future changes
	  easier.

Sun Oct 10 09:59:01 GMT 2010  Olly Betts <olly@survex.com>

	* Makefile.am: Add coverage-reconfigure-maintainer-mode target which
	  is just like coverage-reconfigure except it also passes
	  --enable-maintainer-mode.

Sun Oct 10 07:29:23 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Check Stem("none") too.  Check
	  Stem("").get_description().  No need to check a bogus language name
	  here as stemlangs2 now does that.

Sun Oct 10 07:22:41 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_stem.cc: Test an invalid languages name with each possible
	  byte value at the start to improve coverage of the switch in
	  api/stem.cc.

Sun Oct 10 06:14:42 GMT 2010  Olly Betts <olly@survex.com>

	* unicode/utf8itor.cc: Correct comments and use bad_cont() in another
	  place (no change to code once inlining is taken into account).

Sun Oct 10 06:11:05 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Improve test coverage for
	  Utf8Iterator::calculate_sequence_length().

Sun Oct 10 00:33:49 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Tweak testcase utf8iterator2 to add coverage
	  for Utf8Iterator(const char *).

Fri Oct 08 13:10:08 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/selectpostlist.cc,matcher/selectpostlist.h: Implement
	  SelectPostList::check() so that check() on OP_NEAR and OP_PHRASE
	  subqueries won't end up checking potentially huge numbers of
	  documents.

Fri Oct 08 12:29:50 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add testcase phrase3 to provide coverage for
	  SelectPostList::skip_to().

Fri Oct 08 10:36:18 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/orpostlist.cc,matcher/orpostlist.h: Fix performance
	  regression in some cases caused by the introduction of
	  OrPostList::check().

Thu Oct 07 03:53:11 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Clear tout before each iteration in scaleweight1.

Wed Oct 06 14:30:34 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.0.22 and ChangeLog.

Wed Oct 06 12:39:36 GMT 2010  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add two more testcases for having a phrase
	  generator between prefix and term.

Wed Oct 06 12:37:32 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h,include/xapian/postingsource.h: Remove
	  "experimental" marker from PostingSource and ValueCountMatchSpy.

Wed Oct 06 12:31:01 GMT 2010  Olly Betts <olly@survex.com>

	* docs/index.html: Add links to replication and facets documents, and
	  fix typo in serialistion document link.

Wed Oct 06 12:12:51 GMT 2010  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/categorisation.rst,docs/facets.rst: Change the
	  categorisation document to talk about facets, since that's the
	  terminology that seems to be most widely used these days, and
	  "categorisation" can also mean automatically assigning categories to
	  documents.  Fix up references to features which were removed or
	  changed during development.

Wed Oct 06 12:11:21 GMT 2010  Olly Betts <olly@survex.com>

	* docs/internals.html: Add link to replication protocol.

Wed Oct 06 08:36:50 GMT 2010  Olly Betts <olly@survex.com>

	* examples/simplesearch.cc: Fix cut and paste error in usage message.

Wed Oct 06 00:12:40 GMT 2010  Olly Betts <olly@survex.com>

	* api/emptypostlist.cc,matcher/queryoptimiser.cc: In the query
	  optimiser, use value range bounds to check for value ranges which
	  must be empty.
	* tests/api_opvalue.cc: Add testcase valuerange5 to check this
	  optimisation actually fires.

Tue Oct 05 03:43:02 GMT 2010  Olly Betts <olly@survex.com>

	* examples/simplesearch.cc: Fix cut-and-paste error - --version now
	  reports simplesearch not simpleexpand.

Tue Oct 05 03:41:48 GMT 2010  Olly Betts <olly@survex.com>

	* docs/categorisation.rst: Update to use the current ValueCountMatchSpy
	  API.

Fri Oct 01 09:53:50 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Simplify defaulting enable_documentation a little.

Fri Oct 01 09:29:03 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Default enable_sse to yes to fix build on x86.

Fri Oct 01 09:10:34 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Fix typo in SSE handling code which stopped it
	  defaulting as intended.

Fri Oct 01 02:00:49 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Fri Oct 01 01:54:41 GMT 2010  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/brass/brass_compact.cc,
	  backends/byte_length_strings.h,backends/chert/chert_compact.cc,
	  backends/flint/flint_compact.cc: Factor out 3 copies of
	  ByteLengthPrefixedStringItor and ByteLengthPrefixedStringItorGt into
	  their own file.

Fri Oct 01 01:28:57 GMT 2010  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/brass/brass_compact.cc,
	  backends/brass/brass_spelling.cc,backends/chert/chert_compact.cc,
	  backends/chert/chert_spelling.cc,backends/flint/flint_compact.cc,
	  backends/flint/flint_spelling.cc,
	  backends/prefix_compressed_strings.h: Factor out 6 copies of
	  PrefixCompressedStringItor and PrefixCompressedStringWriter and 3
	  copies of PrefixCompressedStringItorGt into their own file.

Thu Sep 30 15:28:49 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Sep 30 15:26:52 GMT 2010  Olly Betts <olly@survex.com>

	* api/compactor.cc: Need utils.h for stat with a std::string argument.

Thu Sep 30 15:23:50 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Remove unwanted check left over from cut and
	  pasting code from a previous testcase.

Thu Sep 30 15:21:02 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Convert compaction tests to use the new API.

Thu Sep 30 14:54:27 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_compact.cc,backends/chert/chert_compact.cc,
	  backends/flint/flint_compact.cc: Correct filenames in @file doxygen
	  comments.

Thu Sep 30 14:46:02 GMT 2010  Olly Betts <olly@survex.com>

	* api/compactor.cc: Use the ChertVersion, etc classes to make sure that
	  the new database has a new UUID rather than creating a "donor"
	  database and then stealing its version/uuid file.

Thu Sep 30 14:33:46 GMT 2010  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/compactor.cc,backends/brass/Makefile.mk,
	  backends/brass/brass_compact.cc,backends/brass/brass_compact.h,
	  backends/chert/Makefile.mk,backends/chert/chert_compact.cc,
	  backends/chert/chert_compact.h,backends/flint/Makefile.mk,
	  backends/flint/flint_compact.cc,backends/flint/flint_compact.h,bin/,
	  include/Makefile.mk,include/xapian.h,include/xapian/compactor.h:
	  Convert compaction code into a Xapian::Compactor class, and make
	  xapian-compact a simple wrapper around this new class.  (ticket#175)

Thu Sep 30 06:16:11 GMT 2010  Olly Betts <olly@survex.com>

	* bin/: Eliminate uses of <iostream> in bin/xapian-compact-*.cc.

Thu Sep 30 05:44:06 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc,
	  bin/xapian-compact-flint.cc: Fix indentation of table data
	  arrays.

Thu Sep 30 05:32:44 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Only
	  skip producing an output table when there are only some inputs
	  for the termlist - for spellings and synonyms, we want to produce
	  an output in this case.
	* tests/api_compact.cc: Add regression test compactmissingtables1.

Wed Sep 29 11:13:18 GMT 2010  Olly Betts <olly@survex.com>

	* common/document.h: Initialise docid to 0 when creating a document
	  from scratch, as documented.
	* tests/api_none.cc: Add regression test document2.
	* include/xapian/document.h: Document that return value is unreliable
	  in this case prior to the next 1.0 and 1.2 releases.

Wed Sep 29 07:06:10 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: FreeBSD and OpenBSD don't need explicit dependency
	  libraries, so set link_all_deplibs_CXX=no there.

Wed Sep 29 07:04:20 GMT 2010  Olly Betts <olly@survex.com>

	* xapian-config.in: Just check @link_all_deplibs_CXX@ which we adjust
	  in configure rather than duplicating configure's list of platforms
	  where explicit dependencies aren't required.

Mon Sep 27 04:28:46 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Convert error messages to stdout/stderr to
	  exceptions, in preparation for turning this into an API class.

Mon Sep 27 03:50:54 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add support for compacting to a stub database,
	  which can be one of the inputs (for atomic update).
	* tests/api_compact.cc: Add testcases compactstub3 and compactstub4 as
	  feature tests for this.

Mon Sep 27 03:50:00 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Suppress output from xapian-compact in
	  compactstub2 (which I'd disabled for debugging).

Sun Sep 26 13:59:20 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Extend to work on stub database files too.
	* tests/api_compact.cc: Add feature test compactstub2.

Sun Sep 26 13:28:45 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Inputs can now be stub database directories,
	  in which case the databases in the stub are used as inputs.
	* tests/api_compact.cc: Add feature test compactstub1.

Sun Sep 26 11:11:49 GMT 2010  Olly Betts <olly@survex.com>

	* xapian-config.in: Add --static option which makes other options
	  report values for static linking.

Tue Sep 21 10:43:17 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow phrase
	  generators between a probabilistic prefix and the term itself.

Thu Sep 09 11:18:47 GMT 2010  Olly Betts <olly@survex.com>

	* INSTALL: Raise recommended GCC version from 3.3 to 4.1, since that's
	  the oldest we regularly test with.

Thu Sep 09 11:14:03 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Debian etch was discontinued 6 months ago, so it's no longer
	  useful to document packages for developing Xapian on it.

Thu Sep 09 03:15:00 GMT 2010  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Actually write down our guidelines for
	  supporting other software.

Thu Sep 09 00:20:16 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication.rst: Adjust text to reflect conclusions about the
	  issues in ticket#434.

Thu Sep 09 00:10:03 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication.rst: Don't suggest using a symlink to switch between
	  databases - a stub database is much better.

Thu Sep 09 00:07:02 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication.rst: Assume xapian tools are installed on PATH not
	  in the current directory for example commands.

Thu Sep 09 00:05:22 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication.rst: Fix a typo.

Mon Sep 06 07:10:02 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Add support for --enable-sse=sse and --enable-sse=sse2
	  to allow control of which SSE instructions to use.

Fri Sep 03 13:08:53 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-replicate.cc: If a fullcopy was attempted, but was not
	  put live, display an explanatory message (if verbose is true).

Fri Sep 03 05:54:09 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_modifiedpostlist.h,
	  backends/flint/flint_modifiedpostlist.h,tests/: Fixes required to
	  build on OpenBSD 4.5 with GCC 3.3.5.

Tue Aug 31 14:37:44 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Document cases where FLAG_WILDCARD and
	  FLAG_PARTIAL aren't currently supported.

Mon Aug 30 06:27:46 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Actaully make autoconf 2.64 a hard minimum requirement
	  (as HACKING already documented).
	* HACKING,NEWS,configure.ac: autoconf 2.67 is now used to bootstrap.

Mon Aug 30 06:26:03 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Aug 30 06:04:13 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Enable use of SSE maths on x86 by default with Sun's
	  compiler.

Sat Aug 28 16:04:45 GMT 2010  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/queryparser.h,
	  tests/harness/backendmanager.h: None of the workarounds we have
	  which are conditional on __SUNPRO_CC are needed with Sun C++
	  version 5.8, so only enable them for older versions (which will
	  mean we can drop these workarounds with confidence once older
	  versions are dropped by Sun/Oracle, or once we can find out that
	  they have been - currently all I've managed to discover is that
	  version 5.0 reached "end of service life" in 6/2006).

Sat Aug 28 15:33:14 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac,tests/api_replicate.cc: Solaris < 10 doesn't have
	  setenv() so we have to use putenv() there.  And the value we set
	  XAPIAN_MAX_CHANGESETS to is always constant currently, so set it
	  using constant strings generated by a macro.

Sat Aug 28 12:35:25 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Beef up the test for whether -lm is required and add
	  a special case to force it to be for Sun's C++ compiler - there's
	  some interaction with libtool and/or shared objects which means
	  that the configure test doesn't think -lm is needed here when it
	  is.

Sat Aug 28 10:59:11 GMT 2010  Olly Betts <olly@survex.com>

	* api/matchspy.cc,common/const_database_wrapper.cc,net/tcpclient.cc,
	  tests/api_replicate.cc,tests/harness/backendmanager_remotetcp.cc,
	  tests/harness/testsuite.cc,tests/perftest/runprocess.cc,
	  unicode/utf8itor.cc: Fix to compile with Sun C++.

Sat Aug 28 10:30:08 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,PLATFORMS: Move PLATFORMS information to the wiki and replace
	  with a pointer.

Sat Aug 28 03:15:47 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Need to avoid excess precision on m68k
	  when targeting models 68010, 68020, 68030 as well as 68000.

Tue Aug 24 05:54:27 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Update for 1.2.3.

Tue Aug 24 05:52:47 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Aug 16 16:46:19 GMT 2010  Olly Betts <olly@survex.com>

	* common/closefrom.cc: Use /dev/fd on Mac OS X.

Mon Aug 16 16:18:26 GMT 2010  Olly Betts <olly@survex.com>

	* common/closefrom.cc: Need safeerrno.h and safeunistd.h on non-Linux
	  platforms too.

Mon Aug 16 15:47:48 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc,common/Makefile.mk,common/closefrom.cc,
	  common/closefrom.h,configure.ac,net/progclient.cc: Use closefrom()
	  if available, otherwise provide our own implementation (optimised
	  to some extent for many platforms).

Sun Aug 15 12:43:04 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Update.

Sun Aug 15 12:11:26 GMT 2010  Olly Betts <olly@survex.com>

	* xapian-core.spec.in: Update BuildRequires to specify libuuid-devel
	  instead of e2fsprogs-devel.

Sun Aug 15 11:30:05 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,common/safeuuid.h,common/win32_uuid.cc,
	  common/win32_uuid.h,configure.ac: libuuid moved from e2fsprogs to
	  util-linux-ng about a year ago, so update documentation, comments,
	  and configure error messages to reflect this.  Issue reported by
	  David Jeske on xapian-devel list.

Sun Aug 15 07:58:51 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Under __WIN32__, we need
	  <io.h> for _open_osfhandle() (ticket#495).

Sun Aug 15 07:10:25 GMT 2010  Olly Betts <olly@survex.com>

	* common/realtime.h: MSVC doesn't cope with a prototype at function
	  scope with a global namespace qualification (ticket#495).

Wed Aug 04 10:44:08 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc,backends/multi/multi_alltermslist.cc,
	  bin/xapian-chert-update.cc,queryparser/termgenerator.cc,
	  queryparser/termgenerator_internal.cc: Fix more incorrect @file
	  directives.

Wed Aug 04 09:19:10 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/localsubmatch.h,queryparser/termgenerator_internal.h: Fix
	  incorrect @file doxygen directives.

Tue Aug 03 14:42:56 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/fdtracker.h: Fix filename in @file.

Tue Aug 03 14:32:45 GMT 2010  Olly Betts <olly@survex.com>

	* common/contiguousalldocspostlist.h,common/unaligned.h: Fix include
	  guards to match header filename (cosmetic issues only).

Mon Aug 02 12:38:59 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/brass/brass_values.cc,
	  backends/chert/chert_table.cc,backends/chert/chert_values.cc,
	  backends/flint/flint_alldocspostlist.cc,
	  backends/remote/remote-document.cc,matcher/multimatch.cc,
	  matcher/remotesubmatch.cc,net/progclient.cc: Use new Literal()
	  feature in debug logging of function calls.

Mon Aug 02 12:08:42 GMT 2010  Olly Betts <olly@survex.com>

	* common/pretty.h: Add Literal() class to allow bypassing the pretty
	  printer for interspersing literal strings.

Sun Aug 01 10:19:38 GMT 2010  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Database::get_spelling_suggestion() will now
	  suggest a correction even if the passed word is in the dictionary,
	  provided the correction has at least the same frequency.  Partly
	  addresses #225.
	* queryparser/queryparser.lemony: Check spelling even if term is in
	  the database.
	* docs/spelling.rst: Update to reflect these changes.
	* tests/api_spelling.cc,tests/queryparsertest.cc: Add test coverage for
	  these changes.

Tue Jul 27 15:24:56 GMT 2010  Tim Brody <tdb2@ecs.soton.ac.uk>

	* xapian-core.spec.in: Add xapian-metadata and cmake related files to
	  RPM packaging.

Thu Jul 22 07:13:12 GMT 2010  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Wrap line.

Thu Jul 22 07:11:23 GMT 2010  Olly Betts <olly@survex.com>

	* common/remoteserver.h,net/remoteserver.cc: Pass 1.0 for the end time
	  when relaying a NetworkTimeoutError, not RealTime::now() - any time
	  in the past will do, we just want the operation to time out if it
	  would block.  Removed related FIXME which is already resolved.

Wed Jul 21 18:00:08 GMT 2010  Olly Betts <olly@survex.com>

	* unicode/tclUniData.cc: Fix comment - this is Unicode 5.2 data, not
	  5.1.

Thu Jul 15 13:45:05 GMT 2010  Olly Betts <olly@survex.com>

	* common/realtime.h:Explicitly specify global namespace for
	  xapian_sleep_milliseconds prototype as MSVC seems to need this.

Thu Jul 15 13:03:13 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of groups of terms which
	  are all stopwords - in situations where this causes a problem we now
	  disable stopword checks for such groups.  (ticket#245)
	* tests/queryparsertest.cc: Add regression testcases.

Thu Jul 15 08:13:03 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc: Fix reversed memcmp() test.

Sun Jul 11 14:59:06 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc: Factor out UNCW path check into a helper
	  function.

Sun Jul 11 14:56:27 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc,tests/Makefile.am,tests/unittest.cc: Move the
	  tests of resolve_relative_path() into a new "unittest" program so
	  they actually are run by "make check".  (ticket#243)

Sun Jul 11 13:14:24 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc: Support the \\?\ path syntax.

Sat Jul 10 15:49:08 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc,common/fileutils.h: Fix resolve_relative_path()
	  to handle UNC paths.

Sat Jul 10 15:27:48 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc: -D__WIN32__ on the g++ command line works for
	  testing on Linux, so no need to have that in the code.  Add a couple
	  of UNC path test cases which pass, and a commented-out one which
	  fails.

Sat Jul 10 14:58:35 GMT 2010  Olly Betts <olly@survex.com>

	* common/fileutils.cc,common/fileutils.h: We use these routines to
	  resolve a relative path (in a stub database file) in terms of a
	  second path (the filename of that file), so just instead a
	  routine to do exactly that, which is easier to code and more
	  efficient.  The new implementation fixes several bugs with
	  Microsoft Windows paths.  Some testcases (currently not used)
	  are now present in fileutils.cc (ticket#243).
	* backends/dbfactory.cc: Use the new API.

Fri Jul 09 07:42:31 GMT 2010  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: I missed a use of atoi() on std::string
	  but just call .cstr() on the string instead of dragging in utils.h.

Fri Jul 09 04:39:40 GMT 2010  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Remove unused std::string to const
	  char * wrappers for standard functions, and remove the only use of
	  rmdir()'s wrapper.

Thu Jul 08 15:18:04 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Xapian::ESet is a reference counted handle, so it
	  is efficient to return by value - remove FIXME which suggests we
	  should avoid doing so.

Thu Jul 08 15:17:20 GMT 2010  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Update FIXMEs - it's too late to fix stuff
	  in 1.1.x!

Thu Jul 08 15:13:47 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Remove FIXMEs about debug logging which have been
	  addressed by the fairly recent debug logging improvements.

Thu Jul 08 15:07:07 GMT 2010  Olly Betts <olly@survex.com>

	* api/keymaker.cc: Fix comment typos.

Thu Jul 08 14:50:59 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/brass/,backends/chert/,
	  backends/dbfactory_remote.cc,backends/flint/,
	  backends/remote/remote-database.cc,bin/xapian-progsrv.cc,
	  bin/xapian-tcpsrv.cc,common/,net/,tests/perftest/perftest.cc,
	  tests/perftest/perftest.h: Replace use of OmTime with a double
	  holding a count in seconds since the epoch.

Thu Jul 08 12:35:40 GMT 2010  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Retry select() if it fails with EINTR while waiting
	  for connect(), and discriminate cases with same failure message to
	  aid debugging.

Thu Jul 08 05:09:18 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Remove comment left over from the
	  "boolean exclusive" work.

Wed Jul 07 13:18:17 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/types.h: Fix documentation comment for Xapian::timeout
	  type - it holds a time interval in milliseconds not microseconds
	  (the API docs for the methods which use it explicitly document this
	  correctly).

Tue Jul 06 15:17:09 GMT 2010  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix formatting.

Tue Jul 06 14:13:03 GMT 2010  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: Use str(OmTime::as_double()) rather than
	  trying to assemble a string of a floating point number from strings
	  of the sec and usec values.

Tue Jul 06 14:03:30 GMT 2010  Olly Betts <olly@survex.com>

	* common/debuglog.h,common/remote-database.h: Remove unused '#include
	  "omtime.h"'.
	* backends/remote/remote-database.cc: Add explicit '#include
	  "omtime.h"'.

Mon Jul 05 11:40:42 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Restore iterator to start of
	  where we tried to parse a range if we decide it might be a filter
	  term instead.  Clear the error if we decide it is a filter.
	* tests/queryparsertest.cc: Fix expected test output from
	  qp_value_range4 testcase.

Mon Jul 05 06:46:16 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix to be smarter about handling a
	  boolean filter term containing ".." in the presence of
	  valuerangeprocessors.
	* tests/queryparsertest.cc: Add regression test qp_value_range4.

Mon Jul 05 04:10:08 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser.lt: Clean up
	  how value ranges are handled to do the checking of the range in the
	  lexer, which then passes a single token (RANGE) to the parser
	  (instead of a RANGE_START token which is always followed by a
	  RANGE_END token).

Fri Jul 02 12:32:37 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Don't pass -mtune=generic unless GCC >= 4.2 is in use
	  (ticket#492).

Wed Jun 30 10:54:15 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_postlist.cc: Remove unnecessary NULL check.
	  Identified by Coverity's Scan.
	* backends/chert/chert_postlist.cc: Same change for chert.

Tue Jun 29 12:17:16 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_chunkedlisttable.h,
	  backends/chert/chert_chunkedlisttable.h: Remove unused files.

Sun Jun 27 04:31:06 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update for 1.2.2.

Sun Jun 27 04:22:28 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: Show the database's UUID.

Sun Jun 27 03:30:16 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS.SKELETON: Add "tools" section.

Sun Jun 27 03:03:57 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Update for 1.2.2.

Sat Jun 26 15:55:45 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Create from ChangeLog.

Sat Jun 26 15:36:37 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS.SKELETON: Add template for NEWS entry.

Sat Jun 26 11:09:03 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc: Sync the table right after the base
	  file, which allows more time for the table changes to be written,
	  and doing the sync together may be more efficient with some Linux
	  kernel versions.
	* backends/chert/chert_table.cc: Same change for chert.

Sat Jun 26 06:46:39 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Reorder the release checklist.

Thu Jun 24 08:03:18 GMT 2010  Olly Betts <olly@survex.com>

	  bin/xapian-check.cc: Don't try to check doclengths are consistent
	  between the postlist and termlist tables if it would use more than
	  1GB of memory, and handle std::bad_alloc or std::length_error.  This
	  issue affects sup users, as sup allocates docids such that they are
	  sparse and large docids can easily occur.

Wed Jun 23 15:38:25 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Revert Xapian::Weight's copy ctor back
	  to protected as GCC 4.1 fails to compile subclasses when it is
	  private (this appears to be a compiler bug).

Wed Jun 23 07:31:19 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Thank people who reported bugs fixed in 1.2.1.

Wed Jun 23 06:52:54 GMT 2010  Olly Betts <olly@survex.com>

	* xapian-core.spec.in: Update for 1.2.x - add e2fsprogs-devel to
	  BuildRequires and add new files.

Wed Jun 23 05:00:34 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Wording tweak.

Wed Jun 23 04:11:30 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Need <cstdio> for sprintf().  Fixes
	  compilation error for some platforms and/or compilers (my guess would
	  be GCC 4.5 - it builds OK with GCC 4.4).  (ticket#489)

Tue Jun 22 14:45:37 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.2.1.

Mon Jun 21 16:00:22 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.21 and update from ChangeLog.

Mon Jun 21 15:15:50 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Unix putenv() requires the buffer passed to
	  remain valid, as it stores it directly in the environment.  It's
	  unclear from MSDN if _putenv() does the same, but _putenv_s() must
	  allocate a copy since it needs to have an '=' in, so use that
	  instead.  It also has an interface much like setenv(), so the code
	  looks more similar.

Mon Jun 21 06:07:42 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Add missing const.

Mon Jun 21 05:21:32 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Update to match header ABI fix.

Mon Jun 21 03:52:41 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: QueryParser::add_boolean_prefix() now
	  uses two overloaded forms instead of a default parameter so that we
	  don't break the ABI.

Fri Jun 18 16:56:59 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Add 1.0.21 bug reporters.

Fri Jun 18 05:52:00 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Add new optional parameter to QueryParser::add_boolean_prefix() to
	  allow the user to indicate a prefix isn't "exclusive" and that
	  OP_AND should be used to combine multiple instances.  Fixes
	  ticket#402.  This change should also improve efficiency as it
	  avoids copying the lists of prefixes and compares them more
	  efficiently.

Fri Jun 18 02:51:11 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix doccomment typo.

Thu Jun 17 14:04:35 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Xapian::Weight's copy ctor is now
	  private rather than protected.  This is an API and ABI compatible
	  change since there's no definition so a subclass which tried to
	  access it before would fail to link.

Thu Jun 17 13:00:47 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Missing changes from previous commit.

Thu Jun 17 11:37:30 GMT 2010  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc: Add support for open-ended ranges
	  (ticket#480).
	* docs/queryparser.html,docs/valueranges.rst: Document.
	* tests/queryparsertest.cc: Add feature tests.

Thu Jun 17 06:15:24 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Switch out of IN_GROUP mode when we
	  emit a WILDCARD.  Fixeds bug#484.
	* tests/queryparsertest.cc: Add regression testcase to wildcard1.

Thu Jun 17 02:42:16 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Rename failedadd1 to failedreplace1 as it's the
	  replace which fails really.  Add failedreplace2 which adds explicit
	  coverage for the case of a failed replace when the database isn't
	  empty to start with.

Tue Jun 15 12:45:36 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Note in the description of
	  set_database() what the database is used for.

Tue Jun 15 12:26:12 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix formatting of bullet list.

Mon Jun 14 17:02:10 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc,
	  backends/flint/flint_table.cc: cancel() now marks the Btree as
	  unmodified.
	* tests/api_backend.cc: Add regression test failedadd1.

Sun Jun 13 16:07:49 GMT 2010  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/safeuuid.h,configure.ac: Fix mingw build to
	  use __WIN32__ UUID API.

Sun Jun 13 12:25:24 GMT 2010  Olly Betts <olly@survex.com>

	* tests/perftest/freemem.cc: Fix whitespace to match Omega's version.

Sun Jun 13 11:52:24 GMT 2010  Olly Betts <olly@survex.com>

	* tests/perftest/freemem.cc: Merge in changes from omega's version.
	  Clean up whitespace issues.  Put the __WIN32__ case last, as we
	  tend to elsewhere (since most people reading the code probably
	  want to see the other version).

Sun Jun 13 11:32:30 GMT 2010  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: "MSWin32" isn't the OS name.  Also,
	  prefer += to build up a string.

Sat Jun 12 09:31:28 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Note that 1.0.x returned 4% for the top hit
	  in topercent5, so checking it gets at least 50% is a regression test
	  for that issue.

Fri Jun 11 15:38:26 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: -march=pentium4 doesn't seem to give a measurable
	  speed-up or size reduction (from Richard's tests) and it carries a
	  small risk of introducing instructions which don't work on some
	  obscure CPU which implements SSE2, so drop it.

Fri Jun 11 15:25:16 GMT 2010  Olly Betts <olly@survex.com>

	* weight/bm25weight.cc: Stop forcing the wdf_max value to be at least
	  one in BM25Weight::get_maxpart() - this is no longer needed now we
	  calculate percentages based on the number of matching subqueries, and
	  it is more natural for a non-existent term to get zero weight (ditto
	  for a term which always has wdf = 0.
	* tests/api_anydb.cc: Change qterminfo1 to check that a non-existent
	  term gets zero weight (previously we checked that it got a non-zero
	  weight, but really we want to ensure that it contributes to
	  percentage calculations, which new test topercent5 now does).

Fri Jun 11 15:19:29 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Add topercent5 testcase which checks that
	  an OR search including an non-existent term doesn't get 100%, and
	  that the non-existent term doesn't score more than terms which do
	  exist.

Fri Jun 11 14:15:07 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: When using SSE FP instructions on x86 we
	  can disable the use of volatile since there are no excess precision
	  issues to work around.

Fri Jun 11 08:21:04 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Put SSE flags in AM_CXXFLAGS not CXXFLAGS.

Fri Jun 11 07:08:01 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Default to building with SSE FP instructions for x86.
	  This avoids issues with excess precision and it a bit faster too.
	  Should fix ticket#487.

Thu Jun 10 15:15:33 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Jun 10 15:00:12 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Capitalise "Fedora".

Thu Jun 10 11:27:18 GMT 2010  Olly Betts <olly@survex.com>

	* INSTALL: Reword UUID section - list platforms where we make use of
	  built-in APIs first, give the URL for e2fsprogs home page, and
	  give the package name for Debian and Ubuntu.

Thu Jun 10 01:08:21 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: libtool 2.2.10 used for snapshots and releases now.

Thu Jun 10 00:21:49 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version_h.cc,
	  include/xapian/visibility.h: We do need to have the visibility
	  annotations on for code compiling against the library, so substitute
	  the probed value of XAPIAN_ENABLE_VISIBILITY into <xapian/version.h>
	  so it is available.

Wed Jun 09 11:31:14 GMT 2010  Olly Betts <olly@survex.com>

	* INSTALL,configure.ac,include/xapian/visibility.h: Control use of
	  GCC's visibility support with defined(XAPIAN_ENABLE_VISIBILITY)
	  instead of !defined(XAPIAN_DISABLE_VISIBILITY), so it is only used
	  when building the library, not when building code which uses it.
	  Add check to configure that GCC actually supports visibility for
	  the platform being built for, which fixes compiler warnings with
	  platforms which don't (such as Mac OS X and mingw).

Wed Jun 09 11:17:58 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: "private", etc as "access specifiers", not "visibility
	  specifiers".

Wed Jun 09 11:04:55 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Note flex and bison needed to build doxygen.

Wed Jun 09 05:25:10 GMT 2010  Olly Betts <olly@survex.com>

	* common/win32_uuid.cc: Fix signed/unsigned comparison warning on
	  mingw.

Tue Jun 08 16:56:26 GMT 2010  Olly Betts <olly@survex.com>

	* common/safewinsock2.h: Reword #error to avoid single quote which
	  gives compilation warning with some GCC 4.2.1 on mingw.

Tue Jun 08 14:32:28 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_check.h,backends/chert/chert_check.h,
	  backends/flint/flint_check.h: Remove mutable from std::ostream &
	  member - mutable doesn't make sense for a reference.

Tue Jun 08 13:03:56 GMT 2010  Olly Betts <olly@survex.com>

	* common/,matcher/,weight/weightinternal.cc: Replace the still rather
	  contorted mechanism for accumulating rel termfreqs for local
	  databases with a simpler mechanism which is more efficient in both
	  space and time.

Mon Jun 07 16:31:24 GMT 2010  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/matchspy.cc,api/termlist.cc,backends/brass/,
	  backends/chert/,backends/flint/,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
	  backends/remote/net_termlist.cc,backends/remote/net_termlist.h,
	  common/ortermlist.h,common/termlist.h,expand/ortermlist.cc: Remove
	  default OrTermList::skip_to() implementation and implement skip_to()
	  in each class instead, as this allows a slightly more efficient
	  implementation, and also avoids problems with calling skip_to() as
	  the first operation for the many subclasses which have a "started"
	  flag, which OrTermList::skip_to() won't set.

Mon Jun 07 06:08:53 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Rename TermList class to Terms to
	  avoid confusion with the TermList typedef used elsewhere.  Add
	  documentation comments for Terms and TermGroup classes.

Mon Jun 07 02:18:05 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/: Switch to using io_utils instead of brass_io.

Mon Jun 07 02:16:30 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Add Arvid Ephraim Picciani for help fixing bootstrap for
	  BusyBox sha1sum.

Mon Jun 07 01:16:57 GMT 2010  Olly Betts <olly@survex.com>

	* common/io_utils.cc: Whitespace tweak.

Mon Jun 07 00:58:26 GMT 2010  Olly Betts <olly@survex.com>

	* common/io_utils.h: Fix header guard macro name to follow convention.

Sun Jun 06 15:07:55 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Upgrade to using libtool 2.2.8.

Sun Jun 06 04:34:13 GMT 2010  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,configure.ac: Fix build failures with some
	  combinations of backends disabled (partially addresses ticket#361).

Sat Jun 05 16:30:57 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/remotesubmatch.cc: Add missing parameter of
	  RemoteSubMatch::start_match() to debug logging.

Sat Jun 05 15:03:56 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.h: Make QueryOptimiser::optimise_query()'s
	  argument const pointer, since we only pass it to do_subquery() which
	  takes a const pointer.

Fri Jun 04 16:05:01 GMT 2010  Olly Betts <olly@survex.com>

	* common/rset.h: Just keep a reference to the set<docid> from the
	  Xapian::RSet object rather than copying it (since we now only
	  create the RSetI object transiently, so the Xapian::RSet object
	  is definitely valid for its whole lifetime).

Fri Jun 04 15:57:50 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc,matcher/localmatch.cc,matcher/localmatch.h: Keep
	  a Xapian::RSet handle in the LocalSubMatch object and only create
	  an RSetI object briefly in LocalSubMatch::prepare_match().

Fri Jun 04 15:36:45 GMT 2010  Olly Betts <olly@survex.com>

	* common/pretty.h: RSetI objects are no longer passed as parameters
	  or return values, so we no longer need to handle them.

Fri Jun 04 15:28:21 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/esetinternal.h,common/omenquireinternal.h,
	  common/rset.h,expand/esetinternal.cc,matcher/rset.cc: RSetI is used
	  when collating statistics prior to performing the match, and when
	  generating an ESet.  The second use is entirely unnecessary and just
	  ends up with us copying the std::set<Xapian::docid> from inside the
	  Xapian::RSet object, so eliminate it and just use the Xapian::RSet
	  object directly.  This allows RSetI to be simplified somewhat too.

Fri Jun 04 14:22:38 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Make arrays static const.

Fri Jun 04 13:25:20 GMT 2010  Olly Betts <olly@survex.com>

	* backends/Makefile.mk: Note need to update include/xapian/version_h.cc
	  when adding a new backend.
	* AUTHORS: Thanks to Conrad Hoffmann for pointing this omission out.

Thu Jun 03 15:01:44 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/soaktest/soaktest_queries.cc: Add missing include of str.h

Thu Jun 03 12:09:35 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/Makefile.am: Fix building of zlib-vg.so in VPATH builds.

Thu Jun 03 11:49:31 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/orpostlist.cc,tests/api_backend.cc: Fix several bugs in
	  OrPostList::check() (introduced since 1.2.0).  Fixes ticket #485.
	  Specifically, we have to check a sub-postlist even if head=did,
	  because we need to know if that sub-postlist is valid.  Also, if
	  a sub-postlist is not valid, set its head to did+1, since we know
	  that we're no longer interested in matches before did, and this
	  allows the OrPostList to assume that the minimum docid of its
	  children is the current docid.

Thu Jun 03 07:15:24 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/: Implement MultiXorPostList which returns correct weights
	  for XOR of more than 2 subqueries, and drop XorPostList completely.
	  (ticket#475)
	* tests/api_anydb.cc: Add regression test xor2.

Thu Jun 03 04:38:56 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Tweak loop end test to be a normal while.

Thu Jun 03 01:22:20 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_stem.cc: Note stem2's feature was backported to 1.0.21.

Tue Jun 01 13:49:44 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/brass/brass_termlist.cc,
	  backends/chert/chert_database.cc,backends/chert/chert_termlist.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_document.cc,
	  backends/flint/flint_termlist.cc,matcher/: Fix LOGCALL_VOID uses
	  for ctors and dtors to be LOGCALL_CTOR and LOGCALL_DTOR respectively.

Tue Jun 01 13:33:07 GMT 2010  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Use LOGCALL_VOID instead of LOGCALL with a void
	  return type.

Tue Jun 01 13:08:02 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: The debug logging now copes with being passed
	  RSet* so remove special casing with ?:.

Tue Jun 01 10:17:27 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Drop support for --enable-log=profile -
	  dedicated profiling tools are likely to return more useful results.
	* common/debuglog.cc,common/debuglog.h: Rename xapian_debuglogger__
	  global to xapian_debuglogger_ to avoid reserved __ in the name.
	* common/omdebug.cc,common/omdebug.h: Remove in favour of debuglog.h.
	* common/pretty.h: New PrettyOStream<> template class for pretty
	  printing types in debug logs (and eventually the testsuite).
	* api/,backends/brass/,backends/chert/,
	  backends/dbfactory_remote.cc,backends/flint/,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_document.cc,
	  backends/inmemory/inmemory_positionlist.cc,
	  backends/multi/multi_postlist.cc,backends/multi/multi_termlist.cc,
	  common/,expand/esetinternal.cc,expand/expandweight.cc,
	  expand/ortermlist.cc,matcher/,net/progclient.cc,
	  net/remoteconnection.cc: Migrate all remaining uses of omdebug.h to
	  debuglog.h.  Write more parameters to the debug log.  Retire the
	  barely used APICALL category and use API instead (reflecting actual
	  current use).  Add new REPLICA category.  Fix names logged for ctors
	  and dtors which have "::" in the class name.

Sun May 30 13:45:12 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Remove bogus "Data::" from debug logging for two
	  methods.

Sun May 30 08:49:22 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/stem.h,languages/stem.cc: Xapian::Stem now recognises
	  "nb" and "nn" as codes for the Norwegian stemmer.
	* tests/api_stem.cc: Add feature test stem2 to check that these new
	  codes work.

Sat May 29 10:12:40 GMT 2010  Olly Betts <olly@survex.com>

	* common/debuglog.h: Add overload of operator| which writes ", " and
	  then a value to std::ostream.
	* api/omdatabase.cc,api/replication.cc,
	  backends/brass/brass_alldocspostlist.cc,
	  backends/brass/brass_metadata.cc,backends/brass/brass_table.cc,
	  backends/chert/,backends/dbfactory.cc,
	  backends/flint/flint_alldocspostlist.cc,expand/esetinternal.cc,
	  expand/expandweight.cc,matcher/,net/remoteconnection.cc,
	  weight/bm25weight.cc,weight/weight.cc: Use this in LOGCALL uses to
	  make them shorter and more readable.

Fri May 28 06:47:57 GMT 2010  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,api/omdatabase.cc,backends/brass/brass_table.cc,
	  backends/chert/chert_table.cc,backends/dbfactory.cc,
	  backends/flint/flint_alldocspostlist.cc: Put LOGCALL macro use all on
	  one line so we can more easily mechanise use and update.

Fri May 28 04:22:35 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc,api/valueiterator.cc,
	  backends/brass/brass_alltermslist.cc,
	  backends/chert/chert_alltermslist.cc,backends/dbfactory.cc,
	  backends/inmemory/inmemory_document.cc,
	  backends/remote/remote-document.cc,matcher/synonympostlist.cc,
	  net/remoteconnection.cc,weight/bm25weight.cc: Use NO_ARGS instead of
	  "" and LOGCALL_VOID instead of LOGCALL with void return type.

Fri May 28 04:12:35 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Add missing inclusions of
	  "debuglog.h".
	* backends/brass/brass_metadata.h,backends/brass/brass_postlist.h,
	  backends/brass/brass_synonym.h,backends/chert/chert_metadata.h,
	  backends/chert/chert_postlist.h,backends/chert/chert_synonym.h,
	  backends/dbfactory_remote.cc,backends/flint/flint_metadata.h,
	  backends/flint/flint_synonym.h,common/database.h,common/rset.h:
	  Remove unused inclusions of "omassert.h" and "omdebug.h".
	* common/rset.h: Remove unused inclusion of "weightinternal.h".
	* api/omdatabase.cc,api/registry.cc,api/replication.cc,backends/brass/,
	  backends/chert/,backends/dbfactory.cc,backends/flint/: Add missing
	  explicit inclusions of "debuglog.h". Fix LOGCALL markup of ctors and
	  dtors.  Use LOGCALL instead of DEBUGCALL.

Fri May 28 04:06:08 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_alldocspostlist.h: Add missing explicit
	  inclusions of "autoptr.h", "flint_database.h", and forward
	  declaration of class FlintCursor.

Fri May 28 03:52:40 GMT 2010  Olly Betts <olly@survex.com>

	* common/const_database_wrapper.h,common/databasereplicator.h,
	  common/gnu_getopt.h: Add "(C)" to copyright statements for
	  consistency with other files.

Fri May 28 03:45:26 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Include "debuglog.h" instead of
	  "omdebug.h".

Fri May 28 03:45:03 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Remove unused inclusion of "omdebug.h".

Fri May 28 03:40:50 GMT 2010  Olly Betts <olly@survex.com>

	* expand/esetinternal.cc,matcher/localmatch.cc,matcher/multimatch.cc,
	  matcher/rset.cc: Add missing explicit inclusions of "omassert.h".

Thu May 27 23:39:57 GMT 2010  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/expand.h: Remove unused header.

Thu May 27 06:45:27 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/stem.h: Update the list of languages that the
	  Xapian::Stem constructor recognises.

Thu May 27 05:20:42 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/stem.h,languages/Makefile.mk,
	  languages/compiler/generator.c,languages/stem.cc,
	  languages/steminternal.cc,languages/steminternal.h,tests/Makefile.am,
	  tests/api_stem.cc: Add the ability to specify your own stemming
	  algorithm by subclassing Xapian::StemImplementation, mostly based on
	  patch from Evgeny Sizikov in ticket#448.

Thu May 27 04:50:31 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_opvalue.cc: Use TEST_REL() instead of tout and TEST() with
	  an inequality.

Thu May 27 04:28:07 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/databasereplicator.cc,common/debuglog.h,
	  common/omdebug.h,expand/esetinternal.cc,expand/ortermlist.cc,
	  matcher/,net/remoteconnection.cc: Partial mass conversion of files
	  from omdebug.h to debuglog.h (this takes care off all the files
	  without BSN copyright).

Thu May 27 04:24:36 GMT 2010  Olly Betts <olly@survex.com>

	* common/output.h: Use <ostream> not <fstream>.

Thu May 27 04:09:25 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/orpostlist.cc: Prefer ++x to x += 1 for consistency.

Wed May 26 13:32:20 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc: Separate (C) notice from @file
	  doccomment.

Wed May 26 13:11:57 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h:
	  Move virtual method FlintPostList::get_doclength() definition out
	  of header, which also means the header no longer needs omdebug.h.

Wed May 26 13:03:22 GMT 2010  Olly Betts <olly@survex.com>

	* common/debuglog.h: Strip out commented out RETURN_VOID machinery.
	  This case is automatically handled provided LOGCALL_VOID is used.

Wed May 26 12:33:04 GMT 2010  Olly Betts <olly@survex.com>

	* common/debuglog.h: Don't check the category more than once in ctors
	  and dtors.  Don't convert the return value to a string in RETURN()
	  unless we want to log it.

Wed May 26 02:33:00 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_opvalue.cc: Convert file description to doccomment.
	  Remove unused headers and reorder remainder more standardly.

Tue May 25 10:17:42 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Note ordecay1 and ordecay2 fixes now also in
	  1.0.21.  Whitespace tweak.

Tue May 25 04:11:53 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: make_ordecay1_db and make_ordecay2_db end up
	  looping over at least 4 billion values (or possibly infinitely) on
	  platforms where sizeof(long) == 8.  The two databases are very
	  similar and the latter one works for the former test, so use the
	  same db for both tests, and rewrite the generator to work
	  portably.

Sun May 23 07:30:58 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Note XOR decay bug also fixed in 1.0.21.

Sat May 22 13:31:38 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac,tests/Makefile.am: Only try to build zlib-vg.so if we
	  are found a suitable valgrind installed (otherwise it's a waste of
	  effort to build it, and the build will fail without the valgrind
	  headers).

Sat May 22 13:18:33 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac,tests/Makefile.am,tests/runtest.in,tests/zlib-vg.c: zlib
	  can produce "uninitialised" output from "initialised" input - the
	  output does decode to the input, so this is presumably just some
	  unused bits in the output, so we use an LD_PRELOAD hack to get
	  valgrind to check the input is initialised and then tell it that the
	  output is initialised.

Wed May 19 14:34:52 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/andmaybepostlist.cc,matcher/andmaybepostlist.h,
	  matcher/orpostlist.cc: Fix a bug causing documents to be skipped
	  when OR decayed to AND_MAYBE, if the new RHS was behind the LHS
	  at the time of the decay.  Fixes #476.
	* tests/api_backend.cc: Add test case ordecay2 as a regression test
	  of this.  Also, remove some debug output in ordecay1, to speed it
	  up quite a bit.

Wed May 19 11:48:07 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/orpostlist.cc,tests/api_backend.cc: Fix a bug in the
	  decay from OR to AND: if the decay happened when the two
	  sub-postlists were on different docids, but the higher of those
	  docids actually occurred in both postlists, the higher docid
	  would be incorrectly skipped.  Add regression test ordecay1 to
	  test this.

Wed May 19 10:36:55 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_backend.cc,tests/api_compact.cc,
	  tests/harness/testrunner.cc,tests/harness/testrunner.h: Add new
	  test backend selection flag "generated", to select only backends
	  which support generated test databases.

Wed May 19 03:14:15 GMT 2010  Olly Betts <olly@survex.com>

	* api/,backends/brass/,backends/chert/,
	  backends/contiguousalldocspostlist.cc,backends/flint/,
	  backends/inmemory/inmemory_database.cc,
	  backends/remote/remote-database.cc,backends/slowvaluelist.cc,
	  common/utils.h,expand/esetinternal.cc,matcher/phrasepostlist.cc,
	  net/remoteserver.cc,net/remotetcpclient.cc,
	  queryparser/termgenerator.cc,tests/,
	  tests/harness/backendmanager_multi.cc,
	  tests/harness/backendmanager_remote.cc,
	  tests/harness/backendmanager_remotetcp.cc,tests/internaltest.cc,
	  tests/perftest/perftest.cc,tests/perftest/perftest_matchdecider.cc,
	  tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc,
	  tests/termgentest.cc: Fully migrate from om_tostring() to str().

Wed May 19 03:13:43 GMT 2010  Olly Betts <olly@survex.com>

	* cmake/xapian-config-version.cmake,cmake/xapian-config.cmake: Remove
	  generated files from SVN.

Wed May 19 02:59:47 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Add misisng explicit '#include <utils.h>'.

Tue May 18 14:24:03 GMT 2010  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,bin/xapian-check.cc,bin/xapian-compact.cc: Improve
	  building with flint, chert and/or brass disabled (partially addresses
	  ticket#361).

Tue May 18 00:42:08 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix warnings with --disable-backend-remote
	  (partially addresses ticket#361).

Sat May 15 06:56:26 GMT 2010  Olly Betts <olly@survex.com>

	* net/progclient.cc: Read the max fd with sysconf() instead of using
	  a hardcoded value of 256.  Work even if stdin and stdout have been
	  closed.

Thu May 13 10:53:24 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/orpostlist.cc: Correct some debugging lines.

Thu May 13 09:57:12 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/xorpostlist.cc,matcher/xorpostlist.h: Pass a minweight
	  value of 0 to children of XOR postlists, because we need to know
	  about all matching documents from the children even if they have
	  a low weight.
	* tests/api_backend.cc: Regression test for this: xordecay1.

Thu May 13 08:47:22 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/soaktest/soaktest_queries.cc: Add more code comments,
	  increase the number of repetitions from 100 to 10000, remove
	  accidentally added semicolons after some braces, remove "return
	  false" at end of test which was added for debugging purposes,
	  clear tout before testing each query, and display the query
	  number, the query, and the msets in the event of failure.

Tue May 11 10:16:05 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/soaktest/soaktest_queries.cc: Don't fail for empty result
	  sets.

Tue May 11 10:13:08 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/soaktest/: Add a "soaktest" testsuite, intended to contain
	  long-running tests with random data.  Currently contains a single
	  test which builds and runs random queries, checking that the
	  results returned are consistent when asking for different result
	  ranges.

Mon May 10 16:57:29 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_opvalue.cc: Add tests for OP_VALUE_RANGE to get
	  coverage of the skip_to() and check() methods of
	  ValueRangePostList.

Mon May 10 16:51:14 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_opvalue.cc: Add a test to get coverage of
	  ValueGePostList::skip_to().

Sun May 09 21:22:50 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_nodb.cc,tests/api_opvalue.cc: Move test "opvaluege1"
	  from api_nodb.cc to api_opvalue.cc, and rename to valuege3 for
	  consistency with other tests of OP_VALUE_GE.

Sun May 09 21:19:43 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/Makefile.am,tests/api_anydb.cc,tests/api_opvalue.cc: Move
	  the tests for OP_VALUE_* query operators from api_anydb.cc to
	  api_opvalue.cc.  Remove copyright statements earlier than 2007,
	  since OP_VALUE_* wasn't added until 2007.

Sun May 09 21:04:06 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/valuegepostlist.cc: Initialise valuelist in check() if
	  necessary.
	* tests/api_anydb.cc: Add regression test for this.

Thu May 06 15:03:43 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_replicate.cc: Add some extra debugging, to help
	  identify the problem with ticket #472.

Thu May 06 13:38:25 GMT 2010  Olly Betts <olly@survex.com>

	* common/safeuuid.h,configure.ac,INSTALL: Make use of built-in UUID API
	  on FreeBSD and NetBSD.  (ticket#470)

Thu May 06 13:10:30 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS,Makefile.am,cmake/,configure.ac: Install files to make Xapian
	  easier to use with cmake.  Thanks to Sune Vuorela for providing the
	  desired output.

Thu May 06 11:42:16 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/fdtracker.cc: Don't pass NULL to closedir().

Thu May 06 11:19:41 GMT 2010  Olly Betts <olly@survex.com

	* tests/api_anydb.cc: Test UUID is 36 characters long.

Thu May 06 10:41:21 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuegepostlist.cc: Use "str.h" and str().

Thu May 06 10:01:48 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuegepostlist.cc: Remove unused headers.

Thu May 06 09:55:27 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc:
	  Keep return value from valuelist->get_value() as a const string &
	  rather than a string - could be more efficient on some compilers,
	  though testing with gcc 4.1 revealed no difference.

Thu May 06 09:49:12 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/valuegepostlist.cc: "while(" -> "while (" in recent patch.

Thu May 06 09:30:27 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication.rst: Remove experimental warning.

Thu May 06 05:05:57 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Use "str.h" and str().

Thu May 06 05:03:22 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Remove '#include "leafpostlist.h"'
	  and '#include "document.h"' which are no longer used.

Thu May 06 04:53:07 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Remove '#include "autoptr.h"' which is
	  no longer required.

Thu May 06 04:18:25 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: "while(" -> "while (" in recent patch.

Wed May 05 16:44:17 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/orpostlist.cc,matcher/orpostlist.h: Add
	  OrPostList::check() method, which calls check() on the
	  sub-postlists, rather than falling back to skip_to().  This is
	  particularly helpful when a sub-postlist is one for which
	  skip_to() can be significantly more expensive than check(), such
	  as a ValueRangePostList.  I've observed a speedup of 10 times for
	  such a subquery with this change.

Wed May 05 16:34:30 GMT 2010  Richard Boulton <richard@tartarus.org>

	* matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
	  matcher/valuerangepostlist.h: Implement ValueRangePostList and
	  ValueGePostList using a ValueList streaming values for the value
	  slot of interest, rather than using an AllDocsPostList to get all
	  documents, using that to open temporary documents for each
	  document being considered, and then using that to get the value.
	  I've observed a speedup of more than 70 times for range queries
	  in a real-world situation with this change (a 29 second search
	  became a 0.4 second search). (ticket#432)

Wed May 05 06:44:31 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed May 05 05:42:56 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_cursor.cc,backends/chert/chert_cursor.cc,
	  backends/flint/flint_cursor.cc: If we have to rebuild the cursor
	  on next() because the table changed underneath us, we need to
	  advance it because find_entry() will put the cursor on the entry
	  we were already on, or the one before if the entry we were on
	  has been removed.  Bug uncovered by notmuch testsuite, but I'm
	  unable to reduce it to a sane testcase for our testsuite.
	  (Debian#579951)

Tue May 04 19:38:31 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/replication.cc,bin/xapian-replicate.cc,
	  common/replicatetcpclient.h,common/replication.h,
	  net/replicatetcpclient.cc,tests/api_replicate.cc: Fix a bug in
	  replication, which triggered when multiple modifications were
	  made to a database while a full copy of the database was in
	  progress.  In this situation, the client would fail to apply more
	  than one changeset before trying (and failing) to make the
	  database live, due to an incorrect assignment of the new revision
	  number to "offline_needed_revision" instead of
	  "offline_revision".  Also, replication now only sleeps for a
	  period (to allow reader to catch up) after a changeset has been
	  applied to a live database - previously, it would sleep
	  unnecessarily after a changeset had been applied to an offline
	  database.  Also, make the period for which replication sleeps in
	  this situation configurable with the "-r" command line option to
	  xapian-replicate.
	  A test for these changes will be committed to xapian-bindings
	  shortly.

Sat May 01 15:25:48 GMT 2010  Olly Betts <olly@survex.com>

	* Merge change accidentally committed to brass-btree branch:
	* tests/perftest/runprocess.cc: Use safesyswait.h, fixing build failure
	  on "make check" on FreeBSD.

Fri Apr 30 12:33:25 GMT 2010  Richard Boulton <richard@tartarus.org>

	* backends/brass/brass_databasereplicator.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc,tests/api_replicate.cc:
	  If a DB file doesn't exist when applying a changeset, try
	  creating it - this happens with lazy tables which aren't created
	  in the initial revision copied.  Add replicate4 test to check
	  that this works correctly with a lazily created position table.
	  Fixes ticket #468.

Fri Apr 30 07:09:31 GMT 2010  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Replication and PostingSource aren't
	  experimental in 1.2.x.

Fri Apr 30 00:52:22 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix typo in previous commit.

Thu Apr 29 23:46:09 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Check is SA_SIGINFO is defined before
	  using it as it isn't available everywhere.  Fixes FTBFS on GNU Hurd.

Thu Apr 29 12:11:48 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Install headers under PREFIX/include not
	  PREFIX/include/xapian.  This broke compiling code which didn't use
	  XO_LIB_XAPIAN or xapian-config.

Wed Apr 28 12:05:23 GMT 2010  Olly Betts <olly@survex.com>

	* Makefile.am,m4-macros/xapian-1.1.m4: Remove -1.1 suffix from
	  xapian-1.1.m4 and libxapian-1.1.la.

Wed Apr 28 06:15:45 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.20.
	* NEWS,configure.ac: 1.2.0!

Tue Apr 27 12:45:29 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Add bug reporter.

Mon Apr 26 08:26:26 GMT 2010  Olly Betts <olly@survex.com>

	* common/getopt.cc,common/gnu_getopt.h: On Cygwin, #include <getopt.h>
	  for declarations of optind, etc rather than providing our own
	  declarations.  Should fix warnings in Cygwin build reported by Reini
	  Urban on xapian-devel list.

Mon Apr 26 06:27:07 GMT 2010  Olly Betts <olly@survex.com>

	* common/getopt.cc,common/gnu_getopt.h: Revert previous 2
	  getopt-related patches.  The latest state was breaking on Solaris
	  which (contrary to what its man pages say) prototypes getopt() stuff
	  in stdlib.h.  This seems to be a rabbit hole we don't want to head
	  further down.

Sat Apr 24 02:12:53 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: Update --help output for -v to cover all terms
	  case.

Sat Apr 24 01:58:00 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: Add -a option to list all terms in a database.

Sat Apr 24 01:51:01 GMT 2010  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Prefer string() to "" converted to string.

Thu Apr 22 14:21:30 GMT 2010  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix bug related to ticket#464 (the previous
	  fix doesn't fix some similar cases).
	* tests/api_backend.cc: Add regression test msize2.

Thu Apr 22 11:02:11 GMT 2010  Olly Betts <olly@survex.com>

	* tests/: Hook up --abort-on-error fix for termgentest, stemtest,
	  queryparsertest, and internaltest.

Thu Apr 22 06:06:53 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Add a hyphen.

Wed Apr 21 11:16:50 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testrunner.cc: Exit with status 1 not 0 if we caught an
	  exception from the harness itself.

Wed Apr 21 11:11:10 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testrunner.cc,tests/harness/testsuite.cc: Fix
	  --abort-on-error to actually work.

Tue Apr 20 12:53:29 GMT 2010  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Note how to disable deprecation warnings.

Tue Apr 20 07:27:23 GMT 2010  Olly Betts <olly@survex.com>

	* api/omenquire.cc,matcher/multimatch.cc: Fix incorrect estimate and
	  bounds on matches when sorting and collapsing in a particular case
	  (ticket#464).
	* tests/api_backend.cc: Add regression test msize1.

Mon Apr 19 01:59:59 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: Use strtoul() instead of atoi() to decode document
	  id and value slot numbers passed on the command line.  Report out of
	  range and invalid values.

Sat Apr 17 09:17:25 GMT 2010  Olly Betts <olly@survex.com>

	* common/getopt.cc,common/gnu_getopt.h: Fix getopt code to work on
	  platforms without GNU getopt but with getopt().

Fri Apr 16 14:23:49 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.1.5.
	* NEWS: Sync changes from 1.0.19.

Fri Apr 16 12:29:14 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Handle NULL in the const char * catch.

Fri Apr 16 05:47:43 GMT 2010  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Fix wrapping.

Thu Apr 15 09:07:40 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_replicate.cc: Use a fixed size buffer for copying a
	  file, rather than a dynamically sized buffer; avoids using the
	  GCC extension allowing dynamically sized arrays.

Thu Apr 15 04:02:34 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Update with bug reporters.

Thu Apr 15 00:30:45 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h: Note how TermGenerator handles
	  stopwords.

Wed Apr 14 23:41:55 GMT 2010  Olly Betts <olly@survex.com>

	* common/getopt.cc,common/gnu_getopt.h: Put our optarg, etc in a
	  namespace and then pull them in to avoid linking to versions in the C
	  library.  Fixes warnings on Cygwin.

Wed Apr 14 15:33:39 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Remove already fixed FIXME comment.

Wed Apr 14 14:13:10 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Use const reference to avoid a
	  needless handle copy.

Wed Apr 14 14:00:21 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_alltermslist.cc,
	  backends/brass/brass_alltermslist.h,
	  backends/chert/chert_alltermslist.cc,
	  backends/chert/chert_alltermslist.h,
	  backends/flint/flint_alltermslist.cc,
	  backends/flint/flint_alltermslist.h: Fix memory leak if Database
	  throws an exception in XXXAllTermsList constructor.  Fixes bug#462.
	* tests/api_backend.cc: Enable qpmemoryleak1 for non-remote backends as
	  a regression test for this fix.

Tue Apr 13 12:38:08 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Don't memcpy() a block to itself -
	  it's a waste of effort, and (probably) undefined behaviour (as a
	  block overlaps itself).

Tue Apr 13 12:36:53 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc: Don't
	  memcpy() a block to itself - it's a waste of effort, and (probably)
	  undefined behaviour (as a block overlaps itself).

Tue Apr 13 08:38:40 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Add a ParserHandler class to take
	  care of releasing the yyParser object.

Tue Apr 13 07:49:33 GMT 2010  Olly Betts <olly@survex.com>

	* common/autoptr.h: Fix comment typo.

Tue Apr 13 07:47:40 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc: "autoptr.h" not <autoptr.h> (it's an in-tree
	  header).

Tue Apr 13 07:25:11 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix leak of yyParser if an exception
	  is thrown during parsing.   Partly fixes ticket#462.
	* tests/api_backend.cc: Add regression test qpmemoryleak1.

Tue Apr 13 01:37:08 GMT 2010  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Revert change to make removedir()
	  recurse into subdirectories - it doesn't fix a bug, so isn't
	  appropriate when we're trying to get 1.2.0 out (backends don't
	  currently put files in subdirectories, which was the justification
	  in the commit message).

Mon Apr 12 11:50:37 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/flint/: Fix to rebuild cursors if the table gains or loses a
	  level.  Fixes ticket#455.

Mon Apr 12 09:29:39 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/: Fix to rebuild cursors if the table gains or loses a
	  level.  Fixes ticket#455.

Mon Apr 12 09:26:53 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/: Fix to rebuild cursors if the table gains or loses a
	  level.  Fixes ticket#455.

Mon Apr 12 08:27:29 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_none.cc: Work around compilation failure on OpenBSD.  Fixes
	  ticket#458.

Fri Apr 02 04:03:04 GMT 2010  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.1.m4: Give a more specific error message for the
	  cases where XAPIAN_CONFIG isn't found, is a directory, or isn't
	  executable.

Thu Mar 25 14:43:57 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add databasemodified1 testcase to provide some
	  test coverage for DatabaseModifiedError.

Thu Mar 25 06:32:44 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-check-flint.cc: Report docid for doclength mismatch.

Thu Mar 25 06:23:26 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Report docid for
	  doclength mismatch.

Sat Mar 20 15:04:18 GMT 2010  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Add a note about removing automatically added
	  spelling dictionary entries.

Sat Mar 20 09:30:44 GMT 2010  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Add section on indexing.  Move the "algorithm"
	  section to the end, as it is really just background information for
	  the curious.

Wed Mar 17 01:33:39 GMT 2010  Olly Betts <olly@survex.com>

	* INSTALL: Add a hyphen.

Wed Mar 17 01:30:34 GMT 2010  Olly Betts <olly@survex.com>

	* INSTALL: Correct description of --enable-assertions.  It does NOT
	  enable debugging symbols, and shouldn't control checks on bad data
	  passed to API calls (if it does anywhere, that's a bug).  Note that
	  Xapian will run more slowly with assertions on.

Wed Mar 17 01:10:13 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_values.cc: Put ValueUpdater in Brass namespace
	  to avoid cross-linking issues with ValueUpdater class in chert
	  (change taken from brass-btree branch).

Sun Mar 14 10:05:36 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from chert:
	* backends/flint/flint_database.cc,
	  backends/flint/flint_positionlist.cc,
	  backends/flint/flint_positionlist.h: When updating a document, rather
	  than decoding the old positions, comparing with the new, and then
	  encoding the new if different, we now just encode the new and then
	  compare the encoded forms.  (ticket#428)  This change also avoids
	  calling FlintPositionListTable::del() when we know the entry doesn't
	  already exist.
	* backends/flint/flint_positionlist.cc: Minor refactor to improve
	  code clarity and to only create std::string variable when it
	  is needed.

Sun Mar 14 09:45:34 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/chert_positionlist.cc: Minor refactor to improve
	  code clarity and to only create std::string variable when it
	  is needed.

Sun Mar 14 09:29:54 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_positionlist.cc: Minor refactor to improve
	  code clarity and to only create std::string variable when it
	  is needed.

Sun Mar 14 07:37:03 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc,tests/api_closedb.cc,tests/api_metadata.cc,
	  tests/internaltest.cc: Catch by const reference rather than just
	  reference, unless we actually need to modify the caught object.

Sun Mar 14 06:45:11 GMT 2010  Olly Betts <olly@survex.com>

	* api/replication.cc: Check live_db only has a single sub-database even
	  if we just lazily opened it.

Sun Mar 14 05:00:21 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,
	  backends/flint/flint_databasereplicator.cc: Add missing explicit
	  '#include "str.h"'.

Sat Mar 13 09:22:24 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_replicate.cc: Always use off_t to refer to the size of a
	  file: fixes warnings about comparting a signed value to an unsigned
	  value.

Thu Mar 11 16:07:10 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/replication.cc: Open the livedb lazily if it gets left in a
	  closed state (due to an exception when applying a changeset),
	  rather than reopening it straight away in an exception handler.
	  This requires the livedb to become a mutable member, but is safer
	  in the event that an exception is thrown by the WritableDatabase
	  constructor.

Thu Mar 11 15:17:12 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_replicate.cc: Uncomment the rmtmpdir() at the end of
	  replicate3; it was accidentally committed debugging code.

Thu Mar 11 13:03:57 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/replication.cc: If an exception is thrown, mark that the
	  offline revision needed is unknown (represented by being empty);
	  ensures that a database isn't put live incorrectly in this case.
	  Also, actually read the message for REPL_REPLY_END_OF_CHANGES, so
	  that we get an error if the message is truncated.  Also, if an
	  attempt to apply a changeset to the live database fails with an
	  exception while the live database is closed, reopen the live
	  database before allowing the exception to propagate.
	* tests/api_replicate.cc: Split replicate() helper function into
	  two parts, to separate getting the changeset messages, and
	  applying them. Add replicate3 test, which checks that
	  replications which are provided with truncated messages raise
	  appropriate errors.

Thu Mar 11 00:46:39 GMT 2010  Olly Betts <olly@survex.com>

	* common/replicate_utils.cc: Avoid creating temporary string objects
	  to reduce bloat in compiled code.  Remove explicit std:: qualifiers.

Thu Mar 11 00:38:00 GMT 2010  Olly Betts <olly@survex.com>

	* common/replicate_utils.cc: The directory we're writing changesets
	  to will always exist, so no need to ensure it does.

Thu Mar 11 00:10:19 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Fix calculation of end
	  pointer for changes file.  Since the merge, it has been off by
	  CONST_STRLEN(CHANGES_MAGIC_STRING).

Wed Mar 10 23:59:38 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,
	  backends/chert/chert_databasereplicator.cc: Add missing explicit
	  '#include "str.h"'.

Wed Mar 10 13:07:41 GMT 2010  Richard Boulton <richard@tartarus.org>

	* common/Makefile.mk,common/replicate_utils.cc,
	  common/replicate_utils.h: Add some utility functions for
	  replication to create changeset files, and append content to
	  them, to avoid duplicating the code in each backend.
	* backends/chert/chert_database.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/chert/chert_databasereplicator.h,
	  backends/flint/flint_database.cc,
	  backends/flint/flint_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.h: Make the
	  DatabaseReplicator subclasses respect the XAPIAN_MAX_CHANGESETS
	  environment variable, such that they write the changesets they're
	  applying to disk if the value is non-zero.  Enables replication
	  from a replicated copy.
	* tests/api_replicate.cc: Refactor some common code, and add
	  replicate2, which tests replication from a replicated copy.  Skip
	  this test for brass, since brass doesn't support this.

Wed Mar 10 12:11:41 GMT 2010  Richard Boulton <richard@tartarus.org>

	* common/utils.cc,common/utils.h: Make removedir() recurse into
	  subdirectories; this ensures that replication works if backends
	  put some files in subdirectories of their replicas (eg, if the
	  replica is itself a replicated database).

Wed Mar 10 12:07:40 GMT 2010  Richard Boulton <richard@tartarus.org>

	* backends/chert/,backends/flint/,common/Makefile.mk,
	  common/io_utils.cc,common/io_utils.h: Refactor duplicated code
	  from {flint,chert}_io.{cc,h} into common/io_utils.{cc,h}.  Rename
	  flint_io_read() to io_read(); do similar for flint_io_write()
	  and flint_io_sync(), and for the chert versions.  Leave brass
	  alone to avoid conflicting with the new brass backend development
	  branch.

Mon Mar 08 02:32:35 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-check-chert.cc: Check that the doclen initial chunk
	  exists.

Tue Mar 02 13:28:50 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/chert_database.cc,
	  backends/chert/chert_positionlist.cc,
	  backends/chert/chert_positionlist.h: When updating a document, rather
	  than decoding the old positions, comparing with the new, and then
	  encoding the new if different, we now just encode the new and then
	  compare the encoded forms.  (ticket#428)  This change also avoids
	  calling ChertPositionListTable::del() when we know the entry doesn't
	  already exist.

Tue Mar 02 04:00:22 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Harness now catches const char *
	  exceptions explicitly so it can show their contents.

Tue Mar 02 03:59:27 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/valueiterator.h: Comment tweak.

Tue Mar 02 03:57:55 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add missing forward declaration of
	  "class Database".

Tue Mar 02 01:51:33 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update partially from ChangeLog.

Mon Mar 01 05:38:41 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,
	  backends/brass/brass_positionlist.cc,
	  backends/brass/brass_positionlist.h: When updating a document, rather
	  than decoding the old positions, comparing with the new, and then
	  encoding the new if different, we now just encode the new and then
	  compare the encoded forms.  (ticket#428)  This change also avoids
	  calling BrassPositionListTable::del() when we know the entry doesn't
	  already exist.

Mon Mar 01 02:09:40 GMT 2010  Olly Betts <olly@survex.com>

	* net/serialise.cc: Don't call Document::values_count() twice when we
	  can trivially avoid doing so.  Ditto for termlist_count() and
	  positionlist_count().

Mon Mar 01 01:53:58 GMT 2010  Olly Betts <olly@survex.com>

	* bin/: Rename tot_off to last_docid when it is actually holding the
	  last_docid value.

Sun Feb 28 23:47:49 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Whitespace tweak.

Sun Feb 28 23:44:58 GMT 2010  Olly Betts <olly@survex.com>

	* tests/dbcheck.cc: Tweak whitespace to match standard usage.  Catch
	  exceptions by const reference.
	* HACKING: Discuss why exceptions should be caught by const reference.
	  Tweak markup of blockquotes.

Sun Feb 28 22:50:50 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Add note about "new SomePODType()" not being the same as
	  "new SomePODType".

Sun Feb 28 22:29:31 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Quote ``cat`` and ``more``.

Sun Feb 28 14:00:39 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_compact.cc: Clarify comment about regression test for
	  1.1.4, and remove a test line which is implicit in the following
	  dbcheck() line anyway.

Sun Feb 28 11:07:33 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/fdtracker.cc,tests/harness/fdtracker.h: Add GPL
	  boilerplate and copyright notices which I failed to do before
	  committing these new files.

Thu Feb 25 10:34:15 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Initialise z_stream members zalloc, zfree, and opaque with Z_NUL
	  rather than 0 cast to the appropriate type, as that's what the zlib
	  documentation says to do.  Add missing initialisation of opaque for
	  the inflate z_stream which the docs say is needed, though reading
	  the zlib code, isn't actually for current versions.

Wed Feb 24 14:24:05 GMT 2010  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Fix indentation.

Wed Feb 24 14:18:25 GMT 2010  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,common/remoteserver.h,
	  docs/remote_protocol.html,net/remoteserver.cc,tests/api_spelling.cc:
	  Add remote backend support for WritableDatabase::add_spelling() and
	  WritableDatabase::remove_spelling().  This bumps the remote protocol
	  to version 35.0 (so both client and servers will need updating).
	  Suggesting spelling corrections isn't yet supported.  (ticket#178)

Wed Feb 24 09:09:27 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: "lastdocid" -> "highest document id ever used"
	  in output so it's clearer what this number means.

Tue Feb 23 14:03:47 GMT 2010  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Fix incorrect classname in error message.

Tue Feb 23 13:16:11 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: For -fno-strict-aliasing for GCC 4.2 to avoid bad code
	  being generated due to a bug in that compiler version.  Fixes
	  ticket#449.

Tue Feb 23 03:08:02 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac,tests/harness/testsuite.cc: Use sigsetjmp() and
	  siglongjmp() where available so that the set of blocked signals
	  get restored and the test harness can catch a second incidence
	  of a particular signal in a run.  Use sigaction() instead of
	  signal() where available, which allows us to report the address
	  associated with SIGSEGV, SIGFPE, SIGILL, and SIGBUS.

Mon Feb 22 14:29:50 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_databasereplicator.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Fix exception message
	  if we get an unsupported changeset type.

Mon Feb 22 01:49:03 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/dbcheck.cc: Check the wdf, doclen, and value bounds
	  reported by the database against correct (tight) bounds
	  calculated by iterating through the database contents.

Mon Feb 22 01:47:20 GMT 2010  Richard Boulton <richard@tartarus.org>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc:
	  Ensure that wdfs are reported to the stats object correctly when
	  replacing documents.  These checks were absent entirely in chert,
	  and incorrectly skipped in some cases in brass.

Mon Feb 22 00:59:57 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_valuestream.cc: Reset tout before testing each interval.
	  Prefer string() to "".

Mon Feb 22 00:57:59 GMT 2010  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,examples/delve.cc: Remove delve's -k option,
	  accepted as an undocumented alias for -V since 0.9.10 for
	  compatibility with 0.9.9 and earlier.  Just use -V instead.

Mon Feb 22 00:45:37 GMT 2010  Olly Betts <olly@survex.com>

	* examples/delve.cc: If documents are specified, change "-V<valueno>"
	  to only show calues for those documents.

Sun Feb 21 14:11:58 GMT 2010  Olly Betts <olly@survex.com>

	* common/stringutils.h: Factor out looking up a character in the table
	  into a separate inlined function.  Add C_islcxdigit() to check for
	  an lower case hex digit.

Sun Feb 21 11:10:10 GMT 2010  Olly Betts <olly@survex.com>

	* examples/Makefile.mk,examples/xapian-metadata.cc: Add new example
	  "xapian-metadata" which allows you to get and set individual user
	  metadata entries.

Sun Feb 21 10:31:56 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Belatedly update version number to 1.1.4.

Sat Feb 20 01:09:45 GMT 2010  Olly Betts <olly@survex.com>

	* tests/runtest.in: Now we have fd leak checking in the test harness,
	  remove the ulimit as it doesn't add anything, and has caused problems
	  on some Debian buildds.

Fri Feb 19 02:08:25 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.h,tests/harness/testsuite.cc:
	  Call backendmanager->clean_up() before checking for fd leaks
	  to avoid finding the sockets/pipes as leaks.  This means that
	  clean_up() needs to handle being called more than once for
	  a test sometimes (which the current versions do) so document
	  that.

Thu Feb 18 02:31:17 GMT 2010  Olly Betts <olly@survex.com>

	* examples/simpleindex.cc: Explicitly call commit() on the database,
	  as that is good practice (since you see any exceptions).

Thu Feb 18 01:52:10 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Clear tout on each pass of the loop to avoid a
	  lot of irrelevant output under --verbose if the test fails.

Thu Feb 18 01:33:53 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix fd tracking change to work when
	  HAVE_VALGRIND isn't defined.

Thu Feb 18 00:46:20 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Document the possible exception
	  messages from QueryParser::parse_query().

Thu Feb 18 00:20:18 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Also explicitly commit after
	  indexing for flint and chert.

Wed Feb 17 15:58:04 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/: Add machinery to check for leaked FDs.  Currently
	  requires /proc/self/fd to work (so it works on at least Linux), but
	  should do nothing on platforms without this directory.

Wed Feb 17 15:53:30 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Explicitly commit after indexing
	  for brass, so we see any exceptions from the commit (commit from
	  the dtor swallows any exceptions).

Tue Feb 16 16:23:30 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-compact.cc: Fix failure to set lastdocid to an
	  appropriate value when using --no-renumber.
	* tests/api_compact.cc: Add regression test for this.

Tue Feb 16 16:10:49 GMT 2010  Richard Boulton <richard@tartarus.org>

	* examples/delve.cc: Display the lastdocid value when displaying
	  general database statistics.

Tue Feb 16 15:39:50 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Correct typo
	  in error message.

Mon Feb 15 13:59:45 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Update for 1.1.4.

Mon Feb 15 13:58:44 GMT 2010  Olly Betts <olly@survex.com>

	* PLATFORMS: We don't support GCC < 3.1, so remove discussion of
	  issues with GCC 2.95.

Mon Feb 15 13:55:10 GMT 2010  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from 1.0.18.

Mon Feb 15 11:51:15 GMT 2010  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.  Update from 1.0.18.

Sun Feb 14 05:47:30 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix QueryParser to handle an explicit
	  AND before a hated term (foo AND -bar).  (ticket#447)
	* tests/queryparsertest.cc: Add regression test cases.

Fri Feb 12 01:27:32 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Only include trailing '+' or
	  '#' on a term if it isn't followed by a word character (makes more
	  sense and matches QueryParser's behaviour).  (ticket#446)
	* tests/termgentest.cc: Add regression test.

Thu Feb 11 04:30:56 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Add new "open" command to allow easy switching
	  between tables.

Wed Feb 10 02:40:36 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Rewrite the note about Document being a
	  lazy handle to fix a few details and avoid nailing down the
	  exact implementation.

Wed Feb 10 00:37:54 GMT 2010  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Update for chert and other recent changes.

Wed Feb 10 00:37:04 GMT 2010  Olly Betts <olly@survex.com>

	* docs/replication_protocol.rst: Update.

Mon Feb 08 12:05:05 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_version.cc: Fix comments about BRASS_VERSION
	  which were previously just cut-and-pasted from those about
	  CHERT_VERSION.

Mon Feb 08 11:54:04 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_metadata.cc: Include missing headers.

Mon Feb 08 09:23:00 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_document.h,backends/chert/chert_document.h:
	  Fix typos in documentation comments.

Mon Feb 08 08:27:09 GMT 2010  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Remove unused headers <streambuf> and
	  "omdebug.h".

Mon Feb 08 01:28:48 GMT 2010  Olly Betts <olly@survex.com>

	* common/debuglog.h: Use std::boolalpha so bool is logged as "true"
	  or "false" (instead of "1" or "0").

Sat Feb 06 10:04:42 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Sync with 1.0 branch.

Sat Feb 06 08:20:31 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Avoid trying to create a database where
	  an already open one exists (which fails on Microsoft Windows).
	  (ticket#443).

Fri Feb 05 13:28:08 GMT 2010  Olly Betts <olly@survex.com>

	* examples/simpleexpand.cc,examples/simpleindex.cc,
	  examples/simplesearch.cc: Handle --help and --version.

Fri Feb 05 13:25:37 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix not to assign elements off the end of a
	  vector (ticket#440).

Fri Feb 05 11:41:05 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
	  Remove ValueCountMatchSpy::get_values().  values_begin() should
	  be used instead to iterate over the values.

Fri Feb 05 07:39:46 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac: Enable automake's std-options feature to check all
	  installed programs support --help and --version.

Fri Feb 05 01:45:49 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Add Document::add_boolean_term().
	* tests/api_none.cc: Add testcase document1 as a feature test.

Fri Feb 05 00:27:52 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc,backends/flint/flint_btreebase.cc:
	  Add missing SEQUENTIAL entry to documentation of base file format.

Thu Feb 04 03:06:26 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Fix to work with MSVC makefiles (ticket#440).

Thu Feb 04 03:04:43 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING,common/Makefile.mk,common/safesyswait.h: Add wrapper
	  for <sys/wait.h> which defines macros for WEXITSTATUS and
	  WIFEXITED when required.

Wed Feb 03 15:01:36 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
	  Add ValueCountMatchSpy::values_begin() and values_end() to allow
	  iteration over all the values in a ValueCountMatchSpy without
	  needing to handle the dict.  Move the contents of
	  ValueCountMatchSpy into a reference counted internal object, so
	  that the iterator can ensure that the contents aren't deleted
	  before it finishes.

Wed Feb 03 15:01:02 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/generate-api_generated: Add ValueCountMatchSpy to the list
	  of non-copyable API classes.

Wed Feb 03 13:18:03 GMT 2010  Richard Boulton <richard@tartarus.org>

	* include/xapian/matchspy.h,tests/api_matchspy.cc: Provide an
	  iterator for accessing the top values found by a matchspy, rather
	  than using a method which takes a vector reference as a
	  parameter.  Should be wrappable much more nicely (and get wrapped
	  automatically), and be easier to use: the testcase for this is
	  significantly shorter than for the old API.  Remove
	  StringAndFrequency from API - it's now just an internal class.
	* api/matchspy.cc: Test new access method for top_values.

Wed Feb 03 06:46:37 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Add Emmanuel Engelhart for reporting problems indexing
	  Burmese text.

Wed Feb 03 06:32:03 GMT 2010  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,queryparser/queryparser.lemony,
	  queryparser/termgenerator_internal.cc: Add ENCLOSING_MARK and
	  COMBINING_SPACING_MARK categories to is_wordchar().  Make
	  TermGenerator and QueryParser ignore several zero-width space
	  characters.
	* tests/queryparsertest.cc,tests/termgentest.cc: Add test coverage for
	  the changes.

Wed Feb 03 03:14:30 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix apostrophe abuse in comment.

Wed Feb 03 01:23:04 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Make TermList::as_opwindow_query()
	  private.

Wed Feb 03 01:19:19 GMT 2010  Olly Betts <olly@survex.com>

	* common/replication.h: Use "" not <> for including API headers.

Wed Feb 03 01:08:58 GMT 2010  Olly Betts <olly@survex.com>

	* common/replication.h: Remove warnings about this being an
	  experimental API, which no longer make sense now it is internal.

Tue Feb 02 21:59:59 GMT 2010  Olly Betts <olly@survex.com>

	* tests/generate-api_generated: Remove DatabaseReplica.

Tue Feb 02 17:01:23 GMT 2010  Richard Boulton <richard@tartarus.org>

	* include/xapian/document.h: Add a note to the API documentation
	  for the Document class about the potential issues involved in
	  lazy loading.  Fixes ticket #421.

Tue Feb 02 16:21:39 GMT 2010  Richard Boulton <richard@tartarus.org>

	* docs/categorisation.rst: Remove documentation of NumericRanges
	  stuff for now, since the NumericRanges is no longer on trunk.

Tue Feb 02 15:59:14 GMT 2010  Richard Boulton <richard@tartarus.org>

	* common/replication.h: Put the ReplicationInfo, DatabaseMaster and
	  DatabaseReplica symbols back into public visibility - they're
	  needed for the tests, and for the command line scripts.

Tue Feb 02 15:06:44 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_matchspy.cc:
	  Remove NumericRanges from trunk - their API is still uncertain,
	  so I want to do a bit more development work on them on the
	  matchspy branch before committing to support them for several
	  years.

Tue Feb 02 13:45:24 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/replication.cc,backends/brass/brass_database.cc,
	  backends/chert/chert_database.cc,backends/flint/flint_database.cc,
	  common/,include/Makefile.mk,include/xapian/replication.h,
	  net/replicatetcpclient.cc,net/replicatetcpserver.cc,
	  tests/generate-api_generated: Move replication support out of the
	  public API headers and public symbol visibility.  Access to
	  replication, for now, is via the command-line scripts: this is
	  similar to the access to running a remote database server, and
	  the access to database compaction and checking.  See ticket #347
	  for some commentary.

Tue Feb 02 07:22:28 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from chert:
	* backends/flint/flint_alltermslist.h,backends/flint/flint_spelling.h,
	  backends/flint/flint_spellingwordslist.h: Add missing std::
	  qualifiers.

Tue Feb 02 07:12:51 GMT 2010  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in: Add generated include/xapian/error.h so
	  that Xapian::Error and subclass API docs are collated for a VPATH
	  build.
	* docs/Makefile.am: Add regression test to make sure doxygen collated
	  API docs for Xapian::RuntimeError.

Tue Feb 02 06:52:55 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/chert_alltermslist.h,backends/chert/chert_spelling.h,
	  backends/chert/chert_spellingwordslist.h: Add missing std::
	  qualifiers.

Tue Feb 02 01:34:52 GMT 2010  Richard Boulton <richard@tartarus.org>

	* docs/replication.rst: Add note about not using reopen() with
	  databases being updated by the replication client.

Tue Feb 02 01:17:34 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/matchspy.cc,docs/categorisation.rst,include/xapian/matchspy.h,
	  tests/api_matchspy.cc: Remove score_evenness(), since it turned
	  out to be of little or no use in practical situations.  See
	  ticket #435 for more details.

Mon Feb 01 21:53:41 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/chert/chert_table.cc: Use
	  LOGCALL_VOID for add() methods which now return void.

Mon Feb 01 21:50:05 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Fix documentation comments for FlintTable::add() and
	  FlintTable::del() - errors actually cause exceptions, not a false
	  return value, and del() returns true if it actually removed an entry.
	  Fix FlintTable::add() to throw an exception for the (hopefully never
	  hit) case when the tag value is too insanely large to handle.  With
	  that FlintTable::add() always returns true, and we never check the
	  return value anyway, so just make it return void.

Mon Feb 01 21:37:33 GMT 2010  Olly Betts <olly@survex.com>

	* Backport change from brass:
	* backends/chert/chert_table.cc,backends/chert/chert_table.h:
	  Fix documentation comments for ChertTable::add() and
	  ChertTable::del() - errors actually cause exceptions, not a false
	  return value, and del() returns true if it actually removed an entry.
	  Fix ChertTable::add() to throw an exception for the (hopefully never
	  hit) case when the tag value is too insanely large to handle.  With
	  that ChertTable::add() always returns true, and we never check the
	  return value anyway, so just make it return void.

Mon Feb 01 16:02:27 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-check-brass.cc,bin/xapian-check-chert.cc: Fix checking
	  of the METAINFO key in chert and brass.  For small databases, the
	  statistics fit in few enough bytes that the trailing
	  unpack_uint_last() moved to end, so errors weren't being
	  reported, but for large databases the check was incorrectly
	  reporting an error.

Mon Feb 01 09:24:14 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_table.cc,backends/brass/brass_table.h:
	  Fix documentation comments for BrassTable::add() and
	  BrassTable::del() - errors actually cause exceptions, not a false
	  return value, and del() returns true if it actually removed an entry.
	  Fix BrassTable::add() to throw an exception for the (hopefully never
	  hit) case when the tag value is too insanely large to handle.  With
	  that BrassTable::add() always returns true, and we never check the
	  return value anyway, so just make it return void.

Mon Feb 01 01:45:09 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_alltermslist.h,backends/brass/brass_spelling.h,
	  backends/brass/brass_spellingwordslist.h: Add missing std::
	  qualifiers.

Mon Feb 01 00:57:21 GMT 2010  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.h: Add missing std:: qualifier.

Mon Feb 01 00:52:27 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_spelling.h,backends/chert/chert_spelling.h:
	  Add missing std:: qualifier.

Sun Jan 31 23:35:52 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_termlisttable.cc,
	  backends/chert/chert_termlisttable.h: Remove
	  ChertTermListTable::get_doclength() as it is no longer used.

Sun Jan 31 23:19:50 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_termlisttable.cc,
	  backends/brass/brass_termlisttable.h: Remove
	  BrassTermListTable::get_doclength() as it is no longer used.

Sun Jan 31 09:19:39 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: "until" improvements:
	  + No longer reports the current key and tag.
	  + If passed a key before the current one, no longer silently advances
	    to the next key.
	  + Explicitly says if the specified key doesn't exist, including where
	    we ended up.

Sun Jan 31 00:19:41 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Use a single Document object rather than
	  creating the same one 10000 times.

Sun Jan 31 00:08:38 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Move make_multichunk_db() before the testcase
	  which uses it, rather than between two helper functions for another
	  testcase.

Sun Jan 31 00:07:03 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_compact.cc: Remove confusing comment, cut-and-pasted from
	  elsewhere and not relevant here.

Fri Jan 29 06:13:18 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_metadata.cc,backends/chert/chert_metadata.cc,
	  backends/flint/flint_metadata.cc: Correct filenames in @file.

Thu Jan 28 22:34:03 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_compact.cc: Add check that xapian-compact works
	  correctly on a database with multiple chunks for a single term;
	  this is a regression test for ticket #427

Thu Jan 28 22:33:16 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Don't
	  cut the extra byte of doclen chunk keys.

Thu Jan 28 21:23:48 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-compact-flint.cc: Revert previous patch for flint - it
	  only applies to new key format used by chert and brass.

Thu Jan 28 21:13:38 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc,
	  bin/xapian-compact-flint.cc: Partial fix for #427: truncate
	  follow-on keys for postlist chunks fully (was leaving the
	  trailing 0-byte, causing the code for chert and brass to
	  incorrectly think a new chunk had started, resulting in a
	  truncated posting list.

Thu Jan 28 20:42:47 GMT 2010  Richard Boulton <richard@tartarus.org>

	* bin/xapian-inspect.cc: Add "until" command to display keys until
	  a specified one.  Useful for seeing all keys for a particular
	  posting list, etc.

Thu Jan 28 01:31:54 GMT 2010  Olly Betts <olly@survex.com>

	* tests/dbcheck.cc: Whitespace tweak.

Wed Jan 27 06:29:21 GMT 2010  Olly Betts <olly@survex.com>

	* tests/dbcheck.cc: <config.h> not "config.h".

Wed Jan 27 04:20:42 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_inverter.h: Make two getters const.

Wed Jan 27 04:01:17 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Add ChertWritableDatabase::insert_mod_plist() to handle the simpler
	  case where we know the document doesn't already exist, to avoid
	  adding extra code to that common path over the code we had before
	  the #250-related changes.

Tue Jan 26 03:25:59 GMT 2010  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: In testcase pack_uint_preserving_sort1, use
	  data() not c_str(), calculate the end position just once, and use
	  swap to copy the current packed to prev_packed.

Fri Jan 15 12:51:38 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Fix to use 'M' as the flag character for modified entries in
	  modplists (not 'U').  We never explicitly check for 'M' (we check for
	  'A' vs 'D' vs something else), so this isn't a functional change,
	  but rather making the values consistent (as they were before the
	  fix for #250).

Fri Jan 15 08:25:14 GMT 2010  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Use Xapian::termcount_diff instead of Xapian::termcount for
	  parameters of add_freq_delta() which can be signed.  Fix parameter
	  docs to say "change" instead of "increase".

Fri Jan 15 06:05:28 GMT 2010  Olly Betts <olly@survex.com>

	* tests/api_replacedoc.cc: Just test that begin == end when we expect
	  no positions rather than generating a string representation and
	  then testing if it is empty.

Thu Jan 14 11:17:36 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Auto-enabling of -Werror is now done for GCC 4.1 or newer.

Thu Jan 14 05:06:42 GMT 2010  Olly Betts <olly@survex.com>

	* HACKING: Include the MIT licence text in HACKING itself.
	* COPYING_MIT: Remove external copy of text - it could mislead users
	  into thinking that this is the current licence of Xapian.

Sun Jan 10 07:36:16 GMT 2010  Olly Betts <olly@survex.com>

	* configure.ac:With --enable-maintainer-mode, enable -Werror for GCC
	  >= 4.1 rather than >= 4.0 as Apple's GCC 4.0 gives bogus
	  uninitialised variable warnings for pack.h.

Sat Jan 09 00:56:06 GMT 2010  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Add support for quoting boolean terms
	  so they can contain arbitrary characters (partly addresses
	  ticket#128).
	* tests/queryparsertest.cc: Add test coverage.

Fri Jan 08 13:25:25 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_compact.cc: Add copyright note for my changes committed
	  earlier today.

Fri Jan 08 12:19:07 GMT 2010  Olly Betts <olly@survex.com>

	* bin/xapian-compact-brass.cc,bin/xapian-compact-chert.cc: Fix merging
	  of databases by xapian-compact for brass and chert.
	* tests/api_compact.cc: Enable test compactmerge1 for brass and chert
	  as a regression test.

Fri Jan 08 11:26:41 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc: Rearrange comparison between old
	  and new termlists to avoid double check of termlist.at_end().

Fri Jan 08 11:22:30 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/api_compact.cc: Add test of xapian-compact when merging
	  databases.  Currently, the generated databases are broken for
	  chert and brass, so skipping the test for those to avoid breaking
	  the snapshotter.

Fri Jan 08 11:13:13 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/: Move routines for helping to check database contents and
	  consistency into dbcheck.cc, with headers in dbcheck.h.

Fri Jan 08 10:07:09 GMT 2010  Richard Boulton <richard@tartarus.org>

	* tests/internaltest.cc: Add test_pack_uint_preserving_sort1()
	  which I wrote when suspicious of that function - passes fine, but
	  probably worth keeping the test coverage.

Fri Jan 08 00:23:06 GMT 2010  Olly Betts <olly@survex.com>

	* AUTHORS: Add Henry Combrinck for Search::Xapian patches.

Thu Jan 07 15:51:57 GMT 2010  Richard Boulton <richard@tartarus.org>

	* api/postingsource.cc: For ValueWeightPostingSources for which
	  there are no entries, the upper bound returned will be an empty
	  string, which translated to -inf when passed to
	  sortable_unserialise().  This was causing the matcher to get
	  confused and return no results in some queries involving such a
	  posting source.  This commit fixes this.
	* tests/api_postingsource.cc: Add emptyvalwtsource1 as a regression
	  test for this, and a general test of this area of code.

Thu Jan 07 09:17:58 GMT 2010  Olly Betts <olly@survex.com>

	* backends/brass/brass_inverter.h: Fix comment typo.

Wed Dec 30 11:46:45 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/brass/brass_database.cc,backends/chert/chert_database.cc,
	  backends/flint/flint_database.cc: When updating documents, don't
	  update posting entries which havn't changed.  Largely fixes
	  ticket #250.
	* AUTHORS: Add Kan-Ru Chen, since his patch attached to ticket #250
	  was the basis of this fix.

Wed Dec 30 11:44:18 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/brass/brass_inverter.h: Add methods for updating an
	  existing posting, so we don't have to remove then re-add it.

Wed Dec 30 11:41:57 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/brass/brass_database.h: Remove old unused members:
	  total_length and lastdocid.

Wed Dec 30 01:07:04 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_database.h: Remove old unused members:
	  total_length and lastdocid.

Wed Dec 30 00:21:03 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Move frequently repeated code for updating the freq_deltas and
	  mod_plists items into separate functions.  Makes the code
	  considerably clearer, and prepares the way for applying the patch
	  to fix ticket #250.

Wed Dec 30 00:07:33 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Add a few more sequences of operations
	  which look worth testing, after looking at the code implementing
	  replace_document().

Tue Dec 29 22:29:08 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Check consistency of the posting lists
	  with the termlists, and consistency of the statistics, at each
	  step of modtermwdf1.  Also, add some other terms to the document,
	  so we can check the stored doclength for terms which haven't been
	  modified.

Sun Dec 27 14:56:16 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_modifiedpostlist.cc,
	  backends/flint/flint_modifiedpostlist.cc: Report the wdf from the
	  modifications, rather the sum of the wdf from the modifications
	  and the old wdf.  The old behaviour was just wrong, but we had no
	  test coverage for this until the last commit.

Sun Dec 27 13:34:06 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Add test of the contents of the
	  postlist of a term which is being modified.  Also, tidy up the
	  output of docterms_to_string() to skip any empty position lists.

Sat Dec 26 19:21:19 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Extend test to cover removing a term but
	  not deleting it, and finally deleting the document.

Thu Dec 24 19:18:41 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Expand test to cover some modification
	  to the positional information.

Thu Dec 24 19:06:32 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Add some more sets of modification
	  operations to the tests.

Thu Dec 24 18:55:37 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_replacedoc.cc: Add test modtermwdf1, which tests a lot
	  more cases where documents are modified.

Thu Dec 24 14:36:38 GMT 2009  Olly Betts <olly@survex.com>

	* tests/: Canonicalise the conditions on testcases.

Thu Dec 24 14:08:59 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Fix typo in last commit.

Thu Dec 24 13:39:28 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Check WritableDatabase::close() during a
	  transaction does *NOT* implicitly call commit().

Thu Dec 24 13:07:09 GMT 2009  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/brass/brass_database.h,
	  backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Fix WritableDatabase::close() to commit() changes (unless a
	  transaction is in progress).
	* tests/api_closedb.cc: Add regression test closedb4.

Wed Dec 23 00:26:34 GMT 2009  Olly Betts <olly@survex.com>

	* backends/brass/brass_database.cc,backends/brass/brass_inverter.cc,
	  backends/brass/brass_inverter.h: For allterms iteration of a
	  WritableDatabase, if a prefix is specified only flush changes for
	  terms with that prefix.  Also, don't flush document lengths for
	  allterms iteration.

Tue Dec 22 22:48:55 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fixed reversed checks for chert and flint being
	  enabled in r13781.

Tue Dec 22 14:20:24 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testrunner.cc: Add brass variants of multi and remote
	  backends.

Tue Dec 22 14:15:43 GMT 2009  Olly Betts <olly@survex.com>

	* bin/: Implement xapian-check and xapian-compact support for brass.

Tue Dec 22 13:41:08 GMT 2009  Olly Betts <olly@survex.com>

	* bin/: Split the chert-specific checking code into a separate file
	  so xapian-check.cc is just the driver code.

Tue Dec 22 12:47:59 GMT 2009  Olly Betts <olly@survex.com>

	* backends/brass/: Add new Inverter class to encapsulate the inversion
	  data structures and associated code.  Instead of carefully iterating
	  modified posting lists and document length lists, just flush the
	  particular list needed to disk and iterate that.  This is much
	  simpler and more obviously free of subtle bugs, and means we don't
	  need to use data structures which allow such iteration.

Tue Dec 22 12:25:04 GMT 2009  Olly Betts <olly@survex.com>

	* backends/brass/,backends/dbfactory.cc,include/xapian/dbfactory.h,
	  include/xapian/valueiterator.h,include/xapian/version_h.cc,
	  tests/harness/Makefile.mk: Fix to actually build brass.  Testsuite
	  doesn't currently all pass.

Tue Dec 22 04:26:17 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,backends/Makefile.mk,backends/brass/,
	  backends/chert/dir_contents,backends/databasereplicator.cc,
	  backends/dbfactory.cc,common/pack.h,configure.ac,docs/,tests/,
	  tests/harness/: Add new development backend called "brass" and
	  promote "chert" to being the stable backend.

Mon Dec 21 09:41:57 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Update comment about
	  MAX_SAFE_TERM_LENGTH to reflect the key format changes.

Mon Dec 21 08:12:55 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alldocsmodifiedpostlist.cc,
	  backends/chert/chert_alldocsmodifiedpostlist.h: Change reference
	  parameter to const reference.

Mon Dec 21 03:19:09 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Replacing a document deleted since the last flush failed to update
	  the collection frequency and wdf, and caused an assertion failure
	  when assertions were enabled.
	* tests/api_backend.cc: Add regression test replacedoc8.

Sun Dec 20 07:26:30 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Divert to AS_MESSAGE_LOG_FD rather than literal fd 5.
	  Divert more output to AS_MESSAGE_LOG_FD rather than /dev/null.

Thu Dec 17 13:53:31 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Dec 17 13:36:54 GMT 2009  Olly Betts <olly@survex.com>

	* Backport change from chert:
	* backends/flint/flint_alltermslist.cc: Tweak to not apply the
	  prefix test in the "at end" case.
	* backends/flint/flint_alltermslist.cc: There's no point checking
	  follow-on chunks match the prefix - the first chunk we'll hit
	  which doesn't match has to be an initial chunk for a term.

Thu Dec 17 11:57:31 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_replacedoc.cc: Fix to test the right variable.

Thu Dec 17 11:16:51 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: The regression test replacedoc5 no longer actually
	  checks for the situation it was written for, due to the shortcutting
	  we now do in flint and chert when replacing a document with itself,
	  so extend it with a check with that behaviour suppressed (fortunately
	  it still passes).

Wed Dec 16 12:03:13 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/,bin/Makefile.mk,common/pack.h: Change the packing
	  of uints and strings into sortable keys in chert databases, which
	  reduces database size by 2.5% in tests.  This means an incompatible
	  change in the chert format.
	* bin/xapian-chert-update.cc: Utility to update a chert database from
	  the old format to the new format.  It works much like xapian-compact
	  so should take a similar amount of time (and results in a compact
	  database).
	* tests/api_wrdb.cc: Adjust the test which checks a string of zero
	  bytes fails in the correct way - 126 zero bytes is now handled, so
	  we need 127 to check the failure mode.

Wed Dec 16 11:52:27 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Ensure that the resultant database has a
	  fresh UUID (previously chert copied the UUID from the first input,
	  while flint didn't set a UUID so one was generated on demand when
	  next requested, if the database is writable.
	* tests/api_compact.cc: Add tests that a UUID is set and that it is
	  different from that of the input.

Wed Dec 16 09:57:27 GMT 2009  Olly Betts <olly@survex.com>

	* examples/quest.cc: If no database is specified, still parse the query
	  and report get_description() on it as this provides a useful way to
	  see how a query parses.

Wed Dec 16 00:40:51 GMT 2009  Olly Betts <olly@survex.com>

	* languages/german.sbl,languages/german2.sbl: Update the german and
	  german2 stemming algorithms to the latest versions from Snowball.
	  These add an extra rule for the "-nisse" ending.

Tue Dec 15 13:08:33 GMT 2009  Olly Betts <olly@survex.com>

	* bin/: Split apart the flint and chert compaction code.  Should be
	  no change in functionality.

Tue Dec 15 10:11:10 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alltermslist.cc: Tweak to not apply the
	  prefix test in the "at end" case.

Tue Dec 15 09:40:19 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alltermslist.cc: There's no point checking
	  follow-on chunks match the prefix - the first chunk we'll hit
	  which doesn't match has to be an initial chunk for a term.

Tue Dec 15 08:24:04 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/: Convert DerefStringWrapper_ to a templated
	  DerefWrapper_ and use it instead of DocIDWrapper and TermPosWrapper.

Tue Dec 15 08:23:08 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Mark Query::Internal as @private for doxygen.

Tue Dec 15 03:59:44 GMT 2009  Olly Betts <olly@survex.com>

	* common/pack.h: Return false not true if
	  unpack_string_preserving_sort() fails.  Add assertions that the
	  source pointer isn't NULL to all the functions.

Tue Dec 15 02:30:24 GMT 2009  Olly Betts <olly@survex.com>

	* examples/delve.cc: Improve phrasing ("unique terms" -> "distinct
	  terms").

Sat Dec 12 13:07:51 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/Makefile.am,tests/api_posdb.cc,tests/api_replacedoc.cc:
	  Split my recently added replacedoc test out into a new file.

Sat Dec 12 12:58:22 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_posdb.cc: Extend test of document modification to cover
	  removing the last term in the document, too.

Sat Dec 12 12:57:43 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Fix comparison of old term with new.

Sat Dec 12 11:30:23 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc,
	  tests/api_posdb.cc: Delete old positionlist chunks in
	  replace_document().  Uncomment part of test which tested this.

Sat Dec 12 04:24:42 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc,
	  common/document.h: If a document is replaced with itself unmodified,
	  we no longer increase the automatic flush counter.
	* tests/api_backend.cc: Add regression test replacedoc7.

Fri Dec 11 19:39:34 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_posdb.cc: Add a basic test of adding a document, and
	  modifying its positions.  Found one bug already, but the line
	  which triggers this is commented out for now so that we don't
	  break the snapshotters until it's fixed.

Fri Dec 11 16:51:22 GMT 2009  Richard Boulton <richard@tartarus.org>

	* common/documentterm.h: Fix some documentation comments which were
	  trivially incorrect or incomplete.

Fri Dec 11 11:05:19 GMT 2009  Richard Boulton <richard@tartarus.org>

	* COPYING_MIT,HACKING: Add details of our policy for accepting
	  patches.  This has informally been true for a while, but it
	  probably helps to tell people about it!

Tue Dec 08 13:15:28 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.h: Fix to build with --enable-assertions.

Tue Dec 08 13:05:36 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/chert/chert_cursor.h,
	  backends/chert/chert_postlist.cc: Add MutableChertCursor subclass of
	  ChertCursor and implement del() there rather than in ChertCursor.
	  This means we can use the C++ type system to track whether we got
	  a const or non-const ChertTable * and so whether it is safe to
	  cast away that const and delete the entry the cursor points to.

Tue Dec 08 12:03:08 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_table.cc,
	  backends/chert/chert_table.h,backends/flint/flint_database.cc,
	  backends/flint/flint_table.cc,backends/flint/flint_table.h,
	  bin/xapian-compact.cc,bin/xapian-inspect.cc: Add empty() method to
	  FlintTable and ChertTable which works completely reliably even if
	  the item count has wrapped.
	* tests/api_closedb.cc: Add closedb3 for coverage of get_doccount() and
	  has_positions().

Tue Dec 08 08:23:12 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.h: Tweak whitespace in comment.

Mon Dec 07 04:56:42 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_synonym.h:
	  Eliminate "size" private member of FlintSynonymTermList which is set
	  but never used.

Mon Dec 07 04:49:54 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_synonym.h:
	  Eliminate "size" private member of ChertSynonymTermList which is set
	  but never used.

Mon Dec 07 04:32:46 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/: Use > 32 bit type to keep count of items in a
	  table.  This fixes misreporting by xapian-check, and in the very
	  unlikely case where the counter has just wrapped to 0, makes
	  xapian-compact not mistakenly think tables are empty and the
	  matcher ignore positional information.

Thu Dec 03 10:08:28 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_compact.cc: Cast character value in string constructor
	  to a char; without this we were getting a stack overflow and
	  general nastiness on i386, which we hypothesise was due to the
	  wrong overload for string() being picked.

Wed Dec 02 23:10:50 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint_lock.cc: Add missing include of xapian/error.h.
	  This was causing the snapshot builder to fail, but worked OK
	  in my tree for reasons I don't understand.

Wed Dec 02 14:30:40 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,
	  backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_database.cc,
	  backends/flint/flint_databasereplicator.cc,backends/flint_lock.cc,
	  backends/flint_lock.h: Factor out 4 copies of the same code to
	  report why Xapian failed to get a lock.

Wed Dec 02 10:05:27 GMT 2009  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/chert/,backends/flint/,
	  backends/flint_lock.cc,backends/flint_lock.h: Factor out a single
	  version of the "flint-compatible locking code" and use it from both
	  flint and chert.

Wed Dec 02 02:49:14 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_compact.cc,tests/apitest.cc,tests/apitest.h,
	  tests/harness/backendmanager.cc,tests/harness/backendmanager.h: Add
	  get_database_path() variant which takes a generator function and use
	  it so that the right database names are used in compactnorenumber1.

Tue Dec 01 12:37:24 GMT 2009  Olly Betts <olly@survex.com>

	* tests/apitest.cc,tests/harness/backendmanager.cc,
	  tests/harness/backendmanager.h: Move generator function variant of
	  get_database() to BackendManager, and tweak it to build the database
	  under a temporary path and rename it once built, to avoid leaving a
	  partial database in place if interrupted.
	* tests/perftest/perftest_matchdecider.cc: Use this mechanism to lazily
	  generate test databases.
	* tests/harness/: Remove the optional name parameter from various
	  BackendManager methods as it was only used by perftest and is no
	  longer needed.

Tue Dec 01 11:00:35 GMT 2009  Olly Betts <olly@survex.com>

	* tests/apitest.cc,tests/apitest.h: Add mechanism for caching databases
	  generated by a function.
	* tests/api_compact.cc: Use it for compactnorenumber1.

Tue Dec 01 10:59:50 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Rename matchfunctor<n> to matchdecider<n> to match
	  current terminology.

Tue Dec 01 10:51:23 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Don't run matchfunctor3 under remote backends as
	  MatchDecider isn't actually supported there (uncovered by recent
	  change to throw UnimplementedError in this case).

Tue Dec 01 09:35:53 GMT 2009  Richard Boulton <richard@tartarus.org>

	* include/xapian/matchspy.h: Remove out-of-date reference to
	  add_slot(), which no longer exists: users are expected to use
	  multiple ValueCountMatchSpies if they need to monitor more than
	  one slot.

Tue Dec 01 08:04:17 GMT 2009  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/api_compact.cc: Add test coverage for
	  xapian-compact --no-renumber with multiple databases.

Tue Dec 01 06:25:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Clean up matchdecider4.

Tue Dec 01 06:12:29 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: A couple more std::string efficiency tips.

Tue Dec 01 05:51:52 GMT 2009  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
	  net/remoteserver.cc: Throw UnimplementedError if a matchdecider or
	  "legacy" matchspy is used with the remote backend.
	* tests/api_backend.cc: Add regression test matchdecider4.

Mon Nov 30 05:42:43 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,common/remoteserver.h,
	  docs/remote_protocol.html,net/remoteserver.cc,tests/api_metadata.cc,
	  tests/harness/testrunner.cc: Add support for
	  WritableDatabase::set_metadata() and Database::get_metadata() to the
	  remote backend (based largely on patch in #178).
	* AUTHORS: Thanks to Paul Rudin for patch.

Thu Nov 26 07:25:15 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Start to update from ChangeLog.

Thu Nov 26 02:26:43 GMT 2009  Olly Betts <olly@survex.com>

	* common/str.cc: Tweak the length calculation for the buffer used by
	  str() when converting integers to strings so that the buffer is
	  exactly the minimum required size for integers of size 1, 2, 4,
	  and 8 bytes, and only a byte extra for 16 byte integers.

Wed Nov 25 05:59:13 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: In the --no-renumber case, just set offset[]
	  entries to zero to start with rather than fixing them up later.

Wed Nov 25 05:49:37 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Extend --no-renumber to support merging
	  databases, but only if they have disjoint ranges of used document
	  ids.

Wed Nov 25 04:37:38 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix typos in --help output.

Wed Nov 25 04:22:26 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Prune unused docids off the end of database
	  when merging multiple databases with renumbering.

Wed Nov 25 03:12:24 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Use string() instead of "" and string(1, '\0')
	  instead of string("", 1).

Wed Nov 25 02:34:10 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc: Fix locking code to work if stdin
	  and/or stdout have been closed.
	* backends/flint/flint_lock.cc: Backport fix to flint.
	* tests/api_backend.cc: Add regression test lockfilefd0or1.

Wed Nov 25 00:59:05 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_lock.cc,
	  backends/chert/chert_lock.h: Add "FDLIMIT" reason code for why
	  locking failing.

Tue Nov 24 12:44:56 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Factor out throwing an exception for docid 0 not
	  being valid.

Tue Nov 24 12:39:10 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_none.cc: Note previous fix was ticket#415.

Tue Nov 24 12:33:12 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix many Xapian::Database methods to behave better
	  on a database with no subdatabases, such as is constructed by
	  Database().
	* tests/Makefile.am,tests/api_nodb.cc,tests/api_none.cc: Expand
	  emptydb_metadata1 to also regression test these other cases, and
	  rename to nosubdatabases1.

Mon Nov 23 14:01:51 GMT 2009  Olly Betts <olly@survex.com>

	* common/debuglog.h: Add "NO_ARGS" which can be used for debug logging
	  when a function or method takes no arguments.  The main advantage
	  over "" is that no extra code is generated for it.
	* api/omdatabase.cc: Convert to use debuglog.h fully.
	* api/matchspy.cc,api/omdatabase.cc: Make use of NO_ARGS.

Mon Nov 23 09:10:55 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc,
	  common/debuglog.cc,common/debuglog.h,common/omdebug.h,configure.ac,
	  matcher/multimatch.cc,queryparser/queryparser.lt: Rename
	  XAPIAN_DEBUG_VERBOSE macro to XAPIAN_DEBUG_LOG to better match the
	  user-visible "--enable-log" configure option which controls it.

Mon Nov 23 08:08:45 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_lock.cc,
	  backends/chert/chert_table.cc,backends/flint/: Use string() or
	  s.resize(0) instead of "".  Use string(1, '\0') instead of
	  string("", 1).

Sun Nov 22 14:20:51 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_postlist.cc: When skipping through a chunk of
	  postings to find the one we want, don't bother to unpack the wdf
	  values we're skipping over, which should save a significant amount
	  of time in certain cases where the profile data shows we spend
	  something like 1/3 of the time in the function where this happens.

Sun Nov 22 13:12:39 GMT 2009  Olly Betts <olly@survex.com>

	* api/matchspy.cc,backends/chert/chert_values.cc,
	  languages/steminternal.cc: Tweak whitespace after while to be
	  consistent.

Sat Nov 21 17:39:23 GMT 2009  Richard Boulton <richard@tartarus.org>

	* backends/chert/chert_values.cc,backends/chert/chert_values.h:
	  Make ValueChunkReader::skip_to() assign the value to a string
	  only when the target has been reached.  Saves a lot of
	  unnecessary string copying - on a benchmark of mydeco data,
	  improves time for 100 queries from 3.66s to 3.10s.

Sat Nov 21 01:13:26 GMT 2009  Olly Betts <olly@survex.com>

	* tests/: Make arrays which don't need to be modified const.

Sat Nov 21 00:01:04 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_matchspy.cc: The default parameter for
	  get_writable_database() is string(), so don't explicitly pass "".

Fri Nov 20 16:19:13 GMT 2009  Richard Boulton <richard@tartarus.org>

	* tests/api_matchspy.cc: Add regression test for underflow in
	  numeric ranges (based on python version in ticket #321).

Fri Nov 20 10:54:08 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/valuestreamdocument.cc: Use check() instead of skip_to() in
	  ValueStreamDocument.

Fri Nov 20 09:57:12 GMT 2009  Olly Betts <olly@survex.com>

	* common/document.h,matcher/: Implement ValueStreamDocument subclass
	  of Xapian::Document::Internal which provides a way to connect up
	  valuestreams to uses of values during the match.  Other
	  (non-recommended) uses of the Document passed to MatchDecider, etc
	  are passed through to a lazily created backend Document::Internal
	  subclass.  This should be a lot more efficient for chert.  It's
	  unclear how it will affect performance for backends which don't store
	  values in streams - profiling is required.

Fri Nov 20 02:35:14 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_document.cc: Fix closedb1 on InMemory
	  backend, broken by recent commit.

Thu Nov 19 12:03:52 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_valuelist.cc: Fix to handle the case where all
	  the sublists turn out to be empty when we first call next().

Thu Nov 19 11:12:53 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/: Set the document data and values lazily for the
	  inmemory backend too.  They're much less costly to fetch than if
	  a disk access may be needed, but it avoids a copy of the respective
	  data if they aren't needed, and either could potentially be large.
	  Consistency here also makes things easier to understand.

Thu Nov 19 08:47:24 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Prefer string() to "".

Thu Nov 19 07:38:29 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/multi/Makefile.mk,
	  backends/multi/multi_valuelist.cc,common/Makefile.mk,
	  common/multivaluelist.h,tests/api_valuestream.cc: Implement support
	  for iterating valuestreams for multidatabases.

Thu Nov 19 06:19:05 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Rework the checking of postlist chunks into
	  a cleaner approach which should report errors better, and
	  eliminate the (probably) impossible "did might not be initialised"
	  path which GCC 4.2 spotted.

Thu Nov 19 01:15:03 GMT 2009  Olly Betts <olly@survex.com>

	* common/pack.h: Remove incorrect assertion and document what NULL
	  parameter value means in this case.

Wed Nov 18 16:33:01 GMT 2009  Richard Boulton <richard@tartarus.org>

	* bin/xapian-check.cc: Fix compiler warning (with gcc-4.2) that did
	  could be used uninitialised: it couldn't be, but it's hard for a
	  compiler to see that.

Wed Nov 18 12:48:17 GMT 2009  Richard Boulton <richard@tartarus.org>

	* AUTHORS: Update my email address.

Wed Nov 18 12:21:09 GMT 2009  Olly Betts <olly@survex.com>

	* common/valuelist.h: Fix internal documentation comment.

Wed Nov 18 10:40:54 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Use <cstdlib>, <cmath>, <cstdio>, <cstring> for
	  configure tests since we use these forms in the code and want
	  consistency between what configure tests and what the code
	  uses.
	* NEWS,configure.ac: Update for 1.1.3.

Wed Nov 18 10:39:59 GMT 2009  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from 1.0.17.

Wed Nov 18 10:31:49 GMT 2009  Olly Betts <olly@survex.com>

	* INSTALL: Improve text about zlib dependency.

Wed Nov 18 10:13:59 GMT 2009  Olly Betts <olly@survex.com>

	* INSTALL: Note the package to install for building against libuuid on
	  Fedora, and note that libuuid isn't required on Microsoft Windows.

Wed Nov 18 02:34:30 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.0.17 and ChangeLog.

Mon Nov 16 08:35:52 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix interaction of FLAG_PARTIAL and
	  FLAG_SYNONYM.  (ticket#407)
	* tests/Makefile.am,tests/api_qpbackend.cc: Add regression test
	  qpsynonympartial1.

Mon Nov 16 02:15:14 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Add "using namespace std;" and drop
	  the explicit std:: qualifiers.

Fri Nov 13 02:27:48 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_spelling.h,backends/chert/chert_table.h,
	  backends/flint/flint_spelling.h,backends/flint/flint_table.h,
	  common/getopt.cc,common/stringutils.h,languages/steminternal.h:
	  Add missing std:: qualifiers for functions in <cstring>, <cstdlib>,
	  etc.

Fri Nov 13 02:25:50 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Add
	  "using namespace std;" and drop the explicit std:: qualifiers.

Fri Nov 13 02:11:18 GMT 2009  Olly Betts <olly@survex.com>

	* common/str.cc: Use assignment to initialise a size_t - the current
	  code was turning a missing snprintf() prototype into a confusing
	  error message with Sun's C++, and is less clear anyway.

Fri Nov 13 02:03:28 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,backends/chert/chert_lock.cc,backends/flint/flint_lock.cc,
	  backends/remote/remote-database.cc,net/remoteserver.cc,
	  net/tcpserver.cc,tests/harness/backendmanager_remotetcp.cc,
	  tests/harness/testsuite.cc: Sun C++'s <csignal> (not unreasonably)
	  excludes non-ISO-C functions which are in <signal.h> - for example,
	  kill() (which POSIX specifies).  So revert <csignal> to <signal.h>
	  and document this as a global exception.

Thu Nov 12 08:30:07 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/collapser.h: Remove spurious comma after last entry in enum,
	  which Sun's C++ compiler warns about.

Thu Nov 12 00:24:55 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Sorter -> KeyMaker in an exception message.

Thu Nov 12 00:01:55 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Tweak documentation comments about
	  committing changes.

Wed Nov 11 12:23:48 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of a group of stopwords
	  which notably caused issues when default_op was OP_AND, but could
	  probably manifest in other cases too.  Fixes ticket#406.
	* tests/queryparsertest.cc: Add regression test qp_stopword_group1.

Wed Nov 11 10:54:58 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_version.h,common/safeuuid.h: Fix workaround for
	  uuid.h headers which lack const to actually work on Solaris.

Wed Nov 11 10:53:50 GMT 2009  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Need to ship new pack.h header.

Tue Nov 10 22:27:47 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fix compiler warning introduced by previous
	  change.

Tue Nov 10 12:24:34 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/,bin/xapian-check.cc,common/pack.h: Rewrite the
	  packing and unpacking functions more efficiently.  As well as being
	  generally faster, the pack functions now take a reference to a string
	  to append to, which avoids creating a lot of temporary string
	  objects.  Indexing HTML files with omindex is 5-10% faster.
	  Searching for "The" on gmane (which results in a lot of unpacking of
	  postings and document lengths) is about 35% faster.  (ticket#326)

Thu Nov 05 03:55:37 GMT 2009  Olly Betts <olly@survex.com>

	* common/safeuuid.h: Fix to work with uuid libraries which lack const
	  qualifiers.  Fixes build failure on Solaris.

Thu Nov 05 00:15:24 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update details of debian packaging.

Wed Nov 04 04:11:38 GMT 2009  Olly Betts <olly@survex.com>

	* common/output.h: Use C++ syntax for NULL with a type in log output.

Wed Nov 04 04:02:09 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Avoid trivial memory leak.

Wed Nov 04 00:13:00 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Reword to avoid somewhat ambiguous "this
	  method".

Tue Nov 03 12:12:09 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Make it more clear that you need to
	  add the unique term to the document if you want to use
	  replace_document() to use external unique IDs for documents.

Tue Nov 03 06:08:43 GMT 2009  Olly Betts <olly@survex.com>

	* tests/generate-api_generated: Update MultiValueSorter to
	  MultiValueKeyMaker.

Tue Nov 03 05:51:23 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_sorting.cc,tests/api_sortingold.cc: Fix changesorter1 and
	  oldchangesorter1 to not be run for the remote backend where they will
	  now fail with UnimplementedError.

Tue Nov 03 02:43:12 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Xapian::Sorter isn't supported with the remote
	  backend so throw UnimplementedError rather than giving incorrect
	  results.  (ticket#384)
	* tests/api_sorting.cc: Add sortfunctorremote1 test this exception is
	  actually thrown.

Tue Nov 03 01:26:57 GMT 2009  Olly Betts <olly@survex.com>

	* common/database.h: Fix vertical whitespace glitch.

Mon Nov 02 08:10:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Check that internal is not empty before
	  referencing its first element, in get_metadata() and
	  metadata_keys_begin(), to avoid a potential segfault.
	* tests/api_nodb.cc: Add emptydb_metadata1, a regression test for
	  this bug.

Sun Nov 01 22:10:54 GMT 2009  Olly Betts <olly@survex.com>

	* examples/delve.cc,examples/quest.cc: Extend exception handling to the
	  whole of main.  Xapian::Stem("english") can't actually throw, but
	  that's not obvious to static analysis tools, and it is more robust
	  to wrap the whole of main, and reduces indentation.

Sun Nov 01 21:27:05 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add missing exception catch for const char *.
	  The only case which currently throws this is an "impossible"
	  situation, but if we're going to check for it, the reporting of
	  failure should actually work.  Identified by Coverity's Scan.

Sun Nov 01 07:56:38 GMT 2009  Olly Betts <olly@survex.com>

	* examples/quest.cc: Tighten up the type of the error we catch to
	  detect an unknown stemming language.

Sat Oct 31 07:16:11 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sat Oct 31 06:59:19 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix deprecation warnings when building with
	  recent GCC.

Sat Oct 31 02:46:04 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add another test query string to cover a
	  case we didn't previously check.

Tue Oct 27 00:42:59 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Don't
	  try to close the fd one more than the maximum allowable.
	  (ticket#408)
	* AUTHORS: Add Carl Worth for the patch.

Mon Oct 05 09:00:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Mention e2fsprogs-devel in the message thrown up by
	  configure, too.

Mon Oct 05 08:53:05 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Note the command needed to get the uuid library
	  installed on fedora, since it's rather non-obvious.

Sat Oct 03 20:11:48 GMT 2009  Olly Betts <olly@survex.com>

	* unicode/tclUniData.cc: Update Unicode character database to Unicode
	  5.2.  (ticket#351)
	* tests/api_unicode.cc: Add tests for some characters added in Unicode
	  5.2.

Thu Oct 01 21:19:34 GMT 2009  Olly Betts <olly@survex.com>

	* xapian-config.in: Need to quote ^ for Solaris /bin/sh.

Fri Sep 18 13:23:00 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Actually use any flags we determine are needed to
	  switch the compiler to proper ANSI C++ mode, when building
	  xapian-core - this stopped working in 1.0.12, breaking support for
	  HP's aCC, Compaq's cxx, Sun's CC, and SGI's CC.

Fri Sep 18 12:40:37 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h: Mark ValueCountMatchSpy, NumericRange,
	  NumericRanges, and score_evenness() as experimental.

Fri Sep 18 08:36:34 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/weight.h,weight/weight.cc: Remove default
	  implementation of Weight::clone() which returns NULL - we always
	  need clone() to be implemented because it's called for every term
	  in the query, not just used for the remote backend.

Fri Sep 18 08:02:08 GMT 2009  Olly Betts <olly@survex.com>

	* api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h: Mark
	  and document the matchspy parameter of Enquire::get_mset() as
	  deprecated in favour of the new MatchSpy class and
	  Enquire::add_matchspy().

Fri Sep 18 07:58:11 GMT 2009  Olly Betts <olly@survex.com>

	* tests/perftest/perftest_matchdecider.cc: Don't pass default values
	  for optional parameters to Enquire::get_mset().

Fri Sep 18 02:36:43 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: If FLAG_PARTIAL is specified, don't
	  try to spell correct a term at the end of the query which we attempt
	  to expand as partial.
	* tests/queryparsertest.cc: Add regression test qp_spellpartial1.

Fri Sep 18 02:33:55 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: For testcase qp_spellwild1: Fix the dbdir
	  to qp_spellwild1 to match the testname;  Fix the ordering of
	  TESTCASE macros to match the order of the test functions;  Note that
	  this is a regression test and the versions the bug will be fixed in.

Fri Sep 18 01:25:37 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix to work with the old scoping rules for
	  variables declared in for().

Thu Sep 17 19:17:30 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Don't apply spelling correction
	  to wildcard terms if FLAG_WILDCARD and FLAG_SPELLING_CORRECTION
	  are both specified.
	* tests/queryparsertest.cc: Add qp_spellwild1 as a test for this.

Thu Sep 17 12:08:17 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Sep 17 10:20:35 GMT 2009  Olly Betts <olly@survex.com>

	* api/keymaker.cc: Implement Richard's idea of not encoding any
	  trailing, forward sorted, empty values which is a generalisation
	  of encoding all forward sorted, empty values as an empty string.
	* tests/api_sorting.cc: Add new testcase multivaluekeymaker1 to
	  check encodings are as expected.

Thu Sep 17 07:15:10 GMT 2009  Olly Betts <olly@survex.com>

	* api/,common/multimatch.h,common/omenquireinternal.h,
	  docs/deprecation.rst,docs/sorting.rst,include/Makefile.mk,
	  include/xapian.h,include/xapian/enquire.h,include/xapian/keymaker.h,
	  include/xapian/sorter.h,matcher/multimatch.cc,tests/Makefile.am,
	  tests/api_sorting.cc,tests/api_sortingold.cc: Rename Sorter to
	  KeyMaker, paving the way for using it to build collapse keys too.
	  Resolve the inconsistency in MultiValueSorter::add()'s "forward"
	  parameter by replacing it with MultiKeyMaker::add_value() with a
	  "reverse" parameter.  (ticket#359)

Thu Sep 17 07:13:25 GMT 2009  Olly Betts <olly@survex.com>

	* api/valuesetmatchdecider.cc,include/xapian/valuesetmatchdecider.h:
	  Inline trivial constructor from header.  Add explicit '#include
	  "xapian/document.h"'.

Thu Sep 17 05:22:50 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Document how to use the XAPIAN_DEPRECATED() macro to
	  mark a class as deprecated.

Wed Sep 16 02:40:13 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Eliminate a couple of assertions which can never fire.

Sat Sep 12 04:05:35 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/msetpostlist.cc: Fix MSetPostList not to read off the end of
	  the MSet if get_maxweight() is called when at_end().  This can
	  happen but the testcase was too large to send so sadly no
	  regression test I'm afraid.

Sat Sep 12 03:41:04 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: Fix code to find the first docid in
	  the net chunk (ticket#399).
	* tests/api_backend.cc: Add regression test from Rich Lane.

Fri Sep 11 11:14:49 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/,bin/xapian-check.cc,bin/xapian-compact.cc: Add
	  support for chert databases without a termlist table (ticket#181).
	  Currently the only way to create such a database is to create a
	  chert database and do "rm termlist.*".

Fri Sep 11 10:07:35 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Don't report an absent lazy input table as 0
	  size.

Fri Sep 11 03:17:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.h: Improve documentation of "handle"
	  member.

Thu Sep 10 13:24:29 GMT 2009  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.1.m4: Report the default xapian-config
	  basename in configure's --help output.

Thu Sep 10 12:55:48 GMT 2009  Olly Betts <olly@survex.com>

	* m4-macros/xapian-1.1.m4: Add optional third parameter to
	  XO_LIB_XAPIAN which specifies the basename for the "xapian-config"
	  script (defaults to "xapian-config" to give the current behaviour).

Thu Sep 10 06:39:17 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update with changes in 1.0.16 and from ChangeLog.

Thu Sep 10 02:17:56 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Clarify the documentation comments for
	  QueryParser::set_default_op() and QueryParser::get_default_op().

Wed Sep 09 13:36:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andmaybepostlist.cc,tests/Makefile.am,tests/api_queryopt.cc:
	  Back out patch from r13440 which introduced a new optimisation
	  for AND_MAYBE when the maximum weight of the RHS becomes zero,
	  due to various undesirable side effects.  I've put the patch into
	  ticket #400 with an explanation.

Wed Sep 09 01:54:05 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_postlist.cc,tests/api_backend.cc: Fix
	  WritableDatabase::get_doclength() to work properly after a call to
	  commit for the chert backend (ticket#397).

Wed Sep 09 00:28:09 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add Dmitry Liakh for fix for #398.

Wed Sep 09 00:02:47 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Fix a
	  typo which stopped this fix in 1.0.12 from working (ticket #398):

	  If we fail to get the lock after we spawn the child lock process
	  (the common case is because the database is already open for
	  writing) then we now clean up the child process properly.

Fri Sep 04 11:24:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/categorisation.rst: Remove out-of-date call to get_mset()
	  which passed a MatchSpy in - spies are now set with
	  add_matchspy() before get_mset() is called.

Thu Sep 03 00:29:27 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andmaybepostlist.cc: For AndMaybe, if the RHS has a
	  maximum possible weight of 0, we now decay to just the LHS.
	* tests/Makefile.am,tests/api_queryopt.cc: Test coverage that this
	  optimisation doesn't break anything.

Tue Sep 01 12:04:13 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Send stderr output from ldconfig to config.log.

Tue Sep 01 10:35:51 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS,common/safeuuid.h: Fix uuid_unparse_lower() replacement for
	  older libuuid to actually compile (really fixes ticket#368).

Mon Aug 31 05:58:55 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.15.

Mon Aug 31 05:48:13 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Start to format entries for 1.1.3.

Mon Aug 31 04:14:58 GMT 2009  Olly Betts <olly@survex.com>

	* PLATFORMS: Sync with 1.0.15.

Mon Aug 31 01:30:01 GMT 2009  Olly Betts <olly@survex.com>

	* common/getopt.cc: Use USE_GLIBC_GNUGETOPT from gnu_getopt.h rather
	  than repeating the conditionals used to determine it here.  Rename
	  __getopt_initialized to getopt_initialized and make it static.
	  Rename _getopt_initialize() to getopt_initialize().

Mon Aug 31 01:24:29 GMT 2009  Olly Betts <olly@survex.com>

	* common/gnu_getopt.h: Update (C) dates.  Markup file description for
	  doxygen.  Fix comment reference to ctype.h as we now use <cctype>.

Sun Aug 30 23:28:25 GMT 2009  Olly Betts <olly@survex.com>

	* common/gnu_getopt.h: Make optarg, optind, opterr, and optopt extern
	  "C" to avoid linkage clash with these symbols on Mac OS X 10.6.

Thu Aug 27 03:05:33 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Add note to document the reason for any exceptions to the
	  rule to use C++ forms of ISO C headers.

Wed Aug 26 13:07:07 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS,INSTALL,docs/install.html: Drop .php from xapian.org URLs.

Wed Aug 26 12:58:51 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update URLs.  Remove duplicated text about updating RoadMap
	  from the release checklist.

Wed Aug 26 10:56:07 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Update various URLs.

Tue Aug 25 01:52:51 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix not to report heaps of bogus errors
	  under valgrind 3.5.0.

Mon Aug 24 02:19:06 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Also update the documentation comment for
	  set_sort_by_relevance_then_value() to mention sortable_serialise().

Fri Aug 21 14:35:35 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am: Add generate-exceptions to EXTRA_DIST - was missing
	  from tarballs.

Fri Aug 21 12:21:59 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Add Michael Vogt, who suggested adding a comment about
	  sortable_serialise to set_sort_by_value().

Fri Aug 21 12:14:13 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/enquire.h: Update documentation comments for
	  set_sort_by_value() and set_sort_by_value_then_relevance() to
	  mention sortable_serialise() as a good way to store values if you
	  want to sort by them.

Mon Aug 17 16:51:10 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: When sorting by non-pure-relevance, ensure
	  that the document is shown to the matchspy even if it couldn't
	  get in the mset.
	* tests/api_matchspy.cc: Extend matchspy4 to include a regression
	  test for this.

Mon Aug 17 11:51:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Add overload for
	  score_evenness to allow a NumericRanges object to be passed to
	  it.

Mon Aug 17 07:36:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Replace
	  build_numeric_ranges() function with a NumericRanges object,
	  whose constructor is passed the values and which exposes the
	  calculated ranges via a getter.
	* tests/api_matchspy.cc: Update tests to use new NumericRanges
	  object instead of build_numeric_ranges().

Wed Aug 12 17:33:53 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am: Fix generate-exceptions change to work in a VPATH
	  build.

Wed Aug 12 15:57:44 GMT 2009  Olly Betts <olly@survex.com>

	* exception_data.pm: Add new SerialisationError.
	* common/serialise-double.cc: Throw SerialisationError or InternalError
	  instead of NetworkError.

Wed Aug 12 15:19:05 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,generate-exceptions,generate-exceptions.in:
	  It's not very useful to be able to run generate-exceptions outside
	  the build system, and it only gets the #! line substituted, so just
	  move those runes into Makefile.am and reduce the number of files that
	  configure needs to generate by one.

Mon Aug 10 13:25:22 GMT 2009  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Use <cfloat> and <cmath> rather than <float.h> and
	  <math.h> (regression from merging the matchspy branch).

Mon Aug 10 13:01:57 GMT 2009  Olly Betts <olly@survex.com>

	* api/,bin/xapian-tcpsrv.cc,common/,docs/postingsource.rst,
	  docs/serialisation.rst,include/Makefile.mk,include/xapian.h,
	  include/xapian/,net/remoteserver.cc,tests/: Rename
	  SerialisationContext to Registry.

Mon Aug 10 11:23:23 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Start to update from ChangeLog.

Mon Aug 10 10:29:13 GMT 2009  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/weight.h,matcher/localmatch.cc:
	  Make Weight::clone() public, and remove Weight::clone_() as it is
	  no longer required.

Mon Aug 10 07:55:04 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add section on ordering of include files, and fix a few
	  formatting issues to make this file into valid restructured text
	  again.

Mon Aug 10 06:55:45 GMT 2009  Olly Betts <olly@survex.com>

	* api/serialisationcontext.cc,common/serialisationcontextinternal.h:
	  Refactor to use a template function to implement the exception safe
	  approach I implemented for PostingSource, and use it for MatchSpy
	  and Weight too.
	* tests/api_serialise.cc: Add tests for exception safety of MatchSpy
	  and Weight with SerialisationContext.

Mon Aug 10 06:15:23 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/weight.h,weight/weight.cc: Add default implementations
	  of Weight methods name(), serialise(), unserialise(), and clone() for
	  consistency with PostingSource and MatchSpy.

Mon Aug 10 03:29:12 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: Tweak header include order.

Tue Aug 04 15:49:54 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Explicitly document that an empty
	  prefix argument to QueryParser::add_prefix() means "no prefix".

Tue Aug 04 13:11:26 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Throw UnimplementedError rather than
	  InvalidOperationError from PostingSource::serialise() and
	  PostingSource::unserialise() for consistency with MatchSpy.
	* include/xapian/postingsource.h: Document this behaviour (previously
	  we didn't say what the default implementation actually did).
	* tests/api_serialise.cc: Add test coverage.

Mon Aug 03 11:40:31 GMT 2009  Olly Betts <olly@survex.com>

	* api/serialisationcontext.cc: Fix to handle the clone() method or dtor
	  of a PostingSource subclass throwing exceptions.
	* tests/api_serialise.cc: Add new testcase serialisationcontext1 as a
	  regression test for this.

Mon Aug 03 06:40:28 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_serialise.cc: Fix copy-and-pasted @brief.

Sun Aug 02 16:21:54 GMT 2009  Olly Betts <olly@survex.com>

	* common/remoteprotocol.h: Correction: protocol version 33 will debut
	  in 1.1.3 not 1.1.4.

Sun Aug 02 16:20:28 GMT 2009  Olly Betts <olly@survex.com>

	* docs/remote_protocol.html: Update to document protocol version 33.

Sun Aug 02 16:17:24 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,net/remoteserver.cc: We were
	  ignoring any trailing junk after the matchspies in MSG_GETMSET, so
	  change to not send a count of them and just unpack until we run out
	  of data.

Sun Aug 02 15:47:30 GMT 2009  Olly Betts <olly@survex.com>

	* common/remoteprotocol.h: Note the versions in which recent protocol
	  versions were introduced.

Sun Aug 02 15:09:13 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/serialise.h,
	  net/remoteserver.cc,net/serialise.cc: Put the serialised MSet last in
	  REPLY_RESULTS as then it doesn't need to know its own length (so the
	  encoding is the same size it used to be in the non-matchspy case),
	  and we avoid having to check for there being "junk" data left over
	  after unserialising.

Sun Aug 02 14:39:18 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/remotesubmatch.h: Fix to build with GCC 4.4.1.

Sun Aug 02 14:27:44 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Don't assign a temporary string
	  object.

Sun Aug 02 13:50:14 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h: Add missing documentation comments.

Sun Aug 02 12:15:43 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	Merge from matchspy branch.
	* api/,backends/remote/remote-database.cc,common/,docs/Makefile.am,
	  docs/categorisation.rst,include/Makefile.mk,include/xapian.h,
	  include/xapian/enquire.h,include/xapian/matchspy.h,
	  include/xapian/serialisationcontext.h,matcher/multimatch.cc,
	  matcher/remotesubmatch.cc,matcher/remotesubmatch.h,
	  net/remoteserver.cc,net/serialise.cc,tests/Makefile.am,
	  tests/api_matchspy.cc: Add new-style Xapian::MatchSpy class,
	  which is a pure "spy" class, rather than being able to take a
	  decision on whether a spy is applied before or after a result.
	  This class is also designed to work with remote databases,
	  passing the results back in serialised form.  Also, add
	  ValueCountMatchSpy, which counts the occurrences of each value in
	  a slot in the search results seen (useful for faceted or
	  categorisation systems).

Fri Jul 31 12:50:57 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_backend.cc,tests/api_wrdb.cc: Move new test
	  modifiedpostlist1 from api_wrdb.cc to api_backend.cc - we're trying
	  not to make api-wrdb.cc any larger.  Also note the ticket number and
	  the release this will be fixed in.

Thu Jul 30 16:30:06 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_modifiedpostlist.cc: Fix ChertModifiedPostList
	  to skip added-but-then-deleted-before-flush documents.  (ticket#392)
	  backends/flint/flint_modifiedpostlist.cc: Same fix for flint.
	* tests/api_wrdb.cc: Add regression test modifiedpostlist1.
	* AUTHORS: Add Rich Lane for patch.

Wed Jul 29 09:44:15 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed Jul 29 09:29:45 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/valueiterator.h: Fix typos ("again" -> "and").

Wed Jul 29 06:18:41 GMT 2009  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Actually distribute testdata/apitest_declen.txt
	  - new test data from the postingsources branch merge.

Tue Jul 28 16:38:55 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	Merge from postingsources branch:
	* tests/generate-api_generated: Test get_description() methods of
	  Xapian::PostingSource subclasses.

Tue Jul 28 16:35:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	Merge from postingsources branch:
	* api/Makefile.mk,api/decvalwtsource.cc,api/serialisationcontext.cc,
	  include/xapian/postingsource.h: Add
	  DecreasingValueWeightPostingSource class, which reads weights
	  from a value slot in which a significant range of the values are
	  in decreasing order.  This functions similarly to
	  ValueWeightPostingSource, but can be much more efficient.
	* tests/api_valuestream.cc,tests/testdata/apitest_declen.txt:
	  Tests, and some associated constructed test data, for
	  DecreasingValueWeightPostingSource.

Mon Jul 27 04:50:45 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Now using autoconf 2.64.

Mon Jul 27 04:46:17 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Add note about preferring std::string::assign(), and also
	  one about building up strings using +=.

Mon Jul 27 04:45:15 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/chert/chert_utils.h,
	  backends/flint/flint_lock.cc,backends/flint/flint_utils.h,
	  backends/remote/remote-database.cc: Use std::string::assign() rather
	  than constructing a temporary string object to assign.

Sun Jul 26 16:08:10 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Update for bugs fixed in 1.0.14.

Sun Jul 26 16:03:54 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update the release checklist.

Sun Jul 26 14:28:25 GMT 2009  Olly Betts <olly@survex.com>

	* docs/doxygen_source.conf.in: Update roughly in-line with apidoc
	  changes.  I've not looked at the output much though.

Sun Jul 26 14:00:14 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Remove documentation comment for namespace
	  Xapian - this is now documented in xapian.h.

Sun Jul 26 13:59:42 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Add documentation comment for namespace
	  Unicode.

Sun Jul 26 13:58:44 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/dbfactory.h: Add documentation comments for the
	  backend namespaces (InMemory, etc).

Sun Jul 26 13:57:29 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Add documentation comments for the
	  generated version.h, and all the preprocessor defines it contains.

Sun Jul 26 13:56:15 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian.h: Consistently say "linked with" rather than "linked
	  to" in some cases.  Put documentation comment for namespace Xapian
	  in this file.

Sun Jul 26 13:06:45 GMT 2009  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in: More fettling to try to get better output:
	  + Wrap long comments.
	  + Quote arguments containing @...@ substitutions as they could
	    conceivably contain spaces.
	  + ALWAYS_DETAILED_SEC = NO: since a detailed section with no extra
	    information is pointless.
	  + STRIP_FROM_PATH, INCLUDE_PATH: Add "@top_builddir@/include" for
	    VPATH builds.
	  + HIDE_UNDOC_MEMBERS = YES: otherwise @internal members show up
	    (with no documentation).
	  + HIDE_FRIEND_COMPOUNDS = YES: as friend declarations in the API
	    headers are implementation details.
	  + SHOW_INCLUDE_FILES = NO: users should just include <xapian.h>
	    for all their API needs.
	  + GENERATE_TODOLIST, GENERATE_TESTLIST, GENERATE_BUGLIST: all set to
	    NO as we don't want these in the API documentation.
	  + SHOW_NAMESPACES = YES: We have several sub-namespaces so these are
	    useful to document.
	  + INPUT: Prepend "@top_builddir@/include/xapian/version.h" so that
	    XAPIAN_HAS_FLINT_BACKEND, etc are defined before parsing other
	    headers.
	  + EXCLUDE: remove all entries and use EXCLUDE_PATTERNS instead.
	  + EXCLUDE_PATTERNS: Include entries corresponding to those in EXCLUDE
	    and add */derefwrapper.h and */.* (the latter avoids trying to look
	    in .svn or any other hidden files or directories).
	  + REFERENCES_LINK_SOURCE = NO: Improves output.
	  + VERBATIM_HEADERS = NO: The verbatim headers aren't very
	    interesting.
	  + PREDEFINED: Define XAPIAN_VISIBILITY_DEFAULT and
	    XAPIAN_DEPRECATED(D)=D as doxygen seem reluctant to parse included
	    files.
	  + EXPAND_AS_DEFINED: Remove XAPIAN_VISIBILITY_DEFAULT and
	    XAPIAN_DEPRECATED as these are now handled by PREDEFINED.
	  + EXTERNAL_GROUPS = NO, GROUP_GRAPHS = NO: We don't use groups so
	    disable these.

Sun Jul 26 10:14:32 GMT 2009  Olly Betts <olly@survex.com>

	* docs/doxygen_api.conf.in,docs/doxygen_source.conf.in: Change
	  @PACKAGE@ to @PACKAGE_NAME@ and @VERSION@ to @PACKAGE_VERSION@ to
	  reflect modern autotools usage.

Fri Jul 24 16:23:31 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac,docs/: Rename doxygen configuration files from "_conf"
	  to ".conf".  Rename doxygen_full.conf to doxygen_source.conf, etc.

Fri Jul 24 16:02:39 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update to note that doxygen is now installed in-tree, and
	  that we now use 1.5.9 for 1.1.x snapshots and releases, and that
	  graphviz ">1.8.10" is now required.

Fri Jul 24 16:01:31 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/: Documentation comment tweaks.

Fri Jul 24 15:34:03 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Fix @param names to match parameter names.

Fri Jul 24 15:33:12 GMT 2009  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in: Major doxygen config overhaul:
	  + STRIP_FROM_PATH: Strip include from header names.
	  + JAVADOC_AUTOBRIEF: Re-enable as we have lost most of our brief
	    descriptions - we can fix up the few cases where this caused
	    problems with an explicit @brief.
	  + BUILTIN_STL_SUPPORT: Enable for slightly STL-related stuff.
	  + DISTRIBUTE_GROUP_DOC: Enable so group members get the group's
	    comments.
	  + EXTRACT_STATIC, EXTRACT_LOCAL_CLASSES: Disable since we don't
	    need these.
	  + SHOW_NAMESPACES: Disable to hide the "Xapian" namespace.
	  + QUIET: Enable for less doxygen chatter.
	  + WARN_LOGFILE: Unset so warnings go to stderr to encourage us to
	    actually fix them!
	  + EXCLUDE: Hide base.h, deprecated.h, errordispatch.h, visibility.h.
	  + HTML_DYNAMIC_SECTIONS: Enable so the class diagrams are hidden by
	    default but can be "expanded" to be viewed.
	  + COLLABORATION_GRAPH: Disable as these don't ever seem useful in
	    the API docs.
	  + TEMPLATE_RELATIONS: Disable as we don't want to see template
	    instantiations in inheritance diagrams.
	  + DOT_MULTI_TARGETS: Enable for faster dot processsing.  Needs
	    graphviz ">1.8.10", but that's really old now.

Fri Jul 24 13:00:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Fix to work with the metainfo key stored
	  in the latest format of chert databases.

Fri Jul 24 10:32:32 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: Avoid doing pointless work by trying
	  to delete non-existent lists of values when we're just adding
	  documents.

Fri Jul 24 05:32:34 GMT 2009  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in: Update with "doxygen -u" using doxygen
	  1.5.9 and then trim trailing whitespace.

Thu Jul 23 04:10:49 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.1.2.

Wed Jul 22 13:58:13 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Prefer += to + for
	  building up strings.

Wed Jul 22 09:01:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Check result of
	  ::open() for -1, and throw an error immediately if this happens,
	  rather than leaving it to a later call to fail with EBADF.
	  Should make it easier to diagnose problems, since we'll now see
	  the reason that the open() failed.

Tue Jul 21 17:08:41 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and sync with 1.0.14.

Mon Jul 20 04:48:32 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Fix build with assertions enabled.

Mon Jul 20 04:47:33 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Update doc comment - OP_SYNONYM can take any
	  number of subqueries too.

Sun Jul 19 17:26:53 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h,matcher/localmatch.cc:
	  Remove wqf member of Xapian::Query::Internal and store the wqf in
	  the parameter member instead.  (ticket#280)

Sun Jul 19 17:24:02 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h: Remove unused
	  method Xapian::Query::Internal::swap().

Sun Jul 19 16:22:01 GMT 2009  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc,include/xapian/queryparser.h: Move support for
	  a prefix/suffix from NumberValueRangeProcessor to
	  StringValueRangeProcessor, and change NumberValueRangeProcessor and
	  DateValueRangeProcessor to inherit from StringValueRangeProcessor so
	  all three now support a prefix/suffix.  (ticket#220)
	* tests/queryparsertest.cc: Add test coverage for new features.

Sun Jul 19 16:05:04 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Reenable tests which require the inmemory
	  backend to be enabled by fixing typo XAPIAN_HAS_BACKEND_INMEMORY ->
	  XAPIAN_HAS_INMEMORY_BACKEND.

Sun Jul 19 14:56:16 GMT 2009  Olly Betts <olly@survex.com>

	* api/documentvaluelist.cc: Use str() instead of om_tostring().

Sun Jul 19 14:42:15 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/msetcmp.cc: Eliminate two more relocations.

Sun Jul 19 13:46:08 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Factor out "is_distributable()" function.

Sun Jul 19 11:11:06 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Fix "dummy" -> "dummy[]" so the code
	  here is valid C - we only preprocess it, but since the reason for
	  having the dummy stuff at all is to avoid problems with "smart"
	  preprocessors which moan if the code isn't valid, this seems worth
	  fixing.

Sun Jul 19 10:21:41 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Backport the previous change to
	  flint.

Sun Jul 19 08:04:48 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Instead of dynamically building a
	  std::list of the leafnames we need to replicate, just list them in a
	  compact format in the source file.  Results in smaller code and
	  should be faster and smaller at runtime.

Sat Jul 18 17:12:58 GMT 2009  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Merge among table entries which are
	  substrings of others in the same among.  We could be much cleverer
	  and merge between amongs, and allow overlaps, etc, but this get us
	  a nice size reduction for a small amount of effort, so it'll do for
	  now.

Sat Jul 18 15:42:48 GMT 2009  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c,languages/steminternal.cc,
	  languages/steminternal.h: Change how snowball generates the data used
	  by among - instead of using pointers to the strings in struct among,
	  store an offset into a constant pool, as this reduces the number of
	  relocations from 5001 to 2706, which should decrease the time taken
	  by the dynamic linker when loading the library.  This also results
	  in slightly smaller code.

Fri Jul 17 16:32:02 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Check output of Stem::get_description() for each
	  supported language.

Thu Jul 16 04:34:57 GMT 2009  Olly Betts <olly@survex.com>

	* common/fileutils.h: Remove unnecessary XAPIAN_VISIBILITY_DEFAULT
	  (ticket#63).
	* common/fileutils.cc,common/fileutils.h: Make isabspath() static
	  since it is only used by other functions in the same file.

Thu Jul 16 04:13:48 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix comment typo.

Thu Jul 16 03:59:49 GMT 2009  Olly Betts <olly@survex.com>

	* api/sorter.cc,include/xapian/sorter.h: MultiValueSorter doesn't
	  need an explicit dtor - it's enough that Sorter has a virtual dtor.

Thu Jul 16 03:29:41 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add Andreas Flöter for the Solaris package howto.

Wed Jul 15 14:37:19 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/rset.cc: Just pass pointer as AutoPtr constructor parameter
	  rather constructing a temporary AutoPtr and invoking the assignment
	  operator.

Wed Jul 15 03:43:35 GMT 2009  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: "class" -> "object" in doc comment.

Wed Jul 15 03:38:55 GMT 2009  Olly Betts <olly@survex.com>

	* tests/runtest.in: Raise the fd limit from 32 to 64 - multi_flint
	  tests need more than 32 fds.

Tue Jul 14 20:32:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc,common/omenquireinternal.h: Revert r13052, which
	  changed Enquire::Internal::weight not to be mutable.  Expand the
	  comment explaining why it's mutable.

Tue Jul 14 18:40:43 GMT 2009  Olly Betts <olly@survex.com>

	* tests/runtest.in: Use "ulimit -n" where available to limit the
	  number of available file descriptors to 32 so we catch file
	  descriptor leaks sooner.

Tue Jul 14 16:53:48 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc,common/omenquireinternal.h: Tidy up mutable
	  Weight member on Enquire::Internal class; make it non-mutable,
	  and just make a temporary BM25Weight object if the weight member
	  was NULL.

Tue Jul 14 12:36:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/output.h: Display a "<NULL $CLASSNAME>" message in debug
	  output when a pointer being output is NULL.  Previously, NULL
	  Query::Internal pointers were causing segfaults with debug
	  logging for many tests (eg, emptyquery1).

Sun Jul 12 14:56:18 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: We no longer have a "value" table
	  (values are now stored in the postlist and termlist tables) so fix
	  comments not to refer to it.

Sun Jul 12 14:47:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/: Add new ChertLazyTable class and subclass lazy
	  tables from it so that we only need to implement the common
	  differences once.

Sun Jul 12 13:41:27 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc: No point using join_paths() to append a literal
	  leaf name, especially as we already don't elsewhere.

Sun Jul 12 12:01:25 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix memory leak accidentally
	  introduced in r13005.

Sun Jul 12 11:40:26 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_opsynonym.cc: Remove debug "cout" calls.

Sun Jul 12 09:43:06 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Don't just skip counting subqueries which
	  are the RHS of OP_AND_NOT - skip based on factor == 0.0, which means
	  we get the RHS of OP_FILTER too.
	* tests/api_percentages.cc: Add topercent4 as a regression test for
	  this.

Sun Jul 12 09:32:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andmaybepostlist.cc: Add DEBUGCALL macro to
	  count_matching_subqs() to fix build with assertions.

Sun Jul 12 08:17:02 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/remotesubmatch.cc: Percentage scaling for remote results is
	  handled in a different way, so replace FIXME with comment noting
	  this.

Sun Jul 12 05:48:17 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix handling of percentage weights in various
	  cases when we're searching multiple remote databases or a mix of
	  local and remote databases.
	* tests/api_percentages.cc: Add regression test topercent3.

Sat Jul 11 13:35:02 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/mergepostlist.cc: Fix file description - MergePostList can
	  merge any number of posting lists, not just two.

Sat Jul 11 13:09:40 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/extraweightpostlist.h:
	  ExtraWeightPostList::read_position_list() and
	  ExtraWeightPostList::open_position_list() aren't used, so remove
	  them.

Sat Jul 11 12:54:30 GMT 2009  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,api/postlist.cc,common/leafpostlist.h,
	  common/postlist.h,common/submatch.h,matcher/,tests/api_anydb.cc,
	  tests/api_opsynonym.cc: Count how many leaf subqueries match for the
	  document with the highest weight when calculating the percentage
	  weights, instead of using the termlist of that document (ticket#363).
	  Also fixes XOR with a SYNONYM subquery which could achieve 100%
	  weight before.

Fri Jul 10 08:02:18 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/chert/chert_spelling.cc,
	  backends/flint/flint_spelling.cc,common/database.h: Deal with the
	  case of get_spelling_suggestion() with an empty or single character
	  word up front.

Thu Jul 09 16:20:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: In clean_up(), only scan
	  through the pid_to_fd array once, and disable the signal handler
	  and call waitpid() for any remaining pids ourselves, rather than
	  calling sleep(1) and rechecking.  This should avoid pointless delays
	  when the child hasn't exited when we first check.

Thu Jul 09 12:40:52 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/: BackendManager has a virtual dtor, so we don't need
	  empty virtual dtors in its subclasses.

Thu Jul 09 11:40:20 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc,
	  tests/harness/backendmanager_remotetcp.h: Move the
	  BackendManagerRemoteTcp ctor back into the header now it is trivial
	  again.

Wed Jul 08 16:56:53 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_io.h: Backport change to use F_FULLSYNC from
	  chert.

Wed Jul 08 15:30:22 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Check that we can find the valgrind/memcheck.h header
	  as well as the valgrind binary.

Wed Jul 08 14:30:53 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Sort out the clash
	  between two different patches to fix leaking file descriptors.
	  Also, call clean_up() from the destructor to correctly handle the
	  case when a BackendManagerRemoteTcp is created by a test case
	  directly.

Wed Jul 08 14:17:43 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/: Rename "posttest()" method to "clean_up()" - I keep
	  thinking "power-on self-test".

Wed Jul 08 05:08:09 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_io.h: Use F_FULLFSYNC where available (Mac OS X
	  currently).  (ticket#288)

Tue Jul 07 09:31:35 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: If default_op is OP_NEAR or OP_PHRASE
	  then make the default window size (9 + no_of_terms), like it would be
	  for an explicit NEAR or PHRASE without an explicit window size.
	  (ticket#254)
	* tests/queryparsertest.cc: Add feature tests for this.

Tue Jul 07 07:18:15 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,api/,backends/chert/,backends/flint/,
	  backends/remote/remote-database.cc,common/,languages/steminternal.h,
	  net/,queryparser/queryparser.cc,tests/harness/,tests/internaltest.cc,
	  tests/perftest/freemem.cc,tests/perftest/perftest_randomidx.cc,
	  tests/stemtest.cc,unicode/utf8itor.cc: Update to use C++ forms for
	  ISO C standard headers (ticket#330).

Tue Jul 07 05:30:58 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h: Use "omassert.h" not
	  <omassert.h>.

Mon Jul 06 04:30:59 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add Rolf Köhling for fixes for Omega on MS Windows.

Sun Jul 05 16:28:54 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Backport the lazyupdate changes from chert to flint.

Sun Jul 05 13:12:53 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,tests/harness/backendmanager.h: Move
	  virtual destructor definition out of the header.

Sun Jul 05 04:09:04 GMT 2009  Olly Betts <olly@survex.com>

	* common/documentterm.h: Add const to OmDocumentTerm::get_wdf() method
	  (ticket#139).

Sat Jul 04 16:45:43 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6757" - no
	  functional changes in generated code for our parser.

Sat Jul 04 16:39:41 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6756" - no
	  functional changes in generated code for our parser.

Sat Jul 04 16:36:59 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 6755" - no functional changes in generated code for
	  our parser.

Sat Jul 04 16:29:24 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6754" - no
	  changes in generated code for our parser.

Sat Jul 04 16:24:45 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 6749" -
	  only changes are in code which isn't compiled due to preprocessor
	  conditionals.

Sat Jul 04 16:02:08 GMT 2009  Olly Betts <olly@survex.com>

	* api/editdistance.cc: Add const to is_transposed() method
	  (ticket#139).

Sat Jul 04 15:19:55 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.h,backends/flint/flint_lock.h: Make
	  ChertLock::operator bool() and FlintLock::operator bool() const
	  (ticket#139).

Sat Jul 04 14:56:42 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Make ChertDatabase::get_changeset_revisions() and
	  FlintDatabase::get_changeset_revisions() const (ticket#139).

Sat Jul 04 14:10:55 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_changesetapplier.h,
	  backends/flint/flint_changesetapplier.h: "the the" -> "the" in
	  comments.

Sat Jul 04 14:06:39 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_btreebase.h:
	  Make ChertTable_base::do_unpack_uint() just a static non-class
	  function.  Use string::+= to build up the error string in it, and
	  mark the error case as rare.

Wed Jul 01 04:12:22 GMT 2009  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Omega now supports spelling correction.

Mon Jun 29 08:16:13 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Reset the begin and end strings
	  before trying the next ValueRangeProcessor in case they've been
	  modified.
	* tests/queryparsertest.cc: Add regression tests and general coverage
	  for this area.

Mon Jun 29 06:33:45 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/net_postlist.cc: Remove unused '#include
	  "serialise-double.h"'.

Mon Jun 29 06:32:52 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/net_postlist.cc: Build up description string using
	  +=.

Sun Jun 28 14:50:56 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/net_postlist.h: Fix internal doc comment.

Sat Jun 27 13:35:45 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: -Wshadow produces false positives with GCC 4.0, so
	  only enable  it for >= 4.1 since we enable -Werror for
	  maintainer-mode builds for GCC >= 4.0.

Sat Jun 27 13:30:22 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h:
	  Fix return type of MultiTermList::positionlist_count() to be
	  Xapian::termcount rather than Xapian::termpos.

Sat Jun 27 12:50:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.h,backends/flint/flint_postlist.cc,
	  backends/flint/flint_postlist.h: Fix to use Xapian::doccount for
	  termfreq in flint too.

Sat Jun 27 12:28:47 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alltermslist.cc: Prefer 'str.resize(0)' to
	  'str = ""'.

Sat Jun 27 12:16:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alltermslist.h,backends/chert/chert_postlist.h:
	  Fix to use Xapian::doccount for termfreq in more places.

Sat Jun 27 11:51:25 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Change so add_item_to_block() can
	  always assume there is another contiguous space in the block
	  (previously it could assume that there was enough space, but not
	  that it was necessarily contiguous).

Sat Jun 27 09:55:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h,include/xapian/weight.h: Add note
	  that PostingSource and Weight objects returned by clone() and
	  unserialise() methods will be deallocated with "delete".

Sat Jun 27 07:26:41 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_postlist.cc: Adjust use of Xapian::doccount vs
	  Xapian::termcount for consistency so things work better when these
	  types aren't identical.

Sat Jun 27 01:48:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc: Remove unused matchspy.cc - there is an updated
	  version of this on the matchspy branch; having an old copy here
	  is just likely to lead to confusion.

Fri Jun 26 05:42:26 GMT 2009  Olly Betts <olly@survex.com>

	* api/documentvaluelist.cc,api/documentvaluelist.h: Change
	  DocumentValueList::skip_to()'s parameter type from Xapian::valueno
	  to Xapian::docid to agree with the type in ValueList::skip_to().
	  This is a latent bug - it doesn't matter provided the types are
	  actually the same (ticket#385).

Thu Jun 25 11:20:07 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/phrasepostlist.cc: Use Xapian::termcount(1) instead of 1u
	  so that the code doesn't assume Xapian::termcount is unsigned int.

Sun Jun 21 12:09:55 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_check.cc,backends/chert/chert_table.cc,
	  backends/chert/chert_table.h: Replace duplicated macros with
	  a single version in chert_table.h, and use DIR_START instead of
	  a literal 11 in that header.
	* backends/chert/chert_table.h: Add more assertions.  Use
	  BYTES_PER_BLOCK_NUMBER instead of a literal 4 in more places.

Sat Jun 20 07:38:56 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc: Fix
	  misspelling in comment (neccessary -> necessary).

Sat Jun 20 07:38:06 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Don't reconstruct Item(p, c) when we
	  already have it as a local variable.

Wed Jun 17 01:23:16 GMT 2009  Olly Betts <olly@survex.com>

	* common/str.cc: Fix potential warning in signed version of str().

Tue Jun 16 11:20:43 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc,tests/harness/testsuite.h: Factor out
	  writing out what was sent to tout and clearing it into a new
	  method test_driver::write_and_clear_tout().
	* tests/harness/testsuite.cc: Prefer string() to "".  When sending a
	  colour change code, do it before the preceding space when that allows
	  string literals to be merged.  Always give the full exception message
	  (was conditional on --verbose).  Tidy up output for reporting the
	  various different exception types and other failures to give more
	  consistent output.

Tue Jun 16 11:01:14 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/scalability.cc: Increase the number of tests until the
	  first sample takes more than 0.001 seconds to avoid trying to base
	  calculations on a length of time we probably can't reliably measure
	  to start with.

Tue Jun 16 10:58:34 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/cputimer.cc: Don't bother trying to count CPU time
	  for child processes, as it's hard to ensure that the child processes
	  have finished with the current framework, and just counting time in
	  the current process checks most things (the local backend tests cover
	  much of the work done by the server part of the remote backend).

Tue Jun 16 02:15:31 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/cputimer.h: Don't need '#include <ctime>'.

Tue Jun 16 02:10:29 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/cputimer.h: Fix naming of header multiple-inclusion
	  protection macro.

Sun Jun 14 14:11:51 GMT 2009  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: In testcase serialisequery1, use a helper
	  function rather than wasting effort building a std::list with all the
	  testcases in just so we can iterate over them.

Sun Jun 14 13:52:22 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: <iomanip> isn't used so remove it.

Sun Jun 14 13:30:34 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Fix comment typo.

Sat Jun 13 06:30:57 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix reversed conditional in last but one change.

Sat Jun 13 04:42:27 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Use TEST_EQUAL_DOUBLE() when comparing
	  get_max_attained() to allow for rounding differences.

Sat Jun 13 04:39:49 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Use "startswith()" rather than comparing an
	  extracted substring.

Fri Jun 12 12:45:37 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Fix the mechanism for
	  closing the file descriptors used by child xapian-tcpsrv processes
	  once they exit, which has been broken ever since it was added nearly
	  two years ago (sigh).  Fixes fd leaking which caused "apitest
	  -bremotetcp" to fail on OpenBSD (ticket#382).

Fri Jun 12 03:37:13 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Fix comment typo.

Wed Jun 10 04:29:43 GMT 2009  Olly Betts <olly@survex.com>

	* common/serialise-double.cc,common/serialise-double.h: Relicense as
	  MIT/X rather than GPLv2+ as these are low level routines which other
	  projects may find useful.

Tue Jun 09 14:34:20 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update for 1.1.1.

Tue May 26 14:55:05 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Update version to 1.1.1.

Tue May 26 14:49:23 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Lick into shape.

Mon May 25 11:55:59 GMT 2009  Olly Betts <olly@survex.com>

	* PLATFORMS: Sync with changes in 1.0 version.

Mon May 25 10:57:59 GMT 2009  Olly Betts <olly@survex.com>

	* common/weightinternal.h: Remove declarations of unimplemented
	  constructors (ticket#379).

Sat May 23 16:06:05 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from 1.0.13 and ChangeLog.

Sat May 23 15:35:39 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: ValueIterator is now a PIMPL class like TermIterator, etc.

Sat May 23 05:24:33 GMT 2009  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Since we are sticking with an recursive
	  maxweight recalculation for now, add back a warning about the
	  potential overhead from calling set_maxweight() very frequently,
	  with an informed estimate for the worst case overhead.

Fri May 22 11:44:04 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: We can trivially make
	  Database::metadata_keys_begin() work for inmemory in the special
	  case when there are no keys, so do so.
	* tests/api_metadata.cc: Add test coverage for this case.

Fri May 22 09:31:07 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Only bother passing -Winit-self for GCC >= 4.3, as it
	  doesn't do anything for GCC <= 4.4 anyway.

Fri May 22 07:00:29 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.h: Initialise filename using + not +=.
	  Fix odd whitespace in recent change.

Fri May 22 05:27:56 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Update.

Fri May 22 05:24:19 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,common/multimatch.h,matcher/multimatch.cc:
	  Replace MultiMatch::reduce_maxweight_by() with a call to
	  MultiMatch::recalc_maxweight() and inline the later from the header.

Fri May 22 05:16:03 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Enable more GCC warnings - "-Woverloaded-virtual" for
	  all versions, "-Wstrict-null-sentinel" for 4.0+, "-Wlogical-op
	  -Wmissing-declarations" for 4.3+.  Notably "-Wmissing-declarations"
	  caught that consistency2 wasn't being run.

Fri May 22 05:15:08 GMT 2009  Olly Betts <olly@survex.com>

	* languages/steminternal.cc,languages/steminternal.h: Inline simple
	  Stem::Internal::Internal() constructor from header.

Thu May 21 16:23:26 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Make on_SIGCHLD() static.

Thu May 21 16:22:56 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Fix testcase consistency2 to actually be run.

Thu May 21 16:22:30 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_transdb.cc: Add missing '#include "api_transdb.h"'.

Thu May 21 12:58:22 GMT 2009  Olly Betts <olly@survex.com>

	* backends/databasereplicator.cc: Don't bother to check if the
	  database path works in stat() and is a directory - the case we want
	  to be fast is when the database does exist, and if path +
	  "/iamflint" (or "iamchert") exists, then the check for path being a
	  directory is redundant.  If the path isn't a flint or chert database
	  then a generic message including the path seems sufficient.

Thu May 21 09:17:15 GMT 2009  Olly Betts <olly@survex.com>

	* backends/databasereplicator.cc,common/databasereplicator.h: Inline
	  empty DatabaseReplicator default ctor.

Thu May 21 08:25:24 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc: Cache the result of get_replica_path() when we
	  are going to need it again.

Thu May 21 08:09:51 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_databasereplicator.h,
	  backends/flint/flint_databasereplicator.h: Correct parent class name
	  in doxygen comments.

Thu May 21 08:08:06 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update list of Debian/Ubuntu packages needed to for a
	  development environment.

Thu May 21 06:28:00 GMT 2009  Olly Betts <olly@survex.com>

	* backends/databasereplicator.cc: Fix nested comment start introduced
	  by the previous commit.

Thu May 21 06:21:39 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/databasereplicator.cc,
	  common/databasereplicator.h: We only keep one pointer to a
	  DatabaseReplicator, so use AutoPtr not RefCntPtr.

Thu May 21 05:00:17 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc: Fix SEGV when calling get_description() on a
	  default constructed DatabaseReplica.
	* tests/generate-api_generated: Test DatabaseReplica (regression test
	  for the above bug) and SerialisationContext.   Fix @file in the
	  generated api_generated.cc.  Update (C) dates in generated
	  api_generated.cc.

Thu May 21 03:58:59 GMT 2009  Olly Betts <olly@survex.com>

	* tests/generate-api_generated: Call get_description() on the default
	  constructed object to make sure that works (and doesn't try to
	  dereference NULL, or fail some assertion, etc).  All currently
	  checked classes are fine - this is to avoid future regressions or
	  such problems with new classes.

Wed May 20 14:19:54 GMT 2009  Olly Betts <olly@survex.com>

	* net/tcpclient.cc,net/tcpserver.cc: Fix xapian-tcpsrv --interface
	  option to work on MacOS X (ticket#373).

Wed May 20 13:58:09 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/sortable-serialise.cc,backends/chert/,
	  backends/flint/,backends/remote/remote-database.cc,
	  common/serialise-double.cc,common/str.cc,
	  matcher/exactphrasepostlist.cc,net/remoteconnection.cc,
	  net/remoteserver.cc: Replace C-style casts.  Add a few missing casts.
	  Tweak types used in a few places.

Wed May 20 13:55:41 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Need <cstdio> for
	  rename().  Replace C-style cast to off_t.

Wed May 20 13:53:25 GMT 2009  Olly Betts <olly@survex.com>

	* api/editdistance.cc: Make edist_state class uncopyable and
	  unassignable.  Initialise maxdist in the initialiser list.

Wed May 20 11:19:53 GMT 2009  Olly Betts <olly@survex.com>

	* languages/steminternal.cc,languages/steminternal.h: Change C-style
	  casts to C++-style ones.

Wed May 20 10:40:03 GMT 2009  Olly Betts <olly@survex.com>

	* common/str.h: Add static_cast<char>() to suppress bogus MSVC
	  warning (ticket#377).

Tue May 19 15:26:39 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/,backends/flint/,common/rset.h,tests/api_anydb.cc:
	  Pass std::string by const reference rather than value (except in
	  a few cases where we need a modifiable copy anyway) as benchmarking
	  shows this is better even with GCC's reference counted std::string
	  implementation (ticket#140).
	* tests/api_anydb.cc: Use string() instead of "" for an empty string.

Tue May 19 08:47:55 GMT 2009  Olly Betts <olly@survex.com>

	* api/omquery.cc,include/xapian/query.h: Make Xapian::Query::MatchAll
	  and Xapian::Query::MatchNothing const since they're immutable.  All
	  the public methods are const, so this should be completely API
	  compatible.

Tue May 19 06:25:26 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Document what passing maxitems=0 to
	  get_mset() does.

Mon May 18 13:32:49 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Correct doxygen comments for user
	  metadata functions: get_metadata() can't throw UnimplementedError
	  but set_metadata() can.
	* include/xapian/database.h,tests/api_metadata.cc: Document that
	  metadata_keys_begin() returns an end iterator if the backend doesn't
	  support metadata, and add test coverage for this case.
	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,include/xapian/database.h,
	  tests/api_metadata.cc,tests/harness/testrunner.cc: The test harness
	  didn't have the inmemory backend flagged as supporting
	  user-specified metadata, and so it's perhaps not a great surprise to
	  discover that inmemory doesn't support it fully - you can't iterate
	  over metadata keys, but instead get an empty iteration.  Fix this
	  to at least throw UnimplementedError and document that this is the
	  situation.

Mon May 18 11:29:10 GMT 2009  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/api_metadata.cc,tests/api_wrdb.cc: Split out
	  tests of user metadata into their own file.

Sun May 17 12:52:41 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/: Add a new constructor to MultiAndPostList for the "decay
	  from OrPostList or AndMaybePostList" case which takes the already
	  know max weights to avoid having to refetch them.  Also, we know
	  that the subpostlists of OrPostList are ordered a particular way
	  so can avoid needing to check the order in that case.

Sat May 16 05:02:35 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Fix comment - this file doesn't
	  use memcpy() now.

Thu May 14 04:38:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Remove superfluous explicit std::
	  qualifiers.

Thu May 14 04:36:29 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Update for the PostingSource
	  get_maxweight() API changes.

Tue May 12 14:50:57 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Rename "max_weight" variable to "max_possible"
	  since that is what it is referred to via the MSet API.

Tue May 12 12:38:11 GMT 2009  Olly Betts <olly@survex.com>

	* common/safeuuid.h: Fix length of buffer to lower case - it's
	  36, not sizeof(uuid_t).

Tue May 12 02:49:34 GMT 2009  Olly Betts <olly@survex.com>

	* common/safeuuid.h,configure.ac: Older versions of libuuid don't have
	  uuid_unparse_lower() so probe for it in configure, and if it isn't
	  present provide an inline version in safeuuid.h (ticket#368).

Mon May 11 13:07:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: In changemaxweightsource1, set
	  descending docid order so that the matcher isn't able to terminate
	  early after 4 documents just because weight == maxweight.

Mon May 11 12:00:04 GMT 2009  Olly Betts <olly@survex.com>

	* net/serialise.cc: Build up string using +=.

Mon May 11 11:39:49 GMT 2009  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Improve documentation for get_maxweight().

Mon May 11 11:26:02 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Initialise max_weight_ to 0 in the
	  PostingSource constructor in case nobody else sets a value for it.

Mon May 11 10:54:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: Fix class name in FAIL_TEST message.

Mon May 11 10:41:31 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: Fix get_termfreq_min(), etc for
	  ChangeMaxweightPostingSource to return 4 not 5.

Mon May 11 09:03:14 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Remove assertion checking that set_maxweight()
	  doesn't set a lower weight - it legitimately can when we call init()
	  on a non-clone-able PostingSource for reuse.

Mon May 11 03:12:00 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,common/multimatch.h,docs/postingsource.rst,
	  include/xapian/postingsource.h,matcher/externalpostlist.cc,
	  matcher/externalpostlist.h,matcher/msetpostlist.cc,
	  tests/api_postingsource.cc: Replace PostingSource's
	  notify_new_maxweight() and virtual get_maxweight() mechanism with a
	  non-virtual set_maxweight() and get_maxweight().  Currently the
	  plumbing at the matcher end is much as before, but this API seems
	  more obvious to the user and will allow the matcher to simply reduce
	  its maximum weight value rather than having to recursively call
	  recalc_maxweight() in response to this situation (ticket#340).

Mon May 11 02:38:26 GMT 2009  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Fix a typo and reword to avoid "namespaced".

Mon May 11 02:30:59 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/msetpostlist.cc: Fix typo - MSetPostList::get_maxweight()
	  with a sort ordered primarily by decreasing relevance was returning
	  the docid for the maxweight!  This could have led to wrong results
	  when searching multiple databases with the remote backend, but
	  probably usually didn't matter as with BM25 the weights are usually
	  small (often all < 1) while docids are inevitably >= 1.  No
	  regression test for this (currently anyway).

Sun May 10 07:49:11 GMT 2009  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Fix comment typo.

Sat May 09 14:15:38 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_collapse.cc,tests/perftest/runprocess.cc: Remove unused
	  include of <iostream>.

Sat May 09 14:03:34 GMT 2009  Olly Betts <olly@survex.com>

	* api/omquery.cc,matcher/andnotpostlist.cc,
	  queryparser/termgenerator_internal.cc,tests/api_wrdb.cc: Remove
	  unused inclusions of <algorithm>.

Sat May 09 13:47:54 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Remove unused inclusion of <queue>.

Sat May 09 13:38:02 GMT 2009  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,api/replication.cc,
	  backends/alltermslist.cc,backends/chert/chert_table.cc,
	  backends/flint/flint_table.cc,bin/xapian-compact.cc,
	  common/bitstream.cc,common/inmemory_positionlist.h,
	  common/positionlist.h,matcher/localmatch.h,matcher/queryoptimiser.cc,
	  matcher/queryoptimiser.h,tests/api_wrdb.cc: Remove unused inclusions
	  of <list>, <map>, <string>, and <vector>.

Sat May 09 12:48:18 GMT 2009  Olly Betts <olly@survex.com>

	* api/documentvaluelist.cc,matcher/queryoptimiser.cc: Remove unused
	  '#include "autoptr.h"'.

Sat May 09 09:41:03 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/termgenerator.cc,
	  weight/bm25weight.cc,weight/boolweight.cc,weight/tradweight.cc:
	  Remove unneeded explicit "std::" qualifiers.

Sat May 09 09:35:32 GMT 2009  Olly Betts <olly@survex.com>

	* weight/weight.cc: Doesn't use '#include "autoptr.h"'.

Fri May 08 19:59:00 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Change source file which autoconf looks for, since
	  I've just removed the old one that it looked for!

Fri May 08 19:28:31 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andmaybepostlist.cc,matcher/branchpostlist.h: Call
	  check() instead of skip_to() on the optional branch of AND_MAYBE.
	  This can be much faster if that branch is a posting source.

Fri May 08 18:31:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/: Remove AndPostList, in favour of MultiAndPostList.
	  AndPostList was only used as a decay product (by AndMaybePostList
	  and OrPostList); for most queries, MultiAnd has pretty much
	  indistinguishable performance as far as I can test; however, it
	  uses check() when possible, which makes performance much better
	  with searches involving external posting sources.  Removal also
	  reduces the amount of code cluttering up the caches during a
	  search, so may help speed things up in some other situations.

Fri May 08 16:00:42 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,backends/inmemory/inmemory_database.cc,
	  examples/delve.cc,include/xapian/postingsource.h: Don't store an
	  end iterator in a variable just to compare against it - it's now
	  definitely more efficient to compare against the return value of
	  the relevant _end() method.

Fri May 08 15:44:07 GMT 2009  Olly Betts <olly@survex.com>

	* api/valueiterator.cc,include/xapian/database.h,
	  include/xapian/document.h,include/xapian/valueiterator.h: Create a
	  new proxy object class ValueIteratorEnd_ which is returned instead
	  of ValueIterator(NULL) for end iterators.  This class will be
	  converted to ValueIterator(NULL) if assigned to or passed as
	  ValueIterator, but operator== and operator!= are overloaded to
	  handle it directly which means that the compiler no longer calls
	  ~ValueIterator for each call which returns ValueIterator(NULL).

Fri May 08 15:42:12 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: Swap two statements for cosmetic
	  reasons.

Fri May 08 14:42:49 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,include/xapian/postingsource.h: It is actually
	  better not to store the end iterator in a member variable - if we
	  explicitly call db.postlist_end(string()) then that just gets
	  optimised to PostingSource(NULL).

Fri May 08 14:02:21 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_postingsource.cc: We've decided that "going back" with
	  skip_to() or check() should have unspecified behaviour, so stop
	  testing how this case behaves!

Fri May 08 12:37:33 GMT 2009  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Ship common/win32_uuid.cc and common/win32_uuid.h
	  (ticket#367).

Fri May 08 12:30:45 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/cputimer.cc: Fix typo in the "ftime" case.

Fri May 08 10:25:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andpostlist.cc: Fix a swap which was the wrong way round,
	  so that we call next() on the subpostlist with the lower
	  frequency, rather than the one with the higher frequency.  This
	  should improve performance in many situations, and I don't think
	  it's likely to slow anything down.  It also fixes some cases
	  where optimisation of an AND_MAYBE to an AND results in a slower
	  search, such that search times went down when more hits were
	  requested.

Fri May 08 08:48:14 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/externalpostlist.cc: ExternalPostList::get_doclength()
	  should never get called, so make it "Assert(false)".

Fri May 08 05:16:50 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Another string concatention.

Fri May 08 05:04:55 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Use str() instead of om_tostring() and build
	  up strings using +=.

Fri May 08 04:37:05 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc: "using namespace std;".

Thu May 07 16:46:14 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/: Check for collection_size == 0 up front so we don't need
	  to repeatedly special case it when implementing
	  get_termfreq_est_using_stats().

Thu May 07 16:28:07 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/xorpostlist.cc: Fix typo bug - collection_size should be
	  rset_size.  This would have lead to a floating point division by
	  zero when XOR was used under a synonym without an RSet, but that
	  would just give infinity, and so just give a bogus value for the
	  rel_termfreq rather than aborting instantly.

Thu May 07 16:19:52 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update auto_ptr information.  Mention constructor syntax as
	  an alternative replacement for some C-style casts.

Thu May 07 15:25:00 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc,matcher/localmatch.h: Don't rebuild the
	  termname -> termfreq and weight map for every subdatabase - just do
	  it once for the first one.  Also eliminate a copy of this map.
	  This should speed up searches a little, especially those over
	  multiple databases.

Thu May 07 15:01:24 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/omqueryinternal.cc,
	  backends/remote/remote-database.cc,common/autoptr.h,
	  expand/esetinternal.cc,matcher/localmatch.cc: Make our AutoPtr just
	  a macro wrapper for std::auto_ptr.  Since std::auto_ptr doesn't
	  allow assignment from a raw pointer, this requires changing such
	  assignments into calls to auto_ptr::reset().

Thu May 07 14:19:22 GMT 2009  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc: Add an assertion that the term in the stats.
	  Add "using namespace std;" so we can avoid explicit std:: qualifiers.

Thu May 07 13:26:21 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/: Eliminate EmptySubMatch - we can just store NULL for a
	  submatch which has failed but which ErrorHandler told us to continue
	  without.

Thu May 07 12:52:24 GMT 2009  Olly Betts <olly@survex.com>

	* common/database.h: Update internal documentation comment -
	  Database::Internal::open_post_list() can no longer return
	  EmptyPostList as it is no longer a subclass of LeafPostList.

Thu May 07 12:13:50 GMT 2009  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,backends/chert/chert_postlist.cc,
	  backends/chert/chert_postlist.h,
	  backends/flint/flint_alldocspostlist.h,
	  backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/remote/net_postlist.h,
	  common/contiguousalldocspostlist.h,common/leafpostlist.h: Squash
	  TermBasedLeafPostList into LeafPostList since there are no longer
	  any other subclasses.

Thu May 07 11:49:06 GMT 2009  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/emptypostlist.cc,common/emptypostlist.h:
	  Reimplement EmptyPostList from scratch, and inherit from PostList
	  not LeafPostList.

Thu May 07 11:19:34 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/mergepostlist.cc: Add explicit '#include "omassert.h"'.

Thu May 07 10:28:33 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
	  Subclass MultiPostList directly from PostList instead of from
	  LeafPostList.  This gets rid of two unused data members per
	  MultiPostList in exchange for having to define 5 extra "never
	  called" methods, but 4 of these just tailcall.

Thu May 07 10:26:39 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_database.cc: Fix assertion failures and
	  a SEGV in an assertion test.

Thu May 07 09:27:35 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_alltermslist.h,
	  backends/inmemory/inmemory_database.cc:
	  Keep a dummy entry in InMemoryDatabase::postlists so that the
	  implementation of InMemoryAllTermsList doesn't need a "started"
	  flag, and we can use an InMemoryPostList on the dummy item for
	  the "term not in database" case.

Thu May 07 05:45:48 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add tset coverage for alldocs iterator on an
	  empty database.
	* backends/inmemory/inmemory_database.cc: No need to special case an
	  empty database as InMemoryAllDocsPostList handles this case
	  correctly.

Thu May 07 05:08:07 GMT 2009  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Use str() instead of om_tostring(), += to
	  build up strings, and fix a cut-and-paste comment error.

Wed May 06 13:03:40 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* net/serialise.cc: Better serialisation - don't include the
	  reltermfreqs if the rset_size is 0, since they'll all be 0 too.

Wed May 06 12:13:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/remoteprotocol.h,net/serialise.cc: When serialising stats,
	  serialise the termfreq and reltermfreq together, rather than in
	  separate lists.  Results in a smaller serialised form, and
	  matches the in-memory structure now used better. Fixes ticket
	  #362.  This is an incompatible remote protocol change, however,
	  so bump the major version to 32.

Wed May 06 04:02:43 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Check termfreqandwts for MatchAll queries
	  before we check terms from the document so that the "terminate
	  early once we've seen all the query terms" test when checking the
	  document terms can fire in this case.

Wed May 06 03:26:05 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Remove incorrect comment accidentally
	  committed in r12623.

Wed May 06 03:18:42 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_opsynonym.cc: Fix comment typo.

Wed May 06 01:35:14 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_postingsource.cc: changemaxweightsource1 uses
	  ChangeMaxweightPostingSource, which doesn't work with multi or
	  remote, so mark the test accordingly.

Wed May 06 01:11:25 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h,api/postingsource.cc: Add
	  notify_new_maxweight() method to be called by subclasses when they
	  want to notify the matcher that their maxweight has changed
	  significantly.  Add ExternalPostList as a friend and add
	  register_externalpl() to be used to associate the ExternalPostList
	  with the PostingSource.
	* matcher/externalpostlist.cc,matcher/externalpostlist.h,
	  matcher/queryoptimiser.cc: Register the externalpostlist with the
	  PostingSource it's iterating through.  Add
	  ExternalPostList::notify_new_maxweight() method for
	  PostingSource::notify_new_maxweight() to call.
	* docs/postingsource.rst: Document notify_new_maxweight() and the
	  reasons for calling it.
	* tests/api_postingsource.cc: Test the handling of maxweight.

Tue May 05 19:37:56 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am,tests/api_db.cc,tests/api_postingsource.cc:
	  Split the tests of PostingSource subclasses out of api_db.cc; I'm
	  about to add some more, and bloating api_db.cc further is
	  unworkable.

Tue May 05 18:23:02 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/postingsource.rst,include/xapian/postingsource.h:
	  Documentation updates to describe way that init() is called
	  again if a PostingSource is reused.  Fixes #352.

Tue May 05 16:05:48 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_opsynonym.cc: Test that the top document has a weight
	  of 100%, which is should do for all the current examples here.

Tue May 05 16:03:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Add logging to keep track of the weights
	  being added to percent_scale.  If the percent_scale total is 0.0,
	  which can happen if the top document only matches synonym terms,
	  force percent_scale to 1.0, to avoid an assertion failure.

Tue May 05 13:41:57 GMT 2009  Olly Betts <olly@survex.com>

	* common/str.h: Fix swapped parameters in string ctor in code for
	  str(bool) overload which lead to us returning 48 or 49 \x01
	  characters instead of "0" or "1".
	* tests/internaltest.cc: Add regression test strbool1.
	* AUTHORS: Thank Peter Kelm for helping us spot this.

Tue May 05 12:54:36 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	Merge from opsynonym branch:
	* queryparser/queryparser.lemony: Use OP_SYNONYM instead of OP_OR
	  for synonyms, wildcards, and partial queries.
	* tests/queryparsertest.cc: Test use of OP_SYNONYM by query parser.

Tue May 05 12:18:06 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	Merge from opsynonym branch:
	* api/omqueryinternal.cc,include/xapian/query.h,matcher/,
	  weight/weight.cc: Implement a new OP_SYNONYM query operator,
	  which behaves similarly to OP_OR, but produces weights for the
	  combined set of terms as if they were a single term (by merging
	  their wdfs).
	* tests/Makefile.am,tests/api_opsynonym.cc: Add tests for the
	  OP_SYNONYM operator.
	* include/xapian/weight.h: Add a Weight::init_() method for
	  synonym, since there isn't a single term involved.  Also,
	  requires a method get_sumpart_needs_wdf_() to check if wdfs are
	  needed, since the synonym weight calculation requires fetching
	  the doclength, which is potentially expensive, in order that the
	  wdf returned can be clamped to a sane range.  Mark the weighting
	  methods which require WDF with need_stat(WDF).

Tue May 05 12:04:33 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/remoteprotocol.h: Add comment to remind use to do the
	  FIXME in serialise_stats() when next breaking remote protocol
	  compatibility.

Tue May 05 10:53:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/output.h: Add output function for TermFreqs.

Tue May 05 08:23:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/leafpostlist.cc,api/postlist.cc,common/emptypostlist.h,
	  common/leafpostlist.h,common/postlist.h,matcher/: Add
	  PostList::get_termfreq_est_using_stats() method, with default
	  implementation which raises an InvalidOperationError.  Implement
	  this for those postlists which it makes sense for.  Also,
	  implement get_wdf() for postlists used by the matcher for
	  implementing various query operators.  This isn't currently used
	  or tested on trunk, but is used for the opsynonym branch.

Tue May 05 07:37:04 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/rset.h,common/weightinternal.h,matcher/rset.cc,
	  net/serialise.cc,weight/weightinternal.cc: Store termfreqs and
	  reltermfreqs in a Weight::Internal in a single map; introduce a
	  new struct (TermFreqs) for the values stored here.
	  Remove now unused Xapian::TermFreqMap typedef.

Tue May 05 07:19:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_postlist.cc,backends/chert/chert_postlist.h,
	  backends/flint/flint_alldocspostlist.h,
	  backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/remote/net_postlist.h,
	  common/contiguousalldocspostlist.h,common/leafpostlist.h:
	  Introduce TermBasedLeafPostList, as a new common base class for
	  postlists which are derived from a term in the query (including
	  alldocs postlists which are derived from the empty term).

Tue May 05 06:47:11 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/,backends/flint/flint_modifiedpostlist.cc,
	  backends/flint/flint_postlist.cc,backends/flint/flint_postlist.h:
	  Rename "tname" parameters to LeafPostList subclasses to "term".
	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Rename term parameter of
	  type InMemoryTerm to imterm ready for opsynonym branch changes.

Tue May 05 04:51:28 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_alldocspostlist.h,matcher/multimatch.cc:
	  Remove unused '#include "leafpostlist.h"'.

Tue May 05 02:15:35 GMT 2009  Olly Betts <olly@survex.com>

	* common/contiguousalldocspostlist.h: Wrap comment.

Tue May 05 02:04:02 GMT 2009  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Move str.h into alphabetical order.

Mon May 04 12:04:16 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Rename qp_stem_scale1 to qp_scale1 as it
	  has no connection with stemming.  Factor out a helper function to
	  do the timing comparison, and update time_query_parse() to use
	  CPUTimer rather than OmTime.  Tweak the "fudge factor" up from
	  2 to 2.15 to allow for non-equal ticks due to rounding of an
	  interval which isn't an exact multiple of 1/CLK_TCK (ticket#308).

Mon May 04 12:02:32 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/cputimer.cc: If we don't have rusage() or times(), but
	  do have ftime(), use that instead of time() so we at least get
	  subsecond resolution (as we do currently with OmTime).

Mon May 04 03:31:51 GMT 2009  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Add examples of using a prefix on a phrase
	  or subexpression.

Sun May 03 14:58:42 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_valuestats.cc: Testcase valuestats4 requires transactions,
	  so indicate that and remove the explicit SKIP for inmemory.

Sun May 03 12:34:30 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/rset.h,common/weightinternal.h,matcher/rset.cc,
	  weight/weightinternal.cc: Typedef std::map<string, Xapian::doccount>
	  as TermFreqMap; tidies up code a little here, but mainly useful
	  for keeping code tidy on branches/opsynonym.

Sun May 03 11:49:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/multimatch.h: Remove unused include of <map>

Sun May 03 05:23:32 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Protect tests which assume Flint is enabled with
	  #ifdef XAPIAN_HAS_FLINT_BACKEND.

Sat May 02 15:49:46 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac,tests/Makefile.am,tests/api_scalability.cc,
	  tests/api_wrdb.cc,tests/harness/: Add new "test_scalability()" helper
	  function which checks that an operation scales in CPU time used in
	  the desired way.  Use this to reimplement bigoaddvalue (and rename
	  to bigoaddvalue1 for consistency).

Fri May 01 04:58:41 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: For chert, check value stats are the correct
	  format and that the streamed values are consistent with their stats
	  (ticket#277).

Fri May 01 04:53:22 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Don't ever store empty values explicitly, which
	  eliminates an inconsistently handled corner case which was causing
	  the "value frequency" to be wrong from at least one point of view.
	  This is consistent with how user metadata works too.
	* include/xapian/document.h: Explicitly document this behaviour.
	* tests/api_valuestats.cc: Add regression test for the above change.

Fri May 01 03:11:25 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Chert doesn't store termlist entries for
	  documents without terms, which resulted in us reporting an error when
	  we found document ids in the doclength "postlist" which were greater
	  than any with an entry in the termlist.  Instead compare these
	  entries against db.get_last_docid() if we are checking a whole db
	  and able to call it.  If not, suppress this check.

Thu Apr 30 15:02:41 GMT 2009  Olly Betts <olly@survex.com>

	* common/valuestats.h: Fix comment typo.

Tue Apr 28 14:01:41 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Use <cstdlib> rather than <stdlib.h> which means
	  that there's an overload for abs(long).

Tue Apr 28 13:17:48 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,configure.ac,include/xapian/deprecated.h,
	  include/xapian/version_h.cc,tests/harness/testsuite.cc: Actually,
	  let's require GCC 3.1 as doing so eliminates some preprocessor
	  conditionals which we aren't able to test regularly as we don't
	  have easy access to such old GCC versions.  GCC 3.1 is nearly 7
	  years old now, and GCC3 didn't get widespread use until later
	  versions anyway.

Tue Apr 28 12:47:11 GMT 2009  Olly Betts <olly@survex.com>

	* common/debuglog.h: Add missing initialisation of uncaught_exception
	  in a couple of places.

Tue Apr 28 11:24:02 GMT 2009  Olly Betts <olly@survex.com>

	* INSTALL: Note that Xapian 1.0.x should build with GCC 2.95.3.

Tue Apr 28 11:20:51 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,backends/chert/chert_database.h,
	  backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.h,configure.ac,
	  include/xapian/version_h.cc,tests/harness/testsuite.cc: Drop support
	  for GCC 2.95.3 - we now require at least 3.0.

Mon Apr 27 12:20:25 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Add "need_stat(WDF);" for Weight subclasses
	  which use wdf.  Currently this is never actually checked by trunk
	  (so a regression test for this omission isn't really feasible), but
	  the opsynonym branch uses it.

Sun Apr 26 14:47:57 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* weight/bm25weight.cc: Add call debugging.

Sun Apr 26 10:57:48 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: stubdb6 is "inmemory" not "flint || chert || multi".

Sun Apr 26 10:51:50 GMT 2009  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Fix to build with the inmemory backend
	  disabled.

Sun Apr 26 07:28:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/generate-api_generated: Fix so generated api_generated.cc
	  builds with the inmemory backend disabled.

Sun Apr 26 06:30:57 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix to build with the inmemory backend disabled.

Sat Apr 25 01:10:49 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fix to build with the flint and/or chert
	  backends disabled.

Sat Apr 25 01:06:00 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix to build with the remote backend
	  disabled.

Sat Apr 25 00:57:41 GMT 2009  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Fix to build with the inmemory backend
	  disabled.

Fri Apr 24 22:59:34 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* weight/weight.cc: Add debug logging to Weight::init_() methods.
	* net/remoteserver.cc: Fix bounds returned by Weight::Internal
	  object in get_mset() in remote submatches, by setting the
	  database used to read the bounds.

Fri Apr 24 13:14:50 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/branchpostlist.cc,matcher/branchpostlist.h: Remove
	  BranchPostList::get_wdf() which isn't currently used, and isn't
	  wanted on branches/opsynonym.

Fri Apr 24 12:46:18 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Apply doxygen comment improvement
	  from branches/opsynonym.

Fri Apr 24 12:31:15 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: Apply assertion and debug logging
	  improvements from branches/opsynonym.

Thu Apr 23 06:16:05 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,docs/Makefile.am,tests/Makefile.am: Fix
	  things up so that in a bootstrapped SVN tree, automatic regeneration
	  of autotools-generated files uses the in-tree versions of the
	  autotools.

Thu Apr 23 04:37:31 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add another bug reporter.

Thu Apr 23 04:26:25 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,languages/Makefile.mk,queryparser/Makefile.mk,
	  tests/Makefile.am,tests/perftest/Makefile.mk: Don't remove any
	  built sources in "make clean" even under --make-maintainer-mode
	  as that breaks switching a tree away from maintainer-mode with:
	  make distclean;./configure

Thu Apr 23 03:51:03 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am: Use "--coverage" instead of "-fprofile-arcs
	  -ftest-coverage" in the test coverage build.

Wed Apr 22 14:32:56 GMT 2009  Olly Betts <olly@survex.com>

	* PLATFORMS: Sync with 1.0.12; add entry for atreus for 1.1.0.

Wed Apr 22 14:27:36 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add more bug reporters and patch contributors.  Remove a
	  duplicate entry.

Wed Apr 22 13:58:31 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Set release date.

Wed Apr 22 13:36:04 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update, perhaps even ready for release now.

Wed Apr 22 11:00:50 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: More work.

Tue Apr 21 17:59:13 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/queryparser.html: Add closing <code> tag.

Tue Apr 21 11:05:17 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: A few minor corrections and adjustments.

Tue Apr 21 07:49:49 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Don't use the term "term" to talk about the
	  extra weight component as it already has a strong meaning in Xapian.

Tue Apr 21 07:16:18 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6451".

Tue Apr 21 06:54:00 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.h: '#include <map>' isn't required.

Tue Apr 21 06:45:14 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc,matcher/queryoptimiser.h: Eliminate
	  QueryOptimiser::do_leaf() as it is only called from one place
	  and if only two lines of code.

Mon Apr 20 14:10:08 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and start to lick into shape for a
	  release.

Mon Apr 20 13:06:17 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: XAPIAN_DEBUG_LOG=- send output to stderr, not stdout.

Mon Apr 20 11:53:07 GMT 2009  Olly Betts <olly@survex.com>

	* common/output.h: Add new macro XAPIAN_OUTPUT_FUNCTION_PTR and use it
	  so that debug logging of Xapian::Query::Internal* doesn't just
	  report the pointer value.

Mon Apr 20 06:39:42 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Apply debug logging change lifted from
	  branches/opsynonym.

Mon Apr 20 05:22:24 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc: Add FIXME comments about use of internal
	  macro from a different header.

Mon Apr 20 05:08:34 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Update release checklist.

Sun Apr 19 14:50:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_nodb.cc: Stick the reciprocal of "factor" into a
	  volatile double temporary variable to stop compiler using
	  extended precision calculation on x86, and coming up an answer of
	  exactly 1.0 when multiplying by "factor" again.

Sun Apr 19 14:26:09 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.12 and update from ChangeLog.

Sun Apr 19 12:12:19 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Update for 1.0 branch.

Thu Apr 16 12:08:24 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: When copying the tail of a value
	  chunk because did > last_allowed_did, we don't need to check if
	  the docids being copied are < did, since they should all be <=
	  last_allowed_did, so just assert the latter.

Tue Apr 14 20:32:41 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: patch from james to move logging in
	  modifyvalues1 so it reports the values it's rewriting correctly,
	  rather than the empty string.  Also display the expected value in
	  tout when checking the value.  Also, pull the setting of the random
	  seed out to the start of the function, and set it to 7 (which
	  exposed the bug fixed with the previous commit, which that the old
	  value of 42 didn't, on my machine, at least).

Tue Apr 14 18:12:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_values.cc: When we move the reader to a new
	  chunk, write any trailing values left in it to the stream first.

Thu Apr 09 05:01:04 GMT 2009  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Document the child process used for locking
	  which exec-s "cat" (ticket #258).

Thu Apr 09 03:49:13 GMT 2009  Olly Betts <olly@survex.com>

	* bin/: Use C++ forms of C headers in bin (ticket#330).

Thu Apr 09 03:47:42 GMT 2009  Olly Betts <olly@survex.com>

	* examples/: Use C++ forms of C headers in examples (ticket#330).

Mon Apr 06 06:35:03 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Fix documentation comment typos.

Mon Apr 06 06:03:45 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add Muayyad Alsadi for reporting #355.

Mon Apr 06 05:59:38 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Note which characters in the new
	  unicodepredicate1 testcase are new in Unicode 5.1.0.

Sun Apr 05 14:24:47 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Add NON_SPACING_MARK to is_wordchar() for
	  better tokenisation of Arabic, for example.  (ticket#355)
	* tests/queryparsertest.cc: Add test that this has the desired effect.
	* tests/api_unicode.cc: Add feature tests of Unicode::is_wordchar(),
	  Unicode::is_currency(), and Unicode::is_whitespace().

Sat Apr 04 05:41:47 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed Apr 01 00:18:02 GMT 2009  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix totlen overflow test.  Refactor lightly
	  to reduce indenting.

Tue Mar 31 17:01:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Handle databases which contain no
	  documents (and hence have no METAINFO item), but do contain some
	  metadata (so the postlist table is not empty).  Fixes ticket
	  #356.

Tue Mar 31 13:49:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Change
	  return types of clone() and unserialise() methods to be of the
	  subclass returned; this is a bit more flexible, but the main
	  reason is to be consistent: previously, the clone() methods
	  returned the subclass, but the unserialise() methods returned
	  PostingSource.

Tue Mar 31 12:10:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h: Add comment on PostingSource base
	  class listing it as an experimental feature.
	* docs/deprecation.rst: Describe what "experimental" features are,
	  and why replication and posting sources are currently
	  experimental.

Tue Mar 31 11:34:25 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h: Removed currently unused header to stop
	  doxygen from generating documentation for it.

Tue Mar 31 11:27:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/replication.rst,include/xapian/replication.h: Note that
	  replication is currently "experimental".

Fri Mar 27 14:29:05 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_spelling.cc,backends/chert/chert_spelling.h,
	  backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h:
	  Fix WritableDatabase::remove_spelling() to not be very broken in
	  several ways.
	* tests/api_spelling.cc: Add test coverage for it.

Fri Mar 27 10:43:34 GMT 2009  Olly Betts <olly@survex.com>

	* xapian-config.in: Add @LIBRARY_VERSION_SUFFIX@ to -lxapian too.

Fri Mar 27 08:22:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h: Update documentation comments to
	  refer to init() instead of the old name of reset().

Fri Mar 27 08:10:48 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Document the lcov make targets.

Fri Mar 27 07:44:59 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am: Add two new targets to assist generating test coverage
	  reports with lcov: coverage-reconfigure which reruns configure in
	  the source tree and coverage-check which runs "make check" and
	  generates an HTML report in a directory called "lcov".

Thu Mar 26 23:59:36 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,m4-macros/xapian.m4,xapian-core.spec.in: Rename
	  xapian.m4 to xapian-1.1.m4 to avoid clash with Xapian 1.0.x.  Both
	  xapian.m4 and xapian-1.1.m4 will contain XO_LIB_XAPIAN, but aclocal
	  copes and only copies one of them.  We need to avoid incompatible
	  changes to XO_LIB_XAPIAN though.

Thu Mar 26 14:29:54 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac,include/Makefile.mk,xapian-config.in: Install headers
	  in $prefix/include/xapian-1.1/ so they don't clash with 1.0.

Thu Mar 26 13:46:06 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Default program suffix to -1.1 if not specified.  If
	  you really want no suffix, "./configure --program-suffix=" will
	  achieve that.

Thu Mar 26 12:49:10 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,api/Makefile.mk,backends/Makefile.mk,
	  backends/chert/Makefile.mk,backends/flint/Makefile.mk,
	  backends/inmemory/Makefile.mk,backends/multi/Makefile.mk,
	  backends/remote/Makefile.mk,bin/Makefile.mk,common/Makefile.mk,
	  configure.ac,examples/Makefile.mk,expand/Makefile.mk,
	  languages/Makefile.mk,matcher/Makefile.mk,net/Makefile.mk,
	  queryparser/Makefile.mk,tests/Makefile.am,tests/perftest/Makefile.mk,
	  unicode/Makefile.mk,weight/Makefile.mk,xapian-config.in,
	  xapian-core.spec.in: Change library name to libxapian-1.1 as a first
	  step towards allowing parallel installation with 1.0.x.

Thu Mar 26 06:53:27 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Mar 26 06:50:44 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.h: Fix class name in file doc comment.

Thu Mar 26 00:13:48 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Call ChertDatabase::close() rather than repeating its code.

Wed Mar 25 17:39:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Release the lock when the database is closed (either due to a
	  call to close() or due to a serious error during modifications).
	  Should fix ticket #354.

Wed Mar 25 16:42:58 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testutils.cc: Use TEST_EQUAL_DOUBLE_ for comparison
	  of weights in mset, to fix test failures due to floating point
	  differences.  (Currently only manifests in some tests in the
	  matchspy branch, but it's a generally useful fix.)

Wed Mar 25 11:44:36 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Only put ANSI_CXXFLAGS in CXXFLAGS for the duration of
	  configure - put it in AM_CXXFLAGS for substituting so that the user
	  can safely override CXXFLAGS at make-time: "make CXXFLAGS=-Os"

Wed Mar 25 10:50:44 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Fix comment typo.

Wed Mar 25 04:48:50 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/const_database_wrapper.h,
	  common/database.h: Drop the default value of the lazy parameter to
	  Database::open_document() - it's better to force us to consider
	  whether a new call should be lazy or not.
	* common/database.h: Better description of lazy parameter.
	* backends/remote/remote-database.cc: Update comment about when lazy
	  is set to true.

Wed Mar 25 04:20:34 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Don't "return false" when
	  the return type is a pointer!

Tue Mar 24 17:42:22 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/database.cc: Open documents lazily in
	  collect_document().

Tue Mar 24 11:10:57 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
	  MultiPostList::read_position_list() is never used, so remove it.

Tue Mar 24 10:04:03 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc: Remove "[" and "]" from the output
	  of MultiPostList::get_description().  Remove excess "," from output
	  of MultiPostList::get_description().
	* tests/api_db.cc: Add some test coverage of
	  PostingIterator::get_wdf() and PostingIterator::get_description().

Tue Mar 24 10:00:23 GMT 2009  Olly Betts <olly@survex.com>

	* api/ompostlistiterator.cc: Remove "[" and "]" from
	  Xapian::PostingIterator::get_description() as they don't add
	  anything useful.

Tue Mar 24 09:57:39 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Add a space in the output
	  of InMemoryPostList::get_description() and
	  InMemoryAllDocsPostList::get_description().

Tue Mar 24 08:52:46 GMT 2009  Olly Betts <olly@survex.com>

	* api/leafpostlist.cc,include/xapian/weight.h,tests/api_db.cc,weight/:
	  Get rid of the virtual Weight::get_sumpart_needs_doclength() method
	  - subclasses can call need_stat(DOC_LENGTH) in their constructor if
	  they need doc lengths.

Tue Mar 24 07:55:06 GMT 2009  Olly Betts <olly@survex.com>

	* weight/weight.cc: Check stats_needed for stats which aren't just a
	  simple member variable lookup.

Tue Mar 24 06:46:24 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
	  MultiPostList::get_termfreq() is never used, so remove it.

Mon Mar 23 14:09:33 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Add test coverage for
	  Xapian::Unicode::append_utf8().

Mon Mar 23 11:40:09 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,docs/postingsource.rst,
	  include/xapian/postingsource.h,matcher/externalpostlist.cc,
	  tests/api_db.cc,tests/api_percentages.cc,tests/api_valuestream.cc:
	  Rename PostingSource::reset() to PostingSource::init().

Mon Mar 23 11:01:02 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Fix documentation comment in line with
	  the corrected --help output from "Sat Feb 21 08:18:21 GMT 2009".

Mon Mar 23 02:24:44 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix handling of empty and single subquery
	  OP_NEAR and OP_PHRASE (was breaking queryparsertest).

Sun Mar 22 10:23:37 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_positionlist.cc,
	  common/inmemory_positionlist.h,docs/deprecation.rst,
	  tests/api_posdb.cc: Change Database::positionlist_begin() not to
	  throw exceptions if the term or document doesn't exist.

Sun Mar 22 09:02:46 GMT 2009  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Fix typo.

Sun Mar 22 07:54:30 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h,tests/api_nodb.cc,
	  tests/api_query.cc: Fix valgrind errors on nearsubqueries1
	  (ticket#349) and enhance distribution of OP_NEAR/OP_PHRASE over
	  non-leaf subqueries to work when there are multiple non-leaf
	  subqueries (ticket#201).  Extend nearsubqueries1 to test that
	  trying to distribute OP_NEAR/OP_PHRASE over OP_NEAR/OP_PHRASE
	  throws UnimplementedError.

Fri Mar 20 08:43:20 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_query.cc: Add coverage for OP_AND with MatchNothing
	  subquery (new testcase matchnothing1).

Fri Mar 20 05:16:18 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix assertions in previous check-in to
	  verify the right condition.  And return the simplified query in
	  the case the assertion would have failed, as that means a small
	  memory leak rather than unpredictable behaviour in a non-assertion
	  build.

Fri Mar 20 04:26:29 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Check that end_construction() returns NULL
	  when unserialising queries.

Fri Mar 20 02:51:32 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix return type of
	  Xapian::Query::Internal::simplify_query() in a debug build.  Since
	  RETURN() isn't used by this function, this is only a cosmetic issue
	  in the log file.

Wed Mar 18 09:26:02 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc,
	  docs/deprecation.rst: Move just returning an empty PositionIterator
	  from Database::positionlist_begin() when the docs or term isn't
	  present from 1.2.0 to 1.1.0 (has to be 1.1.0 or 1.3.0 really).

Wed Mar 18 09:24:27 GMT 2009  Olly Betts <olly@survex.com>

	* docs/glossary.rst: Chert as the default backend in 1.2.0 is pretty
	  much definite.

Wed Mar 18 06:42:09 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed Mar 18 04:36:59 GMT 2009  Olly Betts <olly@survex.com>

	* xapian-core.spec.in: Tweak reference to "1.1.0 branch" to make more
	  sense.

Wed Mar 18 04:30:18 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Remove the
	  optional "max_weight_" parameter to ValuePostingSource's ctor.
	* include/xapian/postingsource.h: Correct a few errors in
	  documentation comments.

Wed Mar 18 04:29:22 GMT 2009  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: "ctx" -> "context" in example code.

Tue Mar 17 23:45:52 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: If the
	  locking attempt fails after we spawn the child process, call
	  waitpid() in the parent process to avoid creating a zombie process.
	* AUTHORS: Add Jim Spath for reporting this.

Tue Mar 17 23:34:16 GMT 2009  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/str.cc,common/str.h: New family of
	  overloaded str() functions for converting types to std::string.
	  The integer conversion are much faster than the existing
	  om_tostring().
	* common/omassert.h,common/omdebug.h: Use str() instead of
	  om_tostring().
	* common/utils.cc,common/utils.h: Make om_tostring() a macro wrapping
	  str() for now to avoid introducing a lot of conflicts with other
	  branches and unapplied patches.

Tue Mar 17 21:28:54 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: Fix comment typo.

Tue Mar 17 00:47:26 GMT 2009  Olly Betts <olly@survex.com>

	* common/utils.cc: Fix previous change to actually compile...

Mon Mar 16 20:10:01 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.cc,common/utils.h: Add om_tostring() version of
	  unsigned long long int, to fix debug build on i686.

Mon Mar 16 14:01:02 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.11.

Fri Mar 13 06:59:29 GMT 2009  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Need "utils.h" for om_tostring().

Fri Mar 13 05:47:24 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Note that QueryParser::FLAG_DEFAULT
	  was new in 1.0.11.

Fri Mar 13 04:36:19 GMT 2009  Olly Betts <olly@survex.com>

	* weight/weightinternal.cc: Implement
	  Weight::Internal::get_description().

Thu Mar 12 11:57:02 GMT 2009  Olly Betts <olly@survex.com>

	* common/output.h: Fix last commit.

Thu Mar 12 11:29:58 GMT 2009  Olly Betts <olly@survex.com>

	* common/output.h: Define operator<< for Xapian::Weight::Internal.

Thu Mar 12 11:21:09 GMT 2009  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Fix overlooked case which was still sending
	  REPLY_DOCLENGTH as a double.

Wed Mar 11 22:56:59 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_valuelist.cc: Fix comment typo.

Wed Mar 11 22:50:49 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_valuestream.cc: Enable valuestream3 for chert.
	* backends/chert/chert_valuelist.cc: Fix return value of
	  ChertValueList::check() when it needs to move to a new chunk.
	  Fixes valuestream3 test.

Wed Mar 11 13:17:58 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/weight.h: Mark Weight::init_() methods as "@private
	  @internal" for doxygen API docs.

Wed Mar 11 13:13:32 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/weight.h,tests/api_db.cc,tests/api_nodb.cc,
	  weight/bm25weight.cc,weight/boolweight.cc,weight/tradweight.cc:
	  Make Weight::name() return std::string to allow sane wrapping
	  with SWIG directors.

Wed Mar 11 05:46:40 GMT 2009  Olly Betts <olly@survex.com>

	* api/,backends/chert/,backends/contiguousalldocspostlist.cc,
	  backends/flint/,backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
	  backends/remote/,common/,docs/remote_protocol.html,
	  include/xapian/database.h,include/xapian/postingiterator.h,matcher/,
	  net/remoteserver.cc: Internally, pass around non-normalised document
	  lengths as Xapian::termcount (unsigned integer) not Xapian::doclength
	  (double).

Wed Mar 11 05:25:40 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Use TEST_REL; wrap long comment.

Wed Mar 11 04:52:41 GMT 2009  Olly Betts <olly@survex.com>

	* Makefile.am,api/,backends/chert/,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
	  examples/delve.cc,include/Makefile.mk,include/xapian.h,
	  include/xapian/database.h,include/xapian/enquire.h,
	  include/xapian/weight.h,matcher/,net/remoteserver.cc,
	  net/serialise.cc,tests/,weight/: Reimplementation of weighting
	  schemes which allows user subclasses to access the same stats which
	  built in schemes can (bug#213) and which also can use lower and
	  upper bounds of doclength and upper bounds on wdf to give a tighter
	  maxweight, which should allow the matcher weight-based optimisations
	  to be more effective.  Chert now tracks doclength bounds and a
	  global (rather than per term) bound on wdf.  Other backends
	  return much less good bounds, but these still lead to better
	  maxweight bounds.

Wed Mar 11 00:13:24 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/query.h: Rename parameter name from "ctx" to the
	  more human-friendly "context".

Tue Mar 10 14:03:33 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc: If mset_range_is_same_percents() fails
	  because the percentages differ, report what they were to tout.

Mon Mar 09 12:27:28 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: Remove special case handling for empty string
	  being returned from the TermIterator returned by
	  Query::Internal::get_terms() as this should no longer happen.

Mon Mar 09 12:09:21 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Don't return "" from a TermIterator from
	  Query::get_terms_begin() (happened when Query contained or was
	  Query::MatchAll).
	* tests/Makefile.am,tests/api_query.cc: Add regression testcase
	  queryterms1.

Sun Mar 08 06:16:24 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Add check that backends don't truncate total
	  document length to 32 bits.

Sun Mar 08 06:02:43 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_backend.cc: Disable lockfileumask1 on Cygwin and on OS/2.

Sun Mar 08 05:36:54 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/extraweightpostlist.h: Add forward declaration of
	  Xapian::Weight since we use "Xapian::Weight *".

Sun Mar 08 04:39:22 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_types.h,backends/flint/flint_types.h,
	  bin/xapian-check-flint.cc,bin/xapian-check.cc,bin/xapian-compact.cc,
	  common/Makefile.mk,common/database.h,common/internaltypes.h:
	  Move totlen_t to a new header (internaltypes.h) to avoid needing to
	  pull in database.h in when we want to use it.  Also move int4 and
	  uint4 there to avoid duplicated definitions and abstract out a
	  new uint8 from defining totlen_t.

Sun Mar 08 00:50:38 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.h,backends/chert/chert_types.h,
	  backends/flint/flint_database.h,backends/flint/flint_types.h,
	  bin/xapian-check-flint.cc,bin/xapian-check.cc,bin/xapian-compact.cc,
	  common/database.h: Replace flint_totlen_t and chert_totlen_t with
	  a common totlen_t.

Sat Mar 07 08:35:27 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Wrap comment.

Sat Mar 07 08:28:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h: Fix file description
	  ("multiple database" -> "inmemory database").

Sat Mar 07 08:25:11 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Store non-normalised document
	  lengths as Xapian::termcount (unsigned int) rather than
	  Xapian::doclength (double).

Sat Mar 07 06:56:26 GMT 2009  Olly Betts <olly@survex.com>

	* common/database.h: Removed unused forward declarations of classes.

Sat Mar 07 06:52:11 GMT 2009  Olly Betts <olly@survex.com>

	* common/database.h: Fix comment typo.

Sat Mar 07 05:44:18 GMT 2009  Olly Betts <olly@survex.com>

	* net/serialise.cc: Fix top of file to actually be a doxygen comment.
	  Tweak layout of definition of serialise_stats().

Sat Mar 07 05:40:58 GMT 2009  Olly Betts <olly@survex.com>

	* net/serialise.cc: c_str() -> data() since we don't need the
	  nul-termination.

Thu Mar 05 11:49:45 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/api_nodb.cc: Back out accidentally committed
	  changes 2 commits ago.

Thu Mar 05 10:28:07 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS: Add Frank J. Bruzzaniti for omindex patches.

Thu Mar 05 10:20:38 GMT 2009  Olly Betts <olly@survex.com>

	* tests/Makefile.am: If both chert and flint are enabled, run
	  remoteprog_chert and remotetcp_flint but not the other two
	  combinations as they don't buy us any useful extra test
	  coverage, but cost a lot of extra time per testrun.

Thu Mar 05 07:51:52 GMT 2009  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Update to reflect that odd minor versions are
	  now development series.

Thu Mar 05 04:20:43 GMT 2009  Olly Betts <olly@survex.com>

	* common/serialisationcontextinternal.h: Fix forward declarations.

Thu Mar 05 02:11:26 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: "new_uuid" -> "sub_uuid" - it's not really new.

Wed Mar 04 22:53:13 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,include/xapian/termgenerator.h: Make
	  default empty std::string parameters use std::string() rather than
	  "".

Wed Mar 04 16:06:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: If a sub-database of a multi-database has no
	  uuid, we cannot return a uuid for the database, so return
	  string() instead.
	* tests/api_anydb.cc: Test for this.

Wed Mar 04 13:45:41 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING: Conversion to C++ names for ISO C headers will happen in
	  1.1.x, not 1.1.0.

Wed Mar 04 13:37:47 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,
	  backends/remote/remote-database.cc,common/database.h,
	  include/xapian/database.h,net/remoteserver.cc,tests/api_anydb.cc:
	  Return an empty string from Database::get_uuid() when then backend
	  doesn't support UUIDs for consistency with flint when the database
	  has no UUID.  For a multiple database, build a string from the UUIDs
	  of each subdatabase and return this as the UUID.  If there are no
	  subdatabases return the empty string.

Wed Mar 04 11:34:04 GMT 2009  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteprotocol.h,
	  common/remoteserver.h,docs/remote_protocol.html,net/remoteserver.cc:
	  Change the remote server to always default to opening a Database and
	  having the client request write access explicitly.  This allows a
	  single server to support multiple readers and one writer
	  simultaneously.  (bug#145)
	* net/remoteserver.cc,backends/remote/remote-database.cc: For constant
	  empty string parameters, pass string() rather than "".
	* common/remoteserver.h: Remove unused '#include <map>'.  Remove
	  'using namespace std;' and explicitly qualify the few bare mentions
	  of 'string'.

Wed Mar 04 07:24:39 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Sync with latest upstream lempar.c
	  (only changes were in code which isn't in our version).

Wed Mar 04 04:03:44 GMT 2009  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/api_percentages.cc,
	  tests/testdata/apitest_sortconsist.txt: Apply regression test patch
	  from bug#216.

Wed Mar 04 03:41:49 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h,matcher/multimatch.cc: Fix inconsistent
	  percentage scores when sorting primarily by valuei, except when
	  a MatchDecider is also being used; document this remaining problem
	  case.  (bug#216)

Wed Mar 04 01:58:07 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc: No need
	  to initialise inflate_zstream->next_out and avail_out twice.

Wed Mar 04 01:16:32 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc: If
	  deflateReset() or inflateReset() fails, just delete the zstream
	  take the initialisation codepath - that should mean we recover
	  if the stream does somehow end up in a bad state and is less
	  code than throwing an exception.  Annotate tests with rare()
	  or usual() if they are for exceptional conditions.  Fix bug
	  introduced by the laziness patch which was adding an int error
	  code to a const char * message.  If deflateInit2() or inflateInit2()
	  fails, delete and zero the stream so there's no risk of ending up
	  wedged on a partly initialised stream.

Tue Mar 03 15:32:53 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Check for errors from deflateReset() and inflateReset() - there
	  shouldn't be any if we've given them a valid stream, so just
	  raise InternalError if we get one.

Tue Mar 03 09:43:34 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Updated from ChangeLog.

Tue Mar 03 05:52:16 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Fix testcase closedb2 not to create a test
	  database named closedb3.

Tue Mar 03 04:31:48 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add QueryParser::FLAG_DEFAULT to make
	  it easier to add flags to those set by default.
	* tests/queryparsertest.cc: Use FLAG_DEFAULT in a few places to serve
	  as a feature test.

Tue Mar 03 03:45:53 GMT 2009  Olly Betts <olly@survex.com>

	* docs/index.html: Add link to new serialisation topic document.
	* docs/serialisation.rst: Reword to avoid pluralising class names.
	  Add link to postingsource document where we reference it.

Tue Mar 03 03:35:29 GMT 2009  Olly Betts <olly@survex.com>

	* tests/runsrv.in: Use @top_builddir@ rather than relying on it
	  coming from the environment.

Tue Mar 03 03:05:47 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Clear tout regularly in modifyvalues1 as
	  otherwise the output builds up.  Some string stream implementations
	  get very inefficient with large strings, and also this seems to
	  interact badly with valgrind's leak detection resulting in the
	  test having to be rerun to check if it really leaks.  Prefer
	  tout.str(string()) to tout.str("") in existing uses too.

Tue Mar 03 01:41:07 GMT 2009  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Update handling of shutting down
	  the zstream objects in the dtor to match chert.

Mon Mar 02 23:57:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.h,backends/flint/flint_table.h: Add
	  documentation comments for the lazy allocation methods, and
	  separate comments for the zstream members.

Mon Mar 02 23:40:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS,backends/chert/chert_table.cc,backends/chert/chert_table.h,
	  backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Reduce allocation of zstreams by allocating them lazily, keeping
	  them in the table objects, and reuse them, rather than allocating
	  a new one each time it's wanted.  Heavily based on a patch from
	  Todd Lipcon.  Apparently improves performance significantly on
	  some systems; on my tests it has no perceptible negative impact,
	  but it makes sense that it could help in some situations, so
	  let's apply it.  Fixes #325.

Mon Mar 02 21:10:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Deprecate Stem_get_available_languages()
	  from the python bindings.

Mon Mar 02 19:56:20 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* common/Makefile.mk,common/const_database_wrapper.cc,
	  common/const_database_wrapper.h,matcher/queryoptimiser.cc: Avoid
	  const_cast() on Database::Internal, and exposing
	  compiler-dependent behaviour if non-const methods are called, by
	  adding a ConstDatabaseWrapper class, which is a subclass of
	  Database::Internal, and also takes a Database::Internal as a
	  parameter, to be wrapped.  This class proxies all const methods
	  to the wrapped Database::Internal, and raises
	  InvalidOperationError on non-const methods.  Fixes #332.

Mon Mar 02 18:27:00 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h: Documentation comment
	  improvements.  Be explicit that Xapian will call reset() before
	  various methods, and will call next, skip_to or check before
	  at_end.
	* include/xapian/query.h: Wrap over-long line.

Mon Mar 02 18:26:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am,docs/serialisation.rst: Add topic document about
	  serialisation.

Mon Mar 02 17:58:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* docs/postingsource.rst: Update documentation with new design.

Mon Mar 02 17:16:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc: Change serialisation of queries to use
	  encode_length() rather than om_tostring(), for a more compact and
	  easier to parse representation.

Mon Mar 02 14:48:08 GMT 2009  Olly Betts <olly@survex.com>

	* backends/multi/multi_alltermslist.cc: Fix memory leak which
	  was causing allterms6 to fail.

Mon Mar 02 14:15:11 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/externalpostlist.cc: Fix memory leak in external source
	  postlist (fixes fixedweightsource1).

Mon Mar 02 13:41:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Don't set max_weight in
	  ValueMapPostingSource::set_default_weight() - it's set in
	  reset() before being used, and it's not been set here yet, so
	  accessing it in std::max() was making valgrind complain.

Mon Mar 02 12:23:01 GMT 2009  Olly Betts <olly@survex.com>

	* HACKING,configure.ac,tests/runtest.in: Don't use valgrind if it's
	  < 3.3.0 as that's well over a year old and greatly simplifies the
	  configure tests.  Fix options passed to valgrind so that the
	  testsuite harness actually reports problems detected by newer
	  valgrind versions.

Mon Mar 02 10:08:25 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/,bin/xapian-tcpsrv.cc,common/Makefile.mk,common/remoteserver.h,
	  common/serialisationcontextinternal.h,include/Makefile.mk,
	  include/xapian.h,include/xapian/enquire.h,include/xapian/query.h,
	  include/xapian/serialisationcontext.h,net/remoteserver.cc,
	  tests/api_serialise.cc,tests/internaltest.cc: Add
	  SerialisationContext.  This object is used to register
	  PostingSource or Weight subclasses, so that they can be
	  serialised and unserialised, and therefore used in remote
	  searches.  Add two-argument form for Query::unserialise() which
	  takes a serialisation context.  Fixes #206.

Mon Mar 02 07:13:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Further tweak to wording of
	  documentation about close().

Mon Mar 02 07:05:54 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/chert/chert_table.h,
	  backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Factor out more "throw Xapian::DatabaseError("Database has been
	  closed")" bits into separate functions: knocks another 20KB off
	  the shared library size.

Mon Mar 02 05:46:15 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Document how to get all matches from
	  Enquire::get_mset().

Mon Mar 02 04:52:17 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Factor out "throw
	  Xapian::DatabaseError("Database has been closed") into a separate
	  function which knocks over 100KB off the shared library size (just
	  over 0.5%).

Mon Mar 02 03:57:17 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/phrasepostlist.h: Remove blank line from end of file.

Mon Mar 02 03:52:10 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc,common/msvc_posix_wrapper.cc: Cuddle braces for
	  "if" and "switch".

Mon Mar 02 03:32:32 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Use more conventional uppercase macro parameter
	  names.  Wrap long comments.  Remove another unused exception name.

Mon Mar 02 03:21:39 GMT 2009  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/chert/chert_databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc,net/remoteserver.cc,
	  tests/api_closedb.cc,tests/perftest/perftest_matchdecider.cc:
	  Don't name the exception being caught if we don't look at it.  While
	  GCC doesn't currently warn "unused variable" here, I'm fairly sure
	  there are compilers which do.

Mon Mar 02 03:20:52 GMT 2009  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: Wrap overlong comment.

Mon Mar 02 03:17:48 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/mergepostlist.cc: Change "do { ... } while (true);" to the
	  more usual "while (true) { ... }".

Sun Mar 01 19:41:16 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_closedb.cc: Merge closedb1 and closedb2 into a single
	  test, and add lots more checking to it.  Rename closedb3 to
	  closedb2, to avoid leaving an odd gap.  closedb1 needs more work,
	  but is a useful start; committing now, rather than once I've done
	  this work, since the old test is failing in buildbot, and I don't
	  want to get in the way of snapshot tarballs.

Sun Mar 01 19:27:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Add a few guards to throw DatabaseError when the database has
	  been permanently closed, rather than behaving as if the table is
	  empty in that situation.  Also, don't delete the resources in the
	  table when Database::close() is called, because they may still be
	  used to attempt to look up cached content.

Sun Mar 01 18:22:52 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Update documentation comments for
	  reopen() and close() to document the API we're aiming for (ie,
	  that closed databases either return the right result from cache,
	  or raise a DatabaseError).

Sun Mar 01 18:20:19 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Add a flag to mark whether
	  the database is closed, and add guards before all methods which
	  access content which goes away when the database is closed, to
	  raise an exception if the database is closed.

Sun Mar 01 18:20:03 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/inmemory/inmemory_document.h: Fix a typo in a comment.

Sun Mar 01 17:49:26 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/mergepostlist.cc: Fix ticket #336 by calling
	  recalc_maxweight when a sub-posting list finishes (other than
	  after the last one, where there is no point in calling
	  recalc_maxweight).

Sun Mar 01 15:34:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_db.cc: Fix MyDontAskWeightPostingSource to use the
	  database passed to reset(), rather than one passed to its
	  constructor.  This allows externalsource4 to be enabled for
	  multidatabases.

Sun Mar 01 13:07:37 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h: Add comments as discussed in
	  ticket #295 to make clear that in a multi-database search,
	  PostingSources are passed a single sub-database.  Also mention
	  that the returned value of clone() will be deallocated with
	  delete.

Sat Feb 28 08:21:33 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_database.h,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
	  examples/copydatabase.cc,include/xapian/database.h,
	  net/remoteserver.cc,tests/,tests/perftest/perftest_matchdecider.cc,
	  tests/perftest/perftest_randomidx.cc,tests/queryparsertest.cc: Add
	  WritableDatabase::commit() as a new, preferred alias for
	  WritableDatabase::flush().  (bug#266)

Fri Feb 27 01:59:31 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/database.h: WritableDatabase::flush() can't throw
	  DatabaseLockError.  WritableDatabase's ctor can throw at least
	  DatabaseCorruptError or DatabaseLockError.

Thu Feb 26 14:54:28 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/api_valuestream.cc: Update comments about why
	  certain tests are disabled for certain backends.  Enable
	  valueweightsource5 for multi and valuemapsource2 for remote.

Thu Feb 26 14:53:19 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: Use AssertRelParanoid() instead
	  of AssertParanoid() so the values get reported if the assertion
	  fails.

Thu Feb 26 14:18:21 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Tweak word order.

Thu Feb 26 12:48:16 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Make the PostingSource subclass ctors which are
	  only called from clone() private to set a good example for users.

Thu Feb 26 12:28:34 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Fix doc comment typo.

Thu Feb 26 12:08:40 GMT 2009  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h: Avoid copying
	  Query::Internal objects needlessly when unserialising Query
	  objects.

Thu Feb 26 10:07:18 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: A couple more uncollapsed tests.

Thu Feb 26 08:28:42 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_wrdb.cc,tests/harness/testsuite.h,
	  tests/perftest/perftest_matchdecider.cc,tests/queryparsertest.cc:
	  Update to use new TEST_REL() macro.  Remove old TEST_LESSER(),
	  etc.

Thu Feb 26 07:51:43 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix the new
	  Enquire::get_uncollapsed_matches_lower_bound(), etc methods for
	  certain cases.
	* tests/api_anydb.cc,tests/api_db.cc: Extend existing tests to also
	  check Enquire::get_uncollapsed_matches_lower_bound(), etc.

Thu Feb 26 07:49:23 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/Makefile.mk,tests/harness/testmacros.h,
	  tests/harness/testsuite.h: Add new "TEST_REL" macro which can test
	  for a condition using any relational operator and report a failure
	  clearly yet concisely.

Wed Feb 25 13:43:41 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix adjustment of the uncollapse bounds and
	  estimate.

Wed Feb 25 12:32:13 GMT 2009  Olly Betts <olly@survex.com>

	* configure.ac: GCC --version keeps changing format, and as a result
	  we were currently getting "g++" as the version.  So change to the
	  (hopefully) more robust technique of using g++ -E to pull out
	  __GNUC__ and __GNUC_MINOR__.

Wed Feb 25 03:14:08 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix for compiling with Sun's compiler
	  (untested as I no longer have access to it).

Mon Feb 23 14:11:12 GMT 2009  Olly Betts <olly@survex.com>

	* docs/sorting.rst: Clarify meaning.

Mon Feb 23 14:04:50 GMT 2009  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,include/xapian/enquire.h,tests/: Rename the
	  wrongly named "ascending" parameter of the set_sort_by*() methods
	  of Enquire to "reverse" and deprecate the default value since
	  defaulting to "reverse=true" is confusing.  (bug#311)

Mon Feb 23 01:24:23 GMT 2009  Olly Betts <olly@survex.com>

	* api/omenquire.cc,backends/remote/remote-database.cc,
	  common/multimatch.h,common/omenquireinternal.h,
	  common/remote-database.h,docs/collapsing.rst,
	  docs/remote_protocol.html,include/xapian/enquire.h,matcher/,
	  net/remoteserver.cc,net/serialise.cc,tests/Makefile.am,
	  tests/api_collapse.cc: Replace the collapsing code in the matcher
	  with a separate Collapser class.  This new class can keep more than
	  one document with each collapse key.  Also track bounds and an
	  estimate of the total number of matches if collapsing wasn't in use.

Mon Feb 23 00:52:16 GMT 2009  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix AssertionError from apitest testcases
	  fixedweightsource2 and valueweightsource1.

Sun Feb 22 11:02:24 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Check for
	  fork failing *after* we check if we're now the child process.

Sun Feb 22 10:06:13 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Note
	  explicitly why we now have the strange empty if (not) checking the
	  return value of chdir("/") (it's actually newer glibc and
	  _FORTIFY_SOURCE rather than newer GCC).  Retry closing filehandle if
	  it returns EINTR.  Whitespace tweaks.

Sat Feb 21 11:04:08 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Fix
	  warning about ignoring result of chdir (with GCC 4.2)

Sat Feb 21 08:18:21 GMT 2009  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix option usage in --help - "-x=foo"
	  doesn't work - "-x foo" does.

Sat Feb 21 07:37:01 GMT 2009  Olly Betts <olly@survex.com>

	* tests/perftest/perftest_randomidx.cc: Use two argument version of
	  rand_int() where applicable.  Reserve length of result string in
	  gen_word().  Fix truncated comment.

Sat Feb 21 04:27:45 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: In the
	  locking child process, before we exec /bin/cat change directory to
	  / so that we don't block unmounting of any partitions and close
	  any open file descriptors (apart from those we're using) so that if
	  the files are closed by our parent and deleted the disk space gets
	  released right away.

Sat Feb 21 02:06:56 GMT 2009  Olly Betts <olly@survex.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Pass string as
	  const string &; drop trailing "_" from parameters which don't clash
	  with member variables; fix brace formatting on a couple of for
	  loops.

Fri Feb 20 14:32:46 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_closedb.cc: Fix testcase closedb3 not to create a test
	  database named closedb2.

Fri Feb 20 01:38:32 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Documentation comment improvements.

Wed Feb 18 06:48:43 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Use AssertRel rather than Assert with an
	  inequality so that we see the arguments if the assertion fails.

Wed Feb 18 06:39:33 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: "items" -> "rsetitems" to distinguish from
	  items used elsewhere for the MSet items.

Wed Feb 18 06:20:38 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Drop superfluous "std::".

Wed Feb 18 05:46:59 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Tue Feb 17 23:53:54 GMT 2009  Olly Betts <olly@survex.com>

	* include/xapian/document.h,include/xapian/query.h: "xapian" ->
	  "Xapian".

Tue Feb 17 15:02:49 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/document.h,include/xapian/query.h: Soften comment
	  warning about changes in serialised format between xapian
	  versions; note that the format won't change unless the remote
	  database protocol has changed.

Tue Feb 17 14:59:29 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omquery.cc: Return std::string() rather than "" to encourage
	  compilers to use special empty string representation.

Mon Feb 16 14:27:28 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Change the name() methods of the built-in
	  posting sources to return a full name (starting with Xapian:: and
	  ending with PostingSource), as documented in the API
	  documentation comments.

Mon Feb 16 13:32:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc,common/remoteserver.h,
	  matcher/externalpostlist.cc,matcher/externalpostlist.h,
	  matcher/queryoptimiser.cc,net/remoteserver.cc,
	  tests/api_percentages.cc,tests/api_valuestream.cc: Add some
	  copyright lines missed in changeset [11838].

Mon Feb 16 11:56:46 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* matcher/queryoptimiser.cc: Add another reference from a FIXME to
	  a ticket number.

Mon Feb 16 11:47:21 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc: Update two FIXMEs to reference the
	  appropriate ticket.

Mon Feb 16 10:11:39 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* Add support for multi and remote backends with posting sources,
	  from ticket #295:
	* include/xapian/postingsource.h: Add some clarifying comments
	  about the interface of PostingSources, and add clone(), name(),
	  serialise() and unserialise() methods to PostingSources, for
	  remote and multidatabase support.
	* include/xapian/query.h: Add internal member to track ownership of
	  external posting sources, and update some comments.
	* api/postingsource.cc: Add implementations of the new methods, so
	  that all standard PostingSources support remote and multi
	  database searches.
	* api/omquery.cc: Clone external PostingSources if possible.
	* api/omqueryinternal.cc: Add serialisation and unserialisation
	  support for posting sources, and support for keeping track of
	  whether an external posting source is owned by the query object
	  or not (ie, whether it needs to be deleted by the destructor).
	* matcher/externalpostlist.cc,matcher/externalpostlist.h: (Attempt
	  to) clone external posting sources at start, and call the reset()
	  method with the database in use.  Delete the posting source
	  afterwards, if the clone was successful.
	* matcher/queryoptimiser.cc: Pass the database to ExternalPostList.
	  Sadly, this currently requires a const_cast.
	* tests/: Update tests of PostingSources to take the db parameter
	  on the reset() method, and to test behaviour with multi and
	  remote backends where appropriate.  Also, add regression test for
	  segfault in FixedWeightPostingSource::skip_to() when database is
	  empty.
	* net/remoteserver.cc,common/remoteserver.h: Add the built-in
	  posting sources to the remote server, and add
	  register_posting_source() to the remoteserver, for use in
	  xapian-tcpsrv.cc for user posting sources, analogously to
	  register_weighting_scheme().

Fri Feb 13 20:09:10 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Fix segfaults which occur if an empty
	  ValuePostingSource subclass has the skip_to() or check() methods
	  called on it first.
	* tests/api_db.cc tests/api_valuestream.cc: Move valuemapsource1 to
	  api_valuestream.cc, since that seems like a better place (and
	  api_db.cc is already rather over-large).  Add regression test
	  "valuemapsource2" to check the behaviour of ValuePostingSource
	  subclasses on empty lists.

Fri Feb 13 19:29:38 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Add
	  ValuePostingSource, which is a base class for implementing
	  posting sources based on reading from a value slot.  Convert
	  ValueWeightPostingSource to be a subclass of this, and add
	  ValueMapPostingSource, which is a posting source which uses a map
	  to convert values to weights.
	* tests/api_db.cc: Add valuemapsource1, testing the
	  ValueMapPostingSource.

Fri Feb 13 15:14:53 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/index_utils.cc: Add value 13, containing the first
	  3 letters of the paragraph - needed for some tests I'm going to
	  commit shortly.

Fri Feb 13 14:05:44 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_sorting.cc: Change slot number used to get an empty
	  slot from 13 to 100 - we're getting close to using slot 13 now!

Sat Feb 07 00:31:12 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc:
	  Return accidentally changed "XAPIAN_ASSERTIONS_VERBOSE" ifdefs to
	  "XAPIAN_DEBUG_VERBOSE".

Sat Feb 07 00:16:43 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* api/omdocument.cc,api/omquery.cc,include/xapian/document.h,
	  include/xapian/query.h: Add methods for serialising documents and
	  queries into strings, and unserialising back from strings.  Fixes
	  most of ticket #206 - missing part is that serialising queries
	  containing PostingSources doesn't work.
	* tests/Makefile.am,tests/api_serialise.cc: Add tests of document
	  and query serialisation.

Fri Feb 06 16:06:50 GMT 2009  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Set HAVE_PREAD and HAVE_PWRITE if pread and pwrite
	  are found; turns use of pread and pwrite back on.  This improves
	  the speed of a test case of 10,000 (fully cached) searches from
	  1.84 seconds to 1.78 seconds for me (on ubuntu hardy) - ie, about
	  3% speed increase.

Tue Jan 20 06:22:20 GMT 2009  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Prefer value.empty() to value == "".

Mon Jan 19 05:08:48 GMT 2009  Olly Betts <olly@survex.com>

	* AUTHORS,queryparser/Makefile.mk: Fix "#line" directives in generated
	  file queryparser/queryparser_internal.cc to give a relative path -
	  previously they had a full path when generated by a VPATH build, and
	  this confused GCC 2.95 and depcomp.

Sun Jan 18 23:34:22 GMT 2009  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Throw UnimplementedError from Enquire::get_mset()
	  if we're asked for a percentage cutoff and to sort primarily by
	  value - this has never been correctly supported and it's better to
	  warn people than give incorrect results.
	* tests/api_percentages.cc: Add test that this error gets thrown.

Tue Jan 13 08:20:36 GMT 2009  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: Swap the items vector into the
	  MSet::Internal object rather than copying it to avoid the overhead
	  of the copy.

Thu Jan 08 05:14:47 GMT 2009  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/chert/chert_postlist.cc,
	  backends/flint/flint_cursor.cc,backends/flint/flint_postlist.cc,
	  backends/multi/multi_postlist.cc,common/omassert.h,configure.ac,
	  matcher/multimatch.cc: Change preprocessor defines controlling
	  assertions from XAPIAN_DEBUG->XAPIAN_ASSERTIONS and
	  XAPIAN_DEBUG_PARANOID->XAPIAN_ASSERTIONS_PARANOID so their purpose
	  is clearer.

Thu Jan 08 02:23:21 GMT 2009  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed Jan 07 03:43:07 GMT 2009  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Fix FP rounding bug (bug#321).
	* AUTHORS: Add Shane Evans for bug report.

Tue Jan 06 22:08:12 GMT 2009  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Fix comment typo.

Tue Jan 06 21:39:30 GMT 2009  Olly Betts <olly@survex.com>

	* api/matchspy.cc: Add assertions to try to track down what's causing
	  bug#321.

Tue Jan 06 03:20:27 GMT 2009  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc,matcher/phrasepostlist.cc: Fix
	  comment typos.

Mon Jan 05 04:42:04 GMT 2009  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 6016" -
	  only change is to comment noting the synced version as the changed
	  code has been deleted in our version.

Fri Dec 26 15:05:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Add Database.close() method, used to
	  close the resources (in particular, the filehandles) held by a
	  database before the destructor is called.  Particularly useful
	  for the bindings from other languages.
	* api/omdatabase.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_database.h,backends/flint/flint_database.cc,
	  backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/database.h,
	  common/remote-database.h,net/remoteconnection.cc: Implementation
	  of close() methods.
	* tests/Makefile.am,tests/api_closedb.cc: New test file, for
	  testing the close method.  Could do with being expanded to test
	  many more methods of databases in the closed state, and to test
	  the behaviour after the close of objects created from databases
	  before the database was closed.

Fri Dec 26 13:42:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Raise error if database has been closed permanently when
	  cursor_get() is called - a NULL return type isn't checked in
	  various places (for tables which are never closed temporarily),
	  so this is the easiest place to add a check to avoid a segfault
	  without incurring extra overhead.

Tue Dec 23 13:42:21 GMT 2008  Olly Betts <olly@survex.com>

	* languages/compiler/analyser.c: Fix GCC 4.3 warning.

Tue Dec 23 06:35:11 GMT 2008  Olly Betts <olly@survex.com>

	* PLATFORMS: Sync with 1.0 branch.
	* PLATFORMS: Remove 0.9.x build reports; move 1.0.x build reports
	  to the "old version" section.
	* INSTALL: Adapt old footnotes from PLATFORMS about HP's aCC and IRIX
	  into new paragraphs here.

Tue Dec 23 05:19:52 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Make automake 1.10.2 a hard minimum
	  requirement.

Tue Dec 23 04:36:27 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Dec 22 16:02:58 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_databasereplicator.cc,
	  backends/databasereplicator.cc,
	  backends/flint/flint_databasereplicator.cc: Fix some missing bits
	  for debug compilation.

Mon Dec 22 13:30:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/Makefile.mk,backends/chert/,
	  backends/database.cc,backends/databasereplicator.cc,backends/flint/,
	  common/Makefile.mk,common/database.h,common/databasereplicator.h:
	  Add DatabaseReplicator base class, and subclasses for flint and
	  chert, to hold parts of database replication code which need to
	  be applied to a partially replicated database which may not be a
	  valid database.  Move the code for applying changesets and
	  comparing revision numbers into here, and add code for getting
	  uuids which simply returns "" if the database is too broken to
	  have a uuid associated with it.  Update the replication code to
	  use DatabaseReplicator subclasses instead of Database classes
	  where necessary, to avoid failing if a partial database is
	  transmitted.  Add additional checks to ensure that the UUID of a
	  replicated databse is equal to that sent in the replication
	  protocol message introducing a full database copy; if they
	  differ, a retry of the copy is needed, so ensure that the next
	  message sent is a new copy of the database.

Mon Dec 22 11:24:43 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/replication.rst: Warning about a possible way to confuse the
	  replication process.

Sat Dec 20 14:00:34 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Update (C) too.

Sat Dec 20 13:51:35 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If we're using values for sorting and for
	  another purpose, cache the Document::Internal object from getting
	  the value for sorting like we do between other uses.

Sat Dec 20 13:09:13 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_percentages.cc: Make formatting of MyPostingSource code
	  more self-consistent.  Remove a superfluous block scope.  Wrap a
	  long comment.

Sat Dec 20 12:25:40 GMT 2008  Olly Betts <olly@survex.com>

	* exception_data.pm: Build a hash mapping a class to a list of its
	  subclasses and export this as %subclasses.

Sat Dec 20 05:51:50 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Wrap a long line.

Sat Dec 20 05:28:57 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6016".

Fri Dec 19 14:25:10 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 6015".

Fri Dec 19 14:07:52 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 6006".

Fri Dec 19 13:51:33 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 5919"
	  - code changes are in deleted code, so no actual code changes for
	  us.

Fri Dec 19 13:46:22 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 6008".

Fri Dec 19 11:15:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_replicate.cc: Fix comment describing test.

Thu Dec 18 23:38:50 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc: Tidy up
	  comment wrapping and indenting of code wrapped in try blocks by the
	  previous commit.

Thu Dec 18 14:26:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_database.cc,backends/chert/chert_table.cc,
	  backends/chert/chert_table.h,backends/flint/flint_database.cc,
	  backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Improve resilience to unexpected errors during commit.  Firstly,
	  fix FlintTable and ChertTable to close the table if an error
	  occurs during commit - this avoids the table being left in an
	  inconsistent state (instead, the table is reopened in a
	  consistent state the next time it is used).  Secondly, add a
	  "permanent" close state for tables (indicated by handle being set
	  to -2), which will raise an error if anything tries to do an
	  action which needs the table to be opened, and set the tables to
	  this state if we fail to recover the database after error in
	  commit().  This prevents further actions on the database if we
	  couldn't recover the state (eg, because we're out of disk space),
	  avoiding risk of corruption.

Thu Dec 18 01:28:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Improve the error reporting when modifications fail and we cannot
	  set the revision numbers in the table to consistent values, to
	  report the original error too.

Wed Dec 17 17:27:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Fix construction of the error message when a base can't be
	  re-read: used to do pointer arithmetic by mistake - now does the
	  correct string concatenation.

Wed Dec 17 15:18:10 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_valuestream.cc: Skip valuestream3 on chert for now so that
	  snapshots and the tinderbox work again.

Wed Dec 17 15:17:07 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Need omassert.h for STATIC_ASSERT.

Wed Dec 17 10:45:45 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,tests/api_nodb.cc: A NEAR of 2 OR subqueries
	  shouldn't throw AssertionError - instead throw UnimplementedError.
	  Addresses the worst aspect of bug#201, but this should really be
	  implemented.

Wed Dec 17 04:44:10 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h:
	  Implement ChertWritableDatabase::open_value_list().
	* tests/api_valuestream.cc: Add valueweightsource5 testcase which is a
	  regression test for bug#299 and also exercises the above method.

Tue Dec 16 13:30:47 GMT 2008  Olly Betts <olly@survex.com>

	* common/expandweight.h,expand/expandweight.cc: Overhaul ExpandWeight
	  - now we use the "official" formula and don't return terms which it
	  would give a negative weight to (since that means they are expected
	  to be harmful not helfpul).
	* tests/api_anydb.cc,tests/api_db.cc: Fix unwarranted assumptions in
	  existing testcases broken by this change.

Thu Dec 11 01:02:41 GMT 2008  Olly Betts <olly@survex.com>

	* examples/delve.cc: Add missing "and" to --help output.  Report
	  termfreq and collection freq for each term we're asked about.

Mon Dec 08 00:52:51 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS: Add Daniel Andersson for reporting the flintlock
	  permissions issue.

Sun Dec 07 22:50:32 GMT 2008  Olly Betts <olly@survex.com>

	* api/sorter.cc,tests/api_sorting.cc: Fix an empty MultiValueSorter
	  not to SEGV/hang.

Fri Dec 05 21:08:08 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,tests/api_backend.cc: Use
	  "flintlock" rather than "chertlock" for the lockfile in chert.
	  The locking is compatible and this avoids the possibility of
	  creating a chert and flint database in the same directory (which
	  will result in one being corrupt since the Btree filenames overlap).

Thu Dec 04 09:00:04 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_lock.cc,backends/flint/flint_lock.cc: Create
	  the lockfile with permissions 0666 so that the umask is honoured
	  just like we do for the other files (previously we used 0600).
	* tests/Makefile.am,tests/api_backend.cc: Add regression test
	  lockfileumask1.

Thu Dec 04 08:56:54 GMT 2008  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Use str.resize(0) instead of str = "".

Thu Dec 04 04:56:55 GMT 2008  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: No need to explicitly initialise a
	  std::string to "".

Thu Dec 04 04:55:47 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Prefer str.empty() to str == "".

Thu Dec 04 01:50:10 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Make helper function static.  Use STATIC_ASSERT
	  to ensure a constant is coprime with 13.

Wed Dec 03 22:56:19 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix API logging.

Wed Dec 03 03:11:45 GMT 2008  Olly Betts <olly@survex.com>

	* INSTALL: Note that libuuid is required for Xapian 1.1.0 and higher.

Wed Dec 03 03:10:59 GMT 2008  Olly Betts <olly@survex.com>

	* INSTALL: Remove ':' from the end of headings.

Mon Dec 01 08:59:04 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Explicitly give the commands to install the required
	  packages for developing on recent Debian or Ubuntu for added
	  convenience.  Update the Debian/Ubuntu packages needed for
	  documentation to reflect the change from tetex to texlive.  Fix
	  unfinished paragraph about requiring a newline at the end of a
	  source file and note that this is actually undefined behaviour in
	  C++.

Sun Nov 30 21:46:59 GMT 2008  Olly Betts <olly@survex.com>

	* bin/,examples/quest.cc,tests/harness/testsuite.cc: Pull out lists of
	  short options next to list of long options to help make sure they
	  are kept in step.  xapian-tcpsrv and xapian-progsrv now accept -w
	  as a short form of --writable, as their long option table had, but
	  their short option string didn't.

Sun Nov 30 20:44:48 GMT 2008  Olly Betts <olly@survex.com>

	* docs/postingsource.rst: Wrap a long line.  Note that the remote
	  backend isn't supported yet.

Wed Nov 19 11:36:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/postingsource.rst: Make it clear that PostingSources must
	  always return documents in increasing document ID order.

Wed Nov 19 08:43:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/,examples/delve.cc,examples/quest.cc,tests/harness/testsuite.cc:
	  Test return type of gnu_getopt_long for being != -1, rather than
	  == 0, since there are a wide variety of return types other than 0
	  which may be returned in the successful case (with the builtin
	  implementation in common/getopt.cc, at least).

Tue Nov 18 23:22:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Change unknown "DATABASE" debug type to "DB".

Mon Nov 17 13:00:12 GMT 2008  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Add link to valueranges.html.

Fri Nov 14 22:23:10 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update revision we're current to.

Fri Nov 14 17:43:15 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_alldocsmodifiedpostlist.cc,
	  backends/chert/chert_modifiedpostlist.cc,
	  backends/flint/flint_modifiedpostlist.cc: Correct comments.

Fri Nov 14 17:38:33 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Update comment about valgrind and C++
	  STL allocators.

Fri Nov 14 17:36:47 GMT 2008  Olly Betts <olly@survex.com>

	* bin/,examples/delve.cc,examples/quest.cc,tests/harness/testsuite.cc:
	  Don't compare return value of gnu_getopt_long() with EOF - it's
	  documented to simply return -1 or 0, and EOF requires inclusion of
	  stdio.h.

Fri Nov 14 17:30:39 GMT 2008  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Fix "#elif" with no argument to
	  "#else" - the former surprisingly compiles with most compilers, but
	  GCC 4.4 snapshots reject it.

Fri Nov 14 16:54:15 GMT 2008  Olly Betts <olly@survex.com>

	* common/win32_uuid.cc: A few code clean-ups.

Fri Nov 14 13:09:16 GMT 2008  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Ship common/safeuuid.h to unbreak tarball
	  snapshot building.

Sun Nov 09 13:31:19 GMT 2008  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,bin/xapian-tcpsrv.cc,
	  common/omenquireinternal.h,matcher/,net/remoteserver.cc:
	  Prefer "" to <> for including Xapian API headers from within the
	  library.  Remove so unused xapian/enquire.h inclusions.

Fri Nov 07 12:50:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_version.cc,backends/chert/chert_version.h,
	  backends/flint/flint_version.cc,backends/flint/flint_version.h,
	  common/safeuuid.h,common/win32_uuid.cc,common/win32_uuid.h: Add
	  implementation of UUID functions for windows (using the built-in
	  UUID methods in the windows API). Fixes bug #303.

Sat Nov 01 01:47:44 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.9 release.

Fri Oct 31 18:55:03 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Document XAPIAN_FLUSH_THRESHOLD
	  (bug#306).

Fri Oct 31 18:30:11 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Fix whitespace inconsistency with omega's
	  configure.ac.

Fri Oct 31 10:51:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Add a new
	  built-in posting source, FixedWeightSource, which returns every
	  document in the database, but with a fixed weight.  In
	  particular, this is useful to add a constant weight to every item
	  in a subquery.  Also, in ValueWeightPostingSource, refactor the
	  "last_docid" member to a bool "started", since this is all it's
	  used for.
	* tests/api_db.cc: Add fixedweightsource1, to test FixedWeightSource.

Mon Oct 27 17:05:39 GMT 2008  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Skip test if the timer granularity is too
	  coarse in all cases.

Mon Oct 27 08:12:16 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_valuestream.cc: Disable valuestream1 for multi backends.

Sun Oct 26 00:30:54 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_valuelist.cc: Remove incorrect assertions.

Sat Oct 25 06:18:37 GMT 2008  Olly Betts <olly@survex.com>

	* api/Makefile.mk: Fix typo so we once again ship editdistance.h and
	  maptermlist.h.

Thu Oct 23 17:34:13 GMT 2008  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Skip test if the timer granularity is too
	  coarse.

Tue Oct 21 05:00:59 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Sync with branches/1.0.

Tue Oct 21 02:09:18 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_valuestream.cc: Add feature test of ValueIterator::check().

Tue Oct 21 01:36:45 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Prefer string() to "", slot
	  to valno, and not using else after return.

Tue Oct 21 01:32:37 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_db.cc: Remove '#include <iomanip>'
	  which aren't used.

Mon Oct 20 13:30:37 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc,api/valueiterator.cc,
	  include/xapian/postingsource.h,include/xapian/valueiterator.h: Add
	  new API method ValueIterator::check() and use it in PostingIterator.

Mon Oct 20 12:28:16 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_valuestream.cc: Add test for skip_to() on valuestream
	  iterator.

Mon Oct 20 11:19:12 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/api_valuestream.cc: Add a simple test of
	  valuestream iteration.

Mon Oct 20 11:01:26 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/collate-test,tests/perftest/Makefile.mk:
	  Generate the header listing the collated tests so that we can avoid
	  updating its timestamp when the contents are unchanged, such as in
	  the common case where you modify tests but don't add, remove, or
	  change the conditions on any tests.

Mon Oct 20 10:01:56 GMT 2008  Olly Betts <olly@survex.com>

	* examples/delve.cc: Use valuestream iterator to implement "-V<slot>".

Mon Oct 20 02:19:09 GMT 2008  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
	  Remove unused members of MultiPostList: tname, collfreq_initialised,
	  collfreq, and termweight.

Sun Oct 19 14:01:15 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Update
	  ValueWeightPostingSource to use a value stream iterator.

Sun Oct 19 13:53:51 GMT 2008  Olly Betts <olly@survex.com>

	* backends/database.cc: Make use of SlowValueList by default.

Sun Oct 19 13:47:10 GMT 2008  Olly Betts <olly@survex.com>

	* api/documentvaluelist.cc,api/documentvaluelist.h: Fix so that a
	  DocumentValueList starts before the first value.

Sun Oct 19 13:09:39 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/omdocument.cc: Use ValueIterator() instead of
	  ValueIterator(NULL).

Sun Oct 19 11:15:15 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sat Oct 18 01:31:25 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Fri Oct 17 15:54:57 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Check that pq is not empty before calling
	  top() on it - if it's empty, we only have one database, so we can
	  use the code path which doesn't worry about merging tags.  Fixes
	  bug #305.

Fri Oct 17 14:22:18 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_valuelist.cc: Fix ChertValueList to start on
	  the right key.

Fri Oct 17 14:14:14 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/database.h,include/xapian/document.h: Inline
	  ValueIterator end iterator as ValueIterator() rather than
	  ValueIterator(NULL).
	* api/valueiterator.cc: Need to call next() on a ValueList to get it
	  to the first position, so do this in ValueIterator's constructor.
	* api/valueiterator.cc,include/xapian/valueiterator.h: Add
	  ValueIterator::get_docid() method.

Fri Oct 17 13:53:26 GMT 2008  Olly Betts <olly@survex.com>

	* backends/slowvaluelist.cc,backends/slowvaluelist.h: Add missing
	  SlowValueList::get_valueno() method.

Fri Oct 17 13:16:01 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/database.h: Add
	  Database::valuestream_begin() and Database::valuestream_end() to
	  allow iterating over the values in a given slot for each document
	  in the database (untested so far).

Thu Oct 16 13:20:26 GMT 2008  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc: Remove unused '#include <list>'
	  and uninformative comment.

Thu Oct 16 12:47:00 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdocument.cc,include/xapian/document.h: Inline
	  Xapian::Document::values_end() into user code.

Thu Oct 16 12:26:29 GMT 2008  Olly Betts <olly@survex.com>

	* api/,backends/chert/chert_valuelist.cc,
	  backends/chert/chert_valuelist.h,common/document.h,
	  common/valuelist.h,include/Makefile.mk,include/xapian/derefwrapper.h,
	  include/xapian/termiterator.h,include/xapian/valueiterator.h:
	  Reimplement ValueIterator to have reference counted internals.  One
	  benefit is that Document::Internal no longer need its value_nos map
	  member.

Thu Oct 16 11:22:13 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Fix incorrect method name in
	  debug messages.

Thu Oct 16 01:34:07 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Note preference for @ rather than \ to introduce doxygen
	  commands.

Thu Oct 16 01:21:19 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Expand section on public/protected/private a little.

Wed Oct 15 11:34:15 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Use std::string() instead of "" as the
	  default value for std::string method parameters.

Wed Oct 15 03:20:01 GMT 2008  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/slowvaluelist.cc,
	  backends/slowvaluelist.h: Support for (slowly) iterating along a
	  value stream for backends which don't support streamed values
	  internally (currently unused).

Tue Oct 14 11:43:42 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc,backends/inmemory/inmemory_database.cc,
	  matcher/multimatch.cc: Database::get_document_lazily() now returns
	  NULL if the document isn't found for an inmemory database.
	* include/xapian/database.h: Document the return value better.

Tue Oct 14 03:20:38 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/postingsource.cc,include/xapian/database.h,
	  matcher/multimatch.cc: Add internal
	  Xapian::Database::get_document_lazily() method and use it in the
	  matcher and Xapian::PostingSource classes to avoid repeating the
	  same code lots of times.

Mon Oct 13 23:38:34 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Rename "Miscellaneous Portability Issues" to "C++
	  Portability Issues", and add a subsection of that for "Miscellaneous
	  Portability Issues" with a new note about needing to terminate the
	  last line of a source file, and a new subsection heading "Header
	  Portability Issues" for all the header-related stuff.

Sat Oct 11 12:19:38 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: If the timer for the first test for bigoaddvalue
	  reports 0.0 seconds, skip the test as the timer doesn't have fine
	  enough granularity for this test to be useful (bug#300).

Fri Oct 10 20:40:14 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Reuse XAPIAN_BIN_PATH to avoid hardcoding more
	  paths, and so this works in a debug build too.

Fri Oct 10 17:52:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Patch to use a different path in win32 build
	  to match the different place that the compiled xapian-check is
	  placed in.  Should fix bug #301.

Thu Oct 09 05:20:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Change -Wstrict-overflow level to 1 - even level 2
	  causes a few warnings (notably in chert_table.cc) to appear with
	  GCC 4.3 which are unreasonably difficult to avoid.

Thu Oct 09 05:04:49 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Raise autoconf requirement to 2.63.

Wed Oct 08 14:52:03 GMT 2008  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Fix typos in example code.
	* docs/valueranges.rst,tests/queryparsertest.cc: Drop superfluous
	  empty destructor from ValueRangeProcessor subclass.

Wed Oct 08 14:00:04 GMT 2008  Olly Betts <olly@survex.com>

	* common/valuelist.h: Add missing get_docid() method.

Wed Oct 08 12:11:57 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Wed Oct 08 12:00:39 GMT 2008  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/chert/,backends/database.cc,
	  backends/valuelist.cc,common/Makefile.mk,common/database.h,
	  common/valuelist.h,include/xapian/valueiterator.h: The start of
	  support for iterating along a value stream (currently unused).

Tue Oct 07 10:19:48 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Disable -Wconversion for now - it's not useful for
	  older GCC and is buggy in GCC 4.3.

Tue Oct 07 04:53:41 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.h: Query::MatchAll no longer gives match
	  results ranked by increasing document length.
	* tests/api_db.cc: Extend matchall1 to be a regression test for this.

Tue Oct 07 01:04:51 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Rewrite comment explaining the excess
	  precision fix.  Drop unnecessary brackets from return to minimise
	  the diff.

Mon Oct 06 07:24:40 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Change the excess precision fix to pass
	  both values through "volatile double" rather than "float" on
	  platforms where this matters since the former gives better generated
	  code as well as more consistent results with other platforms.

Mon Oct 06 07:24:07 GMT 2008  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Fix comment typo.

Mon Oct 06 02:46:39 GMT 2008  Olly Betts <olly@survex.com>

	* api/editdistance.cc,api/editdistance.h,api/omdatabase.cc: Pass the
	  largest edit distance we currently care about into the edit distance
	  algorithm so it can terminate early once it knows the edit distance
	  exceeds this.  This shortcut is used quite a lot, but there's no
	  measurable speed-up in tests on the real world data I have to hand.

Sun Oct 05 12:34:09 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Adjust percent_factor instead of min_weight
	  so that we don't miss some cases, and make the adjustment actually
	  correspond with the adjustment in omenquire.cc.

Wed Oct 01 14:11:49 GMT 2008  Olly Betts <olly@survex.com>

	* backends/alltermslist.cc,common/alltermslist.h: We don't need an
	  explicit virtual dtor for AllTermsList as it is empty and
	  AllTermsList inherits from TermList which has one.

Wed Oct 01 13:21:22 GMT 2008  Olly Betts <olly@survex.com>

	* common/postlist.h,common/termlist.h: Fix comment typo.

Wed Oct 01 00:12:02 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add a comment for the previous fix.

Tue Sep 30 22:41:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Fix bug: if there are both valuestats and
	  metadata, don't overwrite the last metadata value with the first
	  valuestats tag.

Tue Sep 30 20:31:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Set -Wstrict-overflow to 2 instead of 5, to avoid
	  unreasonable warnings under GCC 4.3.

Tue Sep 30 09:45:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Add missing include, to compile on GCC 4.3.0.

Mon Sep 29 13:06:42 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Mon Sep 29 05:04:57 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_version.cc: Add VERSIONFILE_SIZE_LITERAL and
	  use CompileTimeAssert() to ensure it matches the expression in
	  VERSIONFILE_SIZE.  It's very rare for the size to change (it's
	  happened once ever) and allows us to build the error string
	  literally at compile time.

Sun Sep 28 15:13:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_values.cc: Fix bug in lazy update - ensure
	  that the document has loaded its values before deleting the old
	  one (previously, there was an assertion to this effect, but it
	  didn't actually compile, and was also incorrect).
	* tests/api_wrdb.cc: Check that replacing a document with itself
	  doesn't lose the values - regression test for the bug fixed by
	  this commit.

Sun Sep 28 14:04:01 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: Fix bug in value updating -
	  modifyvalues1 now passes for chert.

Sun Sep 28 12:15:14 GMT 2008  Olly Betts <olly@survex.com>

	* tests/collate-test: Avoid perl warning when generating files which
	  don't already exist.

Sat Sep 27 10:36:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Add test "modifyvalues1" - regression test for
	  a bug in the streaming values implementation, and also a fairly
	  thorough test of adding and modifying values in databases.

Fri Sep 26 19:12:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Fix warning with gcc 4.2 about possible signed
	  overflow, by using an unsigned type for the total.

Fri Sep 26 15:48:39 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fixed version of: Avoid the relatively expensive
	  edit distance computation for a candidate spelling correction when
	  we can reject the candidate as less good than one we've already seen
	  by looking at the character frequency histograms.  In a test on
	  real-world data, this gave an 15% speed-up in queryparsing time
	  with FLAG_SPELLING_CORRECTION set.  The cheap check rejects 90%
	  of the words it handles (without the cheap check, the edit distance
	  check rejects 92%).

Fri Sep 26 14:40:50 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Check the structure of the value stream chunks.

Fri Sep 26 12:21:32 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_spelling.cc: Add a regression test for the bug my recently
	  added and reverted spelling optimisation introduced.

Fri Sep 26 11:55:18 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/api_spelling.cc,tests/api_wrdb.cc: Split the
	  spelling tests out into a separate file.

Fri Sep 26 11:53:45 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_unicode.cc: Capitalise brief file description.

Fri Sep 26 11:31:46 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_document.cc,
	  backends/inmemory/inmemory_document.h: New simpler InMemoryDocument
	  class with slightly reduced memory footprint, based on
	  RemoteDocument class.

Fri Sep 26 10:36:02 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/remote-document.cc,backends/remote/remote-document.h,
	  common/document.h: Add new files for RemoteDocument class missed
	  from recent commit.  Pass parameter to set_all_values() by non-const
	  reference so we can just efficiently swap() the value maps rather
	  than copying.

Fri Sep 26 10:31:21 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdocument.cc,common/document.h: Remove unused method
	  Xapian::Document::Index::get_all_values().

Fri Sep 26 10:03:17 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/,common/document.h: Replace NetDocument with a new
	  simpler RemoteDocument class which just sets the values and data in
	  its Document::Internal base class.

Fri Sep 26 06:21:08 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_document.cc,
	  backends/chert/chert_document.h,common/document.h: Overhaul
	  ChertDocument:  Avoid having a reference-counted pointer to the
	  database in the subclass as well as the one now in the base class.
	  Also check the lazy flag before we create a ChertDocument object to
	  avoid a memory allocation in that code path.  And make the
	  now-simple constructor inline-able.

Thu Sep 25 17:38:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Merge lazyupdate branch:
	* api/omdocument.cc,backends/chert/chert_database.cc,
	  backends/chert/chert_database.h,backends/chert/chert_values.cc,
	  backends/database.cc,common/database.h,common/document.h: Add a
	  shortcut for calling replace_document() with a document which was
	  just read from the database.  If the document terms were never
	  accessed, don't bother updating the termlist, postings and
	  position lists.  If the data was never accessed, don't bother
	  updating the data.  If the values were never accessed, don't
	  bother updating them.  Only fires if we know that the document
	  hasn't been modified (or deleted) since it was read from the
	  database, to ensure that the lazy access of the data doesn't have
	  a visible effect - we enforce this by keeping track of the last
	  document read with open_document(), and only using the shortcut
	  if this is the document passed to replace_document, and that
	  document ID hasn't been passed to replace_document or
	  delete_document since.

	  Add a method Database::Internal::invalidate_doc_object() which is
	  called from the destructor of a document, so that we can reset
	  the pointer to modify_shortcut_document in ChertWritableDatabase
	  when this happens.

	  Document::Internal now keeps a ref-count pointer to the database,
	  to ensure that the database is valid when invalidate_doc_object()
	  is called on it.

Thu Sep 25 17:35:07 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Forward-port from branches/lazyupdate:
	* tests/api_wrdb.cc: Extend deldoc5 slightly, to check that the
	  DocNotFoundError for a deleted document is raised before the
	  flush, as well as after.  Also, test a few more cases which are
	  relevant in the lazyupdate scenario.

Thu Sep 25 17:33:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Forward-port from branches/lazyupdate:
	* backends/chert/chert_document.cc,backends/chert/chert_document.h:
	  Check for existence of a document when opening it by searching
	  for the document length entry, rather than by reading the record
	  for the document.  Probably slightly slower if the record is
	  going to be accessed anyway, but much faster if it isn't (though
	  benchmarking of this is needed).

Thu Sep 25 14:27:07 GMT 2008  Olly Betts <olly@survex.com>

	* Merge valuestreams branch:
	* backends/chert/,bin/xapian-check.cc,bin/xapian-compact.cc,
	  docs/admin_notes.rst: Change the chert backend to store values in a
	  chunked stream for each value slot to make access more efficient.
	  The chunked streams and value stats are now stored in the postlist
	  table while the list of used value slots for each document is stored
	  in the termlist table, so we no longer need a special table for
	  values.
	* bin/xapian-check.cc,bin/xapian-check-flint.cc:  Don't stop checking
	  a table after an error in certain cases - instead increment the
	  error counter and try to continue checking from the next item.

Thu Sep 25 13:50:15 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/queryoptimiser.cc,tests/api_anydb.cc: Apply fix for
	  platforms with excess precision - this fixes a potential segfault
	  on x86 architecture when doing OP_ELITE_SET queries.  Also, add a
	  regression test.

Thu Sep 25 03:38:24 GMT 2008  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Also copy user metadata.

Wed Sep 24 17:27:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Back out, for now, Olly's change from
	  yesterday to avoid some edit distance checks; counting the
	  frequency of letters doesn't take into account the number of
	  substitutions, so spelling corrections which involve
	  substitutions are missed.

Wed Sep 24 12:48:39 GMT 2008  Olly Betts <olly@survex.com>

	* unicode/tclUniData.cc: Update to Unicode 5.1 (bug#265).
	* tests/api_unicode.cc: Add tests for some of the changes
	  in Unicode 5.1.

Tue Sep 23 14:58:54 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Avoid the relatively expensive edit distance
	  computation for a candidate spelling correction when we can reject
	  the candidate as less good than one we've already seen by looking
	  at the character frequency histograms.

Mon Sep 22 09:21:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Forward-port from branches/lazyupdate:
	* backends/chert/chert_postlist.cc: Fix return value of jump_to()
	  to be true only if the exact item specified was found in the
	  doclen list (previously also returned true if an item following
	  the item being searched for was found in the chunk).  Note that
	  there is no test for this fix included in this forward-port, but
	  an implicit test is included in the lazyupdate branch, and will
	  be here when that branch is merged to trunk.

Mon Sep 22 07:58:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Mention that setting XAPIAN_DEBUG_LOG to '-' has a
	  special effect.

Mon Sep 22 06:27:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/remote_protocol.html: Update documentation of remote
	  protocol to mention UUID being passed in REPLY_GREETING and
	  REPLY_UPDATE (added in revision [11369]).

Thu Sep 18 11:52:05 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Fix cursordelbug1 to hopefully work on Microsoft
	  Windows.

Thu Sep 18 11:50:04 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/chert/chert_table.cc,
	  backends/chert/chert_table.h: More assertions and improved debug
	  logging coverage.  Use rare() to mark a couple of checks which
	  almost always have the same result.  Make an assertion about the
	  level of a Btree block into an always-compiled-in check which throws
	  an exception, as this isn't a sanity check of internal state.

Thu Sep 18 05:26:27 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_postlist.cc,backends/flint/flint_postlist.cc:
	  Fix comment describing format of postlist chunk (collection freq
	  was missing).

Wed Sep 17 12:38:51 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Fix typos in XAPIAN_DEBUG_FLAGS documentation.

Sat Sep 13 11:14:02 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Upgrade libtool requirement to 2.2.6a.

Fri Sep 05 11:40:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_replicate.cc: Test that the UUID of a replica is equal
	  to the UUID of the original database.

Fri Sep 05 09:38:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h,api/omdatabase.cc: Add
	  Database.get_uuid() which returns a unique identifier for the
	  database.
	* tests/api_anydb.cc: Add test uuid1 to test basic get_uuid()
	  behaviour.
	* common/database.h: Extend documentation comment for get_uuid() a
	  bit.
	* backends/remote/remote-database.cc,common/remote-database.h,
	  net/remoteserver.cc: Add support for get_uuid() to remote
	  databases.

Thu Sep 04 11:37:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Remove accidentally committed reference to
	  apitest_sortconsist.txt, which only exists in my local checkout
	  and in a patch in ticket #216.

Thu Sep 04 04:39:32 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: We now hard require autoconf 2.62, so it's
	  safe to use AC_TYPE_SSIZE_T.  (bug#135)

Thu Sep 04 04:26:59 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Set version to 1.1.0.

Thu Sep 04 03:32:06 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS,NEWS,configure.ac: Sync with 1.0.8.

Wed Sep 03 15:23:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am,tests/api_percentages.cc: Add new test file for
	  tests related to percentage weights (there are a few around which
	  could be moved here, and there's another one in the patch in
	  ticket #216).  Add test in this file which uses a PostingSource
	  with carefully constructed weights to check the rounding
	  behaviour for percentage cutoffs.

Wed Sep 03 07:58:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Adjust min_weight values calculated for
	  percent_cutoff in the same manner as in omenquire.cc, to allow
	  for excess precision in the same way.

Wed Sep 03 07:15:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_version.cc: Display numerical value of
	  correct size of chert version file in error message if size is
	  incorrect, rather than a complicated expression giving the
	  correct size.

Tue Sep 02 10:41:46 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Remove FIXME for pushing check_at_least
	  handling into the remote backend, which was done for 1.0.2.

Tue Sep 02 06:48:50 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Show the help message on start-up.  Correct
	  the alias for next from ' ' to ''.  Avoid reading outside of input
	  string when it is empty.  Bug#286.

Tue Sep 02 04:19:34 GMT 2008  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Handle the new supplemental stemming data.

Tue Sep 02 03:05:10 GMT 2008  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Update for new xapian-data directory structure.

Tue Aug 26 09:26:49 GMT 2008  Olly Betts <olly@survex.com>

	* common/debuglog.h: Handle logging from ctor, dtor, and
	  void-returning functions/methods with a separate class
	  (DebugLogFuncVoid).  Fix outdent handling for non-logged message
	  types.  Fix detection of active exceptions to check if the exception
	  was already active when we entered the current function.  This
	  probably means that "RETURN_VOID" is no longer needed, so comment
	  it out.

Tue Aug 26 07:34:16 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Document explicitly that XAPIAN_DEBUG_FLAGS=- gives you all
	  debug messages.

Tue Aug 26 00:57:32 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fix reversed check for whether a table is in a
	  flint or chert database.

Mon Aug 25 12:03:36 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_termlisttable.cc: Remove FIXME about dropping
	  something if we make an incompatible database version bump - that's
	  not going to happen now for flint.  Avoid packing doclen for an
	  empty termlist.  Add explicit cast for char for prev_term.size().

Sun Aug 24 11:42:21 GMT 2008  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Fix build with --enable-log=profile.

Sun Aug 24 12:41:22 BST 2008  Olly Betts <olly@survex.com>

	* HACKING: Add a bit of discussion of --enable-log=profile.  Tweak
	  formatting in one place and wording in another.

Sat Aug 23 00:48:40 GMT 2008  Olly Betts <olly@survex.com>

	* tests/collate-test: Only update files which have changed to avoid
	  rebuilding all apitest's source files when only one has changed.

Fri Aug 22 01:02:57 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 5571"
	  (no code changes in our modified version).

Fri Aug 22 01:00:15 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix comment typo.

Fri Aug 22 00:55:26 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 5564".

Fri Aug 22 00:44:14 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 5488" and "5563".
	* queryparser/queryparser.lt: Fix compilation for previous merge
	  (I fixed it in the generated file before!)

Fri Aug 22 00:07:22 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 5472".

Thu Aug 21 04:15:41 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Remove code which checks for --enable-debug and
	  --enable-debug-verbose (deprecated since 1.0.0) and gives an error
	  pointing to the replacements.
	* docs/deprecation.rst: Document the replacements here.

Thu Aug 21 00:57:52 GMT 2008  Olly Betts <olly@survex.com>

	* common/omdebug.h: Remove DEBUGLINE completely.
	* backends/flint/flint_table.cc,backends/inmemory/inmemory_database.cc,
	  queryparser/queryparser.lt: Replace remaining DEBUGLINE uses.
	* backends/inmemory/inmemory_database.cc: Don't need <list>.

Thu Aug 21 00:37:08 GMT 2008  Olly Betts <olly@survex.com>

	* common/debuglog.h,common/omdebug.h: Define LOGLINE, etc to no-op
	  versions when XAPIAN_DEBUG_VERBOSE isn't defined.
	* api/,backends/chert/,backends/flint/,
	  backends/inmemory/inmemory_database.cc,
	  backends/multi/multi_postlist.cc,backends/multi/multi_termlist.cc,
	  expand/esetinternal.cc,expand/expandweight.cc,matcher/,
	  net/remoteconnection.cc: Use LOGLINE or LOGVALUE instead of
	  DEBUGLINE.

Wed Aug 20 13:33:56 GMT 2008  Olly Betts <olly@survex.com>

	* common/debuglog.h: Don't need omtime.h.

Wed Aug 20 06:11:31 GMT 2008  Olly Betts <olly@survex.com>

	* examples/quest.cc: Fix to catch QueryParserError instead of const
	  char * which Xapian < 1.0.0 threw instead.

Wed Aug 20 05:50:26 GMT 2008  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Expand on some sections.

Wed Aug 20 04:43:07 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Clarify in comments that this affected 1.0.7.

Wed Aug 20 04:33:22 GMT 2008  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Simplify RSet::remove_document() and
	  RSet::contains() a little.  Fix output of RSet::get_description().
	* tests/api_nodb.cc: Add regression test rset4 for
	  RSet::get_description() fix.

Wed Aug 20 02:45:04 GMT 2008  Olly Betts <olly@survex.com>

	* common/omdebug.h: Remove DebugMsg() macro which is no longer used.

Tue Aug 12 05:03:34 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Backport elimination of find_tag() to flint.

Tue Aug 12 04:10:41 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/chert/chert_table.h:
	  ChertTable::find_tag() is only used by ChertTable::get_exact_entry()
	  so remove the former folding its code into the latter.

Mon Aug 11 03:06:10 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_spelling.h,backends/chert/chert_synonym.h:
	  Remove random closing bracket from a couple of comments.

Mon Aug 11 03:03:19 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Always initialise max_value in the constructor
	  body for consistency.

Sat Aug 09 09:56:06 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_valuestats.cc: Add valuestats4 as a regression test for
	  the previous fix.

Sat Aug 09 06:10:49 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_database.h:
	  Write cached valuestats changes to disk when we automatically flush
	  changes due to the number of documents indexed.

Wed Aug 06 11:27:29 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdocument.cc,backends/chert/chert_document.cc,
	  backends/chert/chert_document.h,backends/flint/flint_document.cc,
	  backends/flint/flint_document.h,
	  backends/inmemory/inmemory_document.cc,
	  backends/inmemory/inmemory_document.h,
	  backends/remote/net_document.cc,backends/remote/net_document.h,
	  common/document.h: Change do_get_all_values() to pass a reference
	  to the std::map to return the result in rather than returning the
	  std::map.

Wed Aug 06 07:39:08 GMT 2008  Olly Betts <olly@survex.com>

	* docs/replication.rst: Adding missing (C) for new section addded
	  recently.

Wed Aug 06 06:27:59 GMT 2008  Olly Betts <olly@survex.com>

	* backends/alltermslist.cc,backends/chert/,backends/flint/,
	  backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_alltermslist.h,
	  backends/multi/multi_alltermslist.cc,common/alltermslist.h,
	  common/multialltermslist.h: Add a default "not implemented"
	  implementation of AllTermsList::get_approx_size() and remove the
	  "not implemented" versions in all the subclasses.  Remove empty
	  destructors for ChertSpellingTermList, and FlintSpellingTermList.
	* api/maptermlist.h,api/omdocument.cc: MapTermList::get_approx_size()
	  should never be used, so make it "Assert(false); return 0;".

Wed Aug 06 02:24:48 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/multi/multi_alltermslist.cc,
	  common/multialltermslist.h: Reimplement MultiAllTermsList to use a
	  heap rather than linearly scanning - operations during iteration
	  should now be O(log(n)) rather than O(n) where n is the number of
	  databases.

Tue Aug 05 23:50:19 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Fix "make clean" to remove cached databases again
	  and "make check" to remove cached databases like the previous change
	  aimed to do.

Tue Aug 05 23:48:52 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Use TEST_EQUAL(a, b) rather than TEST(a == b).

Tue Aug 05 12:44:58 GMT 2008  Olly Betts <olly@survex.com>

	* common/alltermslist.h: Fix parameter name in doxygen comment.

Tue Aug 05 06:28:15 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Don't generate a changeset file for the first revision of a database
	  (since we might as well just send the whole database) - addresses
	  part of bug#278.  Clean up exceptions to pass errno in the errno
	  parameter rather than incorporating strerror(errno) in the message
	  parameter.

Tue Aug 05 06:00:11 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: Remove "sleep(1);" from testcase replicate1
	  which is no longer required now we generate proper UUIDs.

Tue Aug 05 03:07:11 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc,include/xapian/replication.h: Remove
	  DatabaseReplica::get_parameter() and set_parameter() as they're no
	  longer used for storing the database UUID, and Richard said the
	  thinking behind wanting them was "flawed".

Tue Aug 05 02:03:24 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_version.cc: Comment tweak.

Tue Aug 05 02:02:29 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/flint/flint_database.cc,common/utils.cc,
	  common/utils.h: Use the UUID stored by the backend rather than
	  storing it ourselves as a database replica parameter.

Mon Aug 04 14:58:21 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_version.cc,
	  backends/flint/flint_version.h: Generate a UUID when a new flint
	  database is created, and lazily generate one for existing flint
	  databases which don't have one.  Store the UUID in a new "uuid"
	  file in the database directory to avoid having to change the
	  flint database format incompatibly.

Mon Aug 04 14:13:53 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_version.cc,
	  backends/chert/chert_version.h,configure.ac: Generate a UUID when
	  a chert database is created, and store it in the version file.

Mon Aug 04 12:16:54 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_version.cc: Make exception messages more
	  consistent.

Mon Aug 04 12:15:14 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_version.cc,
	  backends/chert/chert_version.h: Remove the code to handle upgrading
	  flint versions >= 200704230 and < 200709120 as it's just dead code
	  for chert.

Sun Aug 03 14:34:31 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc: Track the replica numbers using an int rather
	  than two strings.  Eliminate two racey uses of file_exists().

Sun Aug 03 11:37:06 GMT 2008  Olly Betts <olly@survex.com>

	* docs/replication.rst: Add section on backend support.  Make FIXME a
	  comment.  Fix erroneous reference to '"-h" parameter'.

Sun Aug 03 11:28:27 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc,tests/harness/testrunner.cc: Make replication
	  work for the chert backend.

Sat Aug 02 16:47:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/enquire.h: Correct documentation comment (iterator
	  doesn't return terms, it returns mset items).

Sat Aug 02 14:16:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/admin_notes.rst: Fix a typo.

Sat Aug 02 14:06:37 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc:
	  Fix comment typo in previous commit.

Sat Aug 02 13:04:05 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_cursor.cc,backends/flint/flint_cursor.cc: Fix
	  FlintCursor::del() and ChertCursor::del() to leave the cursor on the
	  next key when iterating over the unflushed revision (previously the
	  cursor would end up an extra key along in this case).  (Bug#287)
	* tests/api_wrdb.cc: Add regression test cursordelbug1.

Sat Aug 02 05:09:38 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc,common/utils.cc,common/utils.h: Change
	  removedir() to just return if passed a non-existent path and
	  document this.  Make use of this to avoid having to call
	  dir_exists() before remove_dir().

Sat Aug 02 04:43:45 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/apitest.cc: Make use of new
	  BackendManager::get_database_path() to eliminate knowledge of
	  BackendManagerFlint's implementation from test stubdb1.  Put the
	  stubdb files in a .stub subdirectory and don't remove them after
	  each test to aid debugging failing tests.  Also now run stubdb tests
	  under chert and multi backends.  Add more stubdb tests for the
	  recently added features.

Sat Aug 02 04:39:08 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/: Adjust the BackendManager interface to reduce code
	  duplication in subclasses - for backends where the concept of a
	  path to the database makes sense, we now support a
	  get_database_path() method and use this in the default
	  implementation of get_database() in the base class.

Sat Aug 02 04:36:48 GMT 2008  Olly Betts <olly@survex.com>

	* tests/apitest.h: Use std::string() in preference to "".

Sat Aug 02 04:35:13 GMT 2008  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Fix handling of new "inmemory" type in stub
	  databases.

Sat Aug 02 01:49:35 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Remove the cached test databases in before
	  running the testsuite by making check-local do the same as
	  clean-local.

Sat Aug 02 01:42:36 GMT 2008  Olly Betts <olly@survex.com>

	* backends/dbfactory.cc: Add support for "inmemory" to stub database
	  files (it's useful now they can be writable).  Don't just ignore
	  lines with no spaces in in stub database files.

Thu Jul 31 13:13:30 GMT 2008  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/database.cc,backends/dbfactory.cc,
	  common/database.h,include/xapian/dbfactory.h: Add new
	  Auto::open_stub() overload which opens a stub database file
	  containing a single entry as a WritableDatabase.  Move the
	  non-remote database factory API functions from backends/database.cc
	  to new file backends/dbfactory.cc, leaving the former solely for
	  methods of Database::Internal.  A stub database file is now allowed
	  to contain no database entries, which results in an empty Database
	  object (this avoids user code having to special case to handle "0 or
	  more" databases).
	* tests/api_nodb.cc: Tidy up #include directives.  Enhance nosuchdb1
	  to check that we get a reasonable error message - previously we
	  got "Couldn't detect type of database".
	* include/xapian/dbfactory.h: Improve doxygen comment for
	  InMemory::open().

Thu Jul 31 09:36:41 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_replicate.cc: This is a new file, so use <cstdlib> rather
	  than <stdlib.h>.

Wed Jul 30 23:10:19 GMT 2008  Olly Betts <olly@survex.com>

	* backends/database.cc: Bad lines in a stub file were being ignored
	  after we'd seen a good entry.
	* tests/api_db.cc: Add regression test.

Wed Jul 30 14:42:04 GMT 2008  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Use std::string() in preference to "".

Tue Jul 29 23:55:21 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS: Add Henrik Brix Andersen.

Tue Jul 22 06:01:44 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Eliminate other_base_letter member of FlintTable - its value can
	  always be easily determined from base_letter.

Mon Jul 21 12:33:54 GMT 2008  Olly Betts <olly@survex.com>

	* xapian-config.in: Add bug report URL to xapian-config --help output.

Mon Jul 21 11:55:18 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Put the bug report URL as the third parameter to
	  AC_INIT.  Add proper m4 quoting in a few places (nowhere that
	  should actually change behaviour).

Mon Jul 21 01:03:12 GMT 2008  Olly Betts <olly@survex.com>

	* tests/apitest.cc,tests/harness/testsuite.cc,
	  tests/harness/testsuite.h: Report subtotals per backend, rather than
	  per testgroup per backend to make the output much clearer to scan.

Mon Jul 21 00:36:07 GMT 2008  Olly Betts <olly@survex.com>

	* tests/apitest.cc: Use startswith().

Sun Jul 20 14:16:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.h: Add missing "iomanip" header needed
	  for setprecision calls.

Sun Jul 20 11:35:35 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h,include/xapian/matchspy.h,
	  include/xapian/valueiterator.h: Remove explicit empty non-virtual
	  destructors since the compiler will create them by default anyway.

Sun Jul 20 10:18:52 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Sun Jul 20 10:09:36 GMT 2008  Olly Betts <olly@survex.com>

	* Forward-port change from branches/1.0:
	* api/omenquire.cc: Fix percentage calculation to cope with excess
	  precision on x86.  Fix method name for convert_to_percent_internal
	  in debug logging.

Sun Jul 20 09:13:32 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/,bin/xapian-check-flint.cc,bin/xapian-check-flint.h,
	  bin/xapian-compact.cc: Store the tablename in FlintTable as a const
	  char * - it's a constant string and std::string adds a needless
	  space overhead.

Sun Jul 20 09:10:49 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Follow-on fix for last change - we need to use
	  strcmp() to compare C strings.

Sun Jul 20 07:09:38 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/,bin/xapian-check.cc: Store the tablename in
	  ChertTable as a const char * - it's a constant string and
	  std::string adds a needless space overhead.

Sat Jul 19 14:19:58 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_values.cc,
	  backends/chert/chert_values.h: Fix WritableDatabase::add_document()
	  and replace_document() not to be O(n*n) in the number of values in
	  the new document.
	* backends/flint/flint_database.cc,backends/flint/flint_values.cc,
	  backends/flint/flint_values.h: Backport fix to flint.
	* tests/api_wrdb.cc: Add testcase bigoaddvalue to make sure we don't
	  regress to O(n*n) (or worse!)

Fri Jul 18 13:24:43 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Rewrite lazytablebug1 testcase to avoid having
	  to run xapian-compact.

Fri Jul 18 11:59:42 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc: Fix handling of a table created
	  lazily after the database has had commits, and which is then
	  cursored while still in sequential mode.
	* backends/flint/flint_table.cc: Backport fix to flint.
	* tests/api_wrdb.cc: Add testcase lazytablebug1.

Fri Jul 18 02:52:55 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Enable test crashrecovery1 for chert.  Finish off
	  unfinished comment.

Fri Jul 18 02:38:22 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc,tests/harness/testrunner.cc,
	  tests/harness/testrunner.h: Add "synonyms" test backend property
	  and use it to decide where to run synonym tests so they get run on
	  chert too.  Move virtual TestRunner destructor out of the header.
	  Don't skip all the spelling tests on chert.

Fri Jul 18 00:56:17 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Eliminate literal top-bit-set characters.

Fri Jul 18 00:40:06 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_values.cc: Kill superfluous else tokens.

Thu Jul 17 13:00:55 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.cc,backends/chert/chert_table.h:
	  Eliminate other_base_letter member of ChertTable - its value can
	  always be easily determined from base_letter.

Thu Jul 17 12:24:19 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Add space after catch for
	  consistency.

Thu Jul 17 11:51:57 GMT 2008  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Use C++ forms of C headers.  Only treat
	  '\' as a directory separator on platforms where it is.  Update
	  counter every 13 counting up to the end so that the digits all
	  "rotate" and the counter ends up on the exact total.

Wed Jul 16 10:10:32 GMT 2008  Olly Betts <olly@survex.com>

	* tests/perftest/perftest.cc: Use uname() or gethostname() to get the
	  hostname on Unix, rather than piping output from uname -n.  Use
	  startswith() where appropriate.  Prefer resize() and erase() to
	  assigning a string a substring of itself.  Make internal functions
	  static.  Prefer string() to "".  Fold sed | sed and grep | sed into
	  single sed invocations.

Wed Jul 16 05:16:00 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 5404" and "5405".

Wed Jul 16 04:48:45 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Sync with 1.0.7 release.  Start to clean up ChangeLog entry
	  pile.

Mon Jul 14 05:13:55 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix a typo, remove "\n" from the end of
	  ErrorMsg() calls since it will get stripped anyway, and escape
	  literal '%' in ErrorMsg() third arguments.

Sun Jul 13 13:04:58 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Update note of upstream version we're synced
	  against.

Sun Jul 13 12:56:58 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Tweak previous merged patch so that we still
	  get #line directives for code in %include directives.

Sun Jul 13 12:54:03 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 5335".
	  Reduces the size of the stripped object file for
	  queryparser_internal.cc by about 0.5%.

Sun Jul 13 12:32:06 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix typo in comment.

Sun Jul 13 12:30:38 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 5334".  No
	  change to the generated code in our case.

Sun Jul 13 12:24:13 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Add missing hard requirement for libtool 2.2.4.

Sun Jul 13 12:09:40 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac,HACKING: Hard require autoconf 2.62 and automake 1.10.1.
	  Move all information about particular autoconf and automake versions
	  to HACKING.
	* configure.ac: Use LT_INIT in preference to AC_PROG_LIBTOOL.  On
	  Linux and k*bsd-gnu, override libtool's link_all_deplibs_CXX to
	  "no".  On Linux, override libtool's sys_lib_dlsearch_path_spec to a
	  list generated in a more reliable way which includes *all* the
	  default directories.  Remove workaround which sets docdir for
	  autoconf < 2.60 since we now require 2.62.
	* xapian-core.spec.in: We no longer need to run autoreconf to work
	  around libtool's incomplete sys_lib_dlsearch_path_spec or to pick
	  up distro-specific patches for link_all_deplibs.

Sun Jul 13 11:33:33 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am: No need to explicitly list m4/*.m4 in EXTRA_DIST as
	  automake will automatically ship any such files which are needed.

Sun Jul 13 09:15:34 GMT 2008  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Back out the rounding of percentages change (at
	  least for now), as it makes percentage cut-offs work inconsistently.
	* tests/api_anydb.cc: Add test pctcutoff3 which demonstrates the issue.

Sun Jul 13 07:01:02 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix documentation comment for
	  MSet::get_rank() - the 'document judged "most relevant" will have
	  rank of 0' only when ordering primarily by relevance.

Sun Jul 13 06:17:13 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Tweak layout (makes the backport diff
	  much smaller and clearer, and reduces indentation by a level for a
	  chunk of code).

Fri Jul 11 13:44:56 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc: Fix typos in recent improved output.

Fri Jul 11 13:04:41 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Collect up all the scaling factors we apply
	  to the estimated number of matches and apply them in one go to avoid
	  rounding the result more than once.

Fri Jul 11 12:21:11 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Add testcase for percent cutoff plus collapsing
	  which most likely would have failed before Richard's recent fix
	  for the lower bound with collapsing and a matchdecider.

Fri Jul 11 05:30:02 GMT 2008  Olly Betts <olly@survex.com>

	* backends/database.cc: Add support for XAPIAN_PREFER_CHERT
	  environmental variable.

Thu Jul 10 22:21:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Fix skip_to() so that it doesn't advance if
	  it's already in a suitable position.
	* include/xapian/postingsource.h: Specify that skip_to() should
	  stay in the same position if the current position is equal to
	  the docid argument of skip_to().
	* tests/api_db.cc: Add valueweightsource3 to check that skip_to()
	  stays in the same position in this case.

Thu Jul 10 13:14:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Performance improvement - open documents
	  lazily (using the internal interface) so that we don't access
	  the record table for each one - we now just access the value
	  table.  Leads to considerable speed up for me (of the order of 5
	  times faster).

Thu Jul 10 09:49:39 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Overhaul the sections on building from SVN.  Remove ':'
	  from the end of headings.

Wed Jul 09 10:43:01 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: The workaround to avoid probe code for F77, GCJ, and
	  RC being added to configure is no longer required now that we're
	  using libtool 2.2 so remove it.

Wed Jul 09 09:40:43 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,acinclude.m4,autoconf/dir_contents,
	  autoconf/rjb_find_stlport.m4,autoconf/type_socklen_t.m4,
	  m4/dir_contents,m4/rjb_find_stlport.m4,m4/type_socklen_t.m4: Move
	  the m4 macros which we ship for building configure from into the m4
	  subdirectory and remove acinclude.m4 - now aclocal will pull in the
	  required macros automatically.

Wed Jul 09 09:14:31 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am: Update for m4 -> m4-macros change.

Wed Jul 09 09:11:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/externalpostlist.cc: Fix segfault if get_maxweight() is
	  called when the postlist has reached end.  This happens if the
	  end is reached during decay of an AND_MAYBE postlist to an AND.
	* common/postlist.h,matcher/: Add comments documenting that
	  recalc_maxweight() may be called after the postlist has reached
	  the end, and noting why this is safe in various cases.

Wed Jul 09 09:02:08 GMT 2008  Olly Betts <olly@survex.com>

	* m4-macros/dir_contents,m4-macros/xapian.m4,m4/dir_contents,
	  m4/xapian.m4: Move xapain.m4 to a new subdirectory (m4-macros) since
	  libtoolize now installs m4 files into subdirectory m4 which we don't
	  really want picking up by applications building against an
	  uninstalled xapian-core.

Wed Jul 09 08:03:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,m4/dir_contents,xapian.m4: Move xapian.m4 back into
	  the m4 subdirectory.  For uninstalled builds, we need xapian.m4
	  to be in a directory without any other .m4 files, or we'll be
	  likely to pull in the wrong versions of other macros.  The top
	  level directory contains aclocal.m4 and acinclude.m4, so isn't
	  suitable for this.  Also, the xapian-bindings and omega
	  compilations hadn't been updated with the new xapian.m4 location,
	  so this fixes the build for them.

Wed Jul 09 07:17:38 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac: Use AC_CONFIG_MACRO_DIR and
	  ACLOCAL_AMFLAGS as libtoolize 2.2.4 recommends.

Wed Jul 09 06:37:21 GMT 2008  Olly Betts <olly@survex.com>

	* acinclude.m4: Remove reference to definedir.m4.

Wed Jul 09 05:32:24 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,m4/dir_contents,m4/xapian.m4,xapian.m4: Move xapian.m4
	  to the top level rather than devoting a whole directory to a single
	  file.

Wed Jul 09 05:23:02 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,autoconf/definedir.m4,configure.ac: AC_DEFINE_DIR()
	  hasn't been used for years so remove it.

Wed Jul 09 02:32:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc,include/xapian/postingsource.h: Add an
	  alternative constructor for ValueWeightPostingSource which allows
	  the upper bound on the weights stored to be specified manually.
	  This is useful for database formats like flint which don't have
	  an upper bound available.  It could conceivably also be useful if
	  you know that a query will only be accessing a subset of
	  documents for which you know a more precise upper bound than the
	  database-wide upper bound.

Wed Jul 09 01:59:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/externalpostlist.cc: Add DEBUGCALL macros to enable
	  easier debugging.

Mon Jul 07 12:40:20 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,NEWS: Update to reflect the autotools now being in the SVN
	  tree, and the versions we are now bootstrapping with.
	* NEWS: Update from ChangeLog.

Sun Jul 06 22:59:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc,matcher/remotesubmatch.cc,
	  matcher/remotesubmatch.h: Apply patch from ticker #279 to improve
	  performance of matches with multiple remote databases.  This adds
	  a special case for the top match being from a remote database, to
	  avoid accessing the termlist to calculate the percentage scaling
	  factor.

Sun Jul 06 22:55:17 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc: When calculating percentages, round to the
	  nearest integer, rather than rounding down.  There was a FIXME
	  about this, but no explanation of why it hadn't already been
	  done, and I can see no bad side effects so far.  The most obvious
	  positive effect is that queries which should get precisely 100%
	  will no longer be assigned 99% due to rounding errors.

Sun Jul 06 22:48:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_anydb.cc: Add new test, topercent2, checking the
	  percentage values returned by standard searches, both against
	  known current values for some of the hits, and against a search
	  with a "local" backend.  Also, in rsetmultidb1, test the return
	  value of mset_range_is_same_weights().
	* tests/api_db.cc: In rsetmultidb2, test the return value of
	  mset_range_is_same_weights().

Sun Jul 06 22:46:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testutils.cc,tests/harness/testutils.h: Add
	  function to test if two mset ranges have the same percentages,
	  and slightly improve the messages on failure of the mset range
	  comparison tests.

Fri Jul 04 23:31:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Swap two words to make a sentence make sense.

Fri Jul 04 11:40:13 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Fix calculation of lower bound when
	  collapsing and match deciders are used.  (Only tended to manifest
	  when the collapsing threw away a lot of documents, and when also
	  using a custom sort order, but I don't think that was required.)
	  Also, perform the adjustments due to percentage cutoffs after the
	  other adjustments, to avoid the lower bound setting for
	  collapsing overriding the lower bound from the percentage cutoff.
	* tests/harness/index_utils.cc: Add a value to value slot 12, which
	  only has 5 different values, for testing this bug.
	* tests/api_db.cc: Add regression test for calculation of the lower
	  bound.

Fri Jul 04 10:24:16 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.mk,examples/Makefile.mk: Remove
	  extra_cleandirs as automake 1.10.1 fixes the bug which it was working
	  around.

Fri Jul 04 04:36:59 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Synchronise tiny change from branches/1.0 which isn't
	  on trunk for some reason.

Fri Jul 04 04:35:19 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Bootstrap with newer versions of the autotools:
	  + autoconf 2.61 -> 2.62: faster
	  + automake 1.10 -> 1.10.1: "make clean" cleans all .libs
	    directories.
	  + libtool 1.5.24 -> 2.2.4: many improvements; faster.

Thu Jul 03 03:17:42 GMT 2008  Olly Betts <olly@survex.com>

	* docs/glossary.rst,docs/intro_ir.html: Improve intro_ir a bit, and
	  link to the definition of RSet in the glossary.

Thu Jul 03 01:30:56 GMT 2008  Olly Betts <olly@survex.com>

	* examples/quest.cc: Output get_description() of the parsed query.

Sun Jun 29 18:56:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Rename percent_factor variable, used here
	  as part of the percent_cutoff mechanism, to make its purpose
	  clearer, and to avoid confusing it with percent_scale in this
	  file, and percent_factor used elsewhere in matcher/.

Sat Jun 28 21:51:42 GMT 2008  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Disable
	  "JAVADOC_AUTOBRIEF" since we always try to write a brief
	  description explicitly, and it causes problems in some cases.

Sat Jun 28 21:32:21 GMT 2008  Olly Betts <olly@survex.com>

	* common/: Fix typos in doxygen comments.

Sat Jun 28 10:33:06 GMT 2008  Olly Betts <olly@survex.com>

	* languages/stem.cc: Add "nl" for selecting the Dutch stemmer, which
	  was accidentally missing from the list of language codes recognised.
	  Reported by Joey Hess in Debian bug #484458.
	* tests/api_nodb.cc: Extend stemlangs1 to check that all the language
	  codes work, and so does Stem("").

Fri Jun 27 00:27:31 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog and against 1.0 branch.

Thu Jun 26 17:17:41 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: The "already done" check in do_close() is
	  no longer useful, so remove it.  Shrink the try block to only cover
	  the call to send_message().

Thu Jun 26 08:19:41 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Don't bother to send MSG_SHUTDOWN for a
	  read-only Database - just closing the connection is enough.

Thu Jun 26 04:49:06 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_btreebase.cc: Don't need <string.h> as well as
	  <cstring>.
	* backends/flint/flint_btreebase.cc,bin/xapian-replicate-server.cc:
	  Prefer <cXXX> to <XXX.h>.

Tue Jun 24 04:31:10 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Use resize() to truncate a string.

Tue Jun 24 04:23:59 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Fill in a guess at the __WIN32__ version of
	  the code needed in RemoteConnection::do_close().

Tue Jun 24 04:06:02 GMT 2008  Olly Betts <olly@survex.com>

	* net/progclient.cc: Fix debug logging for __WIN32__.

Tue Jun 24 03:11:09 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Just delete the Database * pointer db.  The
	  Database dtor is virtual, so it's fine to delete a WritableDatabase
	  via a Database * pointer.

Tue Jun 24 01:29:12 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteconnection.h,
	  net/remoteconnection.cc,net/replicatetcpclient.cc: Wait for the
	  connection to close rather than using a different shutdown message
	  which requires a reply.  Mostly this is more backport-friendly, but
	  it also avoids a message reply (albeit it not in a performance
	  sensitive situation).  Needs implementing for __WIN32__.

Tue Jun 24 01:07:16 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Unwrap comment.

Tue Jun 24 00:52:02 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Kill a blank line.

Tue Jun 24 00:49:50 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteconnection.h,
	  common/remoteprotocol.h,docs/remote_protocol.html,
	  net/remoteconnection.cc,net/remoteserver.cc,
	  net/replicatetcpclient.cc: Revert r10713 in preparation for applying
	  an alternative fix.

Mon Jun 23 21:51:42 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Expand list of keywords for brace cuddling.  Add rationale.

Mon Jun 23 01:53:03 GMT 2008  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Cuddle braces after for loops for
	  consistency with the rest of the code.  Use string::resize() to
	  shrink a string rather than assigning the result of substr(0, x).
	* HACKING: Explicitly document that braces should be cuddled after
	  control flow structures.

Mon Jun 23 01:34:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/perftest_matchdecider.cc: Reworked performance
	  test to include a test of an alldocspostingiterator, and to only
	  rebuild the database involved if it's not up-to-date.

Mon Jun 23 01:20:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/valuestats.h: Add missing #include.

Mon Jun 23 01:10:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Add support for the valuestats which are
	  now held in the value table for chert.

Sun Jun 22 23:44:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/: Change ChertAllDocsPostList to inherit from
	  ChertPostList and use the doclen list from the posting table
	  rather than using the termlist table.  This helps towards making
	  the termlist table optional, reduces the amount of data read in
	  the process of iterating through an alldocs postlist, and can
	  make a massive difference in performance: I've measured the time
	  to iterate through all the documents in a 1000000 document
	  database, and the patch speeds this operation up by a factor of
	  6.

	  Add `keep_reference` parameter to the ChertPostList constructor,
	  instead of not keeping a reference if the term is empty.
	  ChertAllDocsPostList uses this to keep a reference to the
	  database while using an empty term.

	  Add ChertAllDocsModifiedPostList class, inspired by
	  ChertModifiedPostList, (with corresponding new source files) to
	  handle alldocs postlist with modifications: this wasn't needed
	  before since the termlist is updated immediately after changes.

Sun Jun 22 21:37:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/: Add "name" parameter to
	  BackendManager::get_writable_database_as_database(), and
	  BackendManager::get_writable_database_again(), (and subclasses)
	  so that old databases can be revived.  Useful for the performance
	  tests.

Sun Jun 22 09:30:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_anydb.cc: Expand tests for alldocspostlist, covering
	  iteration of modified databases.

Fri Jun 20 08:28:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/remote-database.cc,common/remoteconnection.h,
	  common/remoteprotocol.h,docs/remote_protocol.html,
	  net/remoteconnection.cc,net/remoteserver.cc,
	  net/replicatetcpclient.cc: Add new message
	  "MSG_SHUTDOWNANDCONFIRM" which causes a reply of
	  "REPLY_SHUTDOWNCONFIRMATION" to be sent after the database has
	  been closed.  Use this message when closing a writable database,
	  to ensure that the destructor doesn't return until the lock on
	  the database has been released.

Tue Jun 17 14:28:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/freemem.cc,tests/perftest/perftest.cc: Patches
	  from Charlie to allow perftest to compile on windows.

Tue Jun 17 13:23:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_lock.cc,
	  backends/flint/flint_btreebase.cc,backends/flint/flint_lock.cc,
	  bin/xapian-replicate-server.cc: Add some missing includes, needed
	  for GCC 4.3.

Tue Jun 17 11:00:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/get_machine_info.in: Updates to hopefully get
	  useful version information on windows.

Mon Jun 16 12:13:48 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.cc: Don't call backendmanager->posttest()
	  if no backendmanager is in use.

Sun Jun 15 02:19:03 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/: Wait for subprocesses to finish at end of tests,
	  with remotetcp backend, to avoid test failures due to final flush
	  of a subprocess writing to the database used for the next test.

Thu Jun 12 09:09:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/unaligned.h: Add some casts to make GCC 4.3.0 happy.

Thu Jun 12 09:06:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_btreebase.cc: Add missing #include (needed
	  for compilation with GCC 4.3.0).

Tue Jun 10 17:38:07 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testrunner.cc: Use startswith().  Fix memory leak.

Fri Jun 06 11:02:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,tests/Makefile.am: Fix make check-* targets to match
	  the current set of backends.  Add .multichert and .multiflint to
	  the clean-local hook in tests/.  Leave .multi there for now, to
	  clean up existing .multi directories in the automated build trees.

Fri Jun 06 08:26:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/Makefile.mk: Add valuestats.h to distribution.

Thu Jun 05 23:37:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_values.cc: Fix compile error in assertion in
	  recently added code for calculating value statistics.

Thu Jun 05 21:38:01 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Use std::vector<Term *> rather than
	  std::list<Term *> so that size() is O(1) with any (sane) compiler
	  and because a list of pointers isn't space efficient (and we don't
	  need to splice here).  Factor out common code in if branches in
	  TermGroup::as_group().

Thu Jun 05 17:04:23 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Use "startswith()" to avoid creating
	  a new string object.

Thu Jun 05 09:09:54 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Remove variable which is set but
	  never otherwise used.

Thu Jun 05 09:08:22 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Don't call find() twice - reuse the result
	  we just got.  Use AssertEq() rather than Assert() on an equality
	  test.  Clarify a comment.

Wed Jun 04 21:32:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Fix more O(N*N) scaling, this
	  time in the way in which auto multiword synonyms are detected.
	  Instead of trying all possible sub-sequences of terms for
	  synonyms, use synonym_keys and the skip_to() method to check for
	  synonyms which actually exist in the synonyms table.
	* tests/queryparsertest.cc: Extend the scaling test to check this
	  case.

Wed Jun 04 12:42:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Fix various cases where queries
	  were constructed pair-wise within a loop, which leads to O(N*N)
	  scaling behaviour (because each intermediate query construction
	  is O(M) where M is the size of that query, and there are N of
	  them).
	* tests/queryparsertest.cc: Add test to check that parsing of a
	  query scales roughly linearly with query size.
	* common/omtime.h: Add method to get an OmTime as a double - used
	  by the new query parser test.

Wed Jun 04 12:18:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.h: Fix TEST_LESSER_OR_EQUAL and
	  TEST_LESSER macros to compare in the right direction (these
	  macros are, so far, unused).

Mon Jun 02 18:19:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc: Make ValueWeightPostingSource use value
	  statistics, if they're available, to return accurate term
	  frequency statistics, and a better maxweight.
	* tests/api_db.cc: Add valueweightsource2, to test the bounds and
	  maxweight returned by a ValueWeightPostingSource for backends
	  with valuestats support.  Replace !multi condition in
	  valueweightsource1 with a SKIP_TEST_FOR_BACKEND invocation, since
	  this is a shortcoming we should fix at some point.

Mon Jun 02 18:16:52 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testrunner.cc,tests/harness/testrunner.h: Replace
	  DO_TESTS_FOR_BACKEND macro with a do_tests_for_backend method;
	  the method version takes a BackendManager * and gets the backend
	  name from that, rather than requiring it to be specified.
	  Requires addition of a couple of extra private members to the
	  TestRunner class.

Mon Jun 02 10:27:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Add get_value_freq(),
	  get_value_lower_bound() and get_value_upper_bound() methods to
	  Database, to get statistics about the values stored in a slot.
	* api/omdatabase.cc,backends/chert/,backends/database.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/remote/remote-database.cc,common/,
	  net/remoteserver.cc: Add support for the value statistics methods
	  to chert, inmemory, multi and remote databases.
	* tests/Makefile.am,tests/api_valuestats.cc,
	  tests/harness/testrunner.cc,tests/harness/testrunner.h: Add test
	  of the value statistics code, and a "valuestats" backend property
	  to select only backends supporting this.

Mon Jun 02 10:26:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
	  Move implementation of get_dbtype() method out of header.

Mon Jun 02 09:44:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* rests/harness/: Make flint and chert subtypes for the remote and
	  multi backend types.  These are specified (on the command line
	  and elsewhere) by the main type (multi, remotetcp or remoteprog),
	  followed by an underscore, followed by the subtype (flint or
	  chert).  Change return type of BackendManager::get_dbtype() to a
	  string instead of a const char *, to allow backend managers which
	  have subtypes to generate the result dynamically.
	* tests/harness/backendmanager_remote.cc,
	  tests/harness/backendmanager_remote.h,
	  tests/harness/backendmanager_remoteprog.cc,
	  tests/harness/backendmanager_remoteprog.h,
	  tests/harness/backendmanager_remotetcp.cc,
	  tests/harness/backendmanager_remotetcp.h: Add new
	  BackendManagerRemote class as a common base for the two remote
	  backend managers, and move duplicated code into it.  Add
	  parameter to its constructor, and to the constructors of the
	  remote backend manager subclasses, to control the type of
	  database to use at the remote end.
	* tests/harness/backendmanager_multi.cc,
	  tests/harness/backendmanager_multi.h: Add parameter to
	  constructor of BackendManagerMulti, controlling the type of
	  database to use for sub databases.  Put the generated database
	  files in ".multiflint" and ".multichert" instead of ".multi".
	* tests/harness/testrunner.cc: Update list of backend properties to
	  contain the new subtypes.  Modify use_backend() to allow either
	  the full backend type, or just the main part of the backend type,
	  to be specified, so that, for example "-b multi" will run both
	  the multi_chert and multi_flint tests.  Add test runs for all the
	  subtypes now supported.  Catch string exceptions thrown by the
	  test runner - these can currently occur when neither flint or
	  chert are compiled in.
	* tests/apitest.cc,tests/apitest.h: Adjust return type of
	  get_dbtype(), implement skip_test_*_backend functions which just
	  check the prefix of the type, and implement SKIP_TEST_*_BACKEND
	  macros using these.
	* tests/api_anydb.cc: Modify check for running on a multi backend
	  to copy with getting a string back from get_dbtype().

Sat May 31 00:55:03 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/perftest/Makefile.mk: Remove unnecessary
	  quotes.

Thu May 29 16:04:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/: Update svn:ignore property for perftest changes.

Thu May 29 14:33:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/perftest.cc: Include the xapian version string in
	  the test output.  For runs from SVN, also include the subversion
	  revision number and branch in the output.

Wed May 28 21:47:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc,
	  matcher/valuerangepostlist.h: Apply patch from ticket #270 to
	  implement ValueRangePostList::next() by using an alldocs posting
	  list, instead of trying docids in turn.  This is much more
	  efficient if document IDs are sparse.  Since both methods require
	  accessing the termlist table to check for the next document, and
	  some cursory performance tests don't show a measurable difference
	  in speed, I think this approach is at least safe, and probably
	  superior.

Wed May 28 21:28:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest/perftest.cc: Log the flush threshold for indexing
	  runs.
	* tests/perftest/perftest_randomidx.cc: Set the run size back to a
	  reasonably large value.

Wed May 28 20:48:10 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac,tests/,tests/perftest/,tests/perftest_matchdecider.cc,
	  tests/perftest_randomidx.cc: Move performance test source files
	  into a subdirectory.  Modify output of performance tests to
	  include some basic system information, and also to include
	  details of the parameters used to perform indexing tests.

Wed May 28 20:42:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Fix numbering in checklist for developers so that it
	  doesn't repeat section 5.

Sun May 25 14:21:40 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update to match 1.0 branch.

Sun May 25 00:24:09 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Start to update from ChangeLog, stripping out backported
	  changes.

Sat May 24 16:38:49 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update to match 1.0 branch.

Sat May 24 16:33:19 GMT 2008  Olly Betts <olly@survex.com>

	* tests/termgentest.cc: Pass Xapian::Document by const reference.

Sat May 24 14:30:59 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Only warn about duplicate user metadata keys
	  if the tags aren't the same.

Sat May 24 12:14:55 GMT 2008  Olly Betts <olly@survex.com>

	* bin/Makefile.am: Put special -I options in foo_CPPFLAGS not
	  foo_CXXFLAGS.  As well as being the more correct place, this also
	  means that AM_CXXFLAGS is now used when compiling xapian-check and
	  xapian-compact, which in particular enables compiler warnings.
	* bin/xapian-check.cc,bin/xapian-compact.cc,bin/xapian-check-flint.cc:
	  Fix warnings (one unused variable and a few cases of a variable
	  masking another with the same name - none problematic in practice).

Fri May 23 09:22:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/inmemory/inmemory_database.cc: Fix bug in inmemory
	  database, which resulted in the values not being stored correctly
	  if document IDs were sparse.
	* matcher/valuerangepostlist.cc: Fix the next() method not to
	  return document IDs which aren't present in the database - this
	  used to happen if the document IDs were sparse.
	* tests/api_anydb.cc: Add "valuerange2", a regression test for
	  OP_VALUE_LE returning document IDs which aren't present in the
	  database, and "alldocspl1", which does a generic test of an
	  alldocs postlist in a sparse database (this passed before the
	  above changes, but might as well be added anyway).

Wed May 21 19:33:12 GMT 2008  Olly Betts <olly@survex.com>

	* docs/Makefile.am: test == isn't portable - use test = instead.

Wed May 21 13:22:23 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Fix path for atreus.

Wed May 21 13:21:08 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Fix search&replace error - the CVS module is still called
	  www.xapian.org.

Wed May 21 13:16:39 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Reword, since environmental variable PATH isn't "set by
	  $PATH".

Wed May 21 13:16:21 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: ixion -> atreus.

Wed May 21 13:12:07 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Improve documentation comment.

Sun May 18 05:20:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/remote_protocol.html: Remove spurious "i" at end of line.

Sat May 17 11:53:54 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testutils.h: Layout and macro parameter name tweaks.

Fri May 16 20:42:05 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Check that all source databases are the same
	  type (flint or chert).  Copy over "iamchert" for chert.  Update
	  terminology - the "meta file" is now called the "version file".

Fri May 16 17:33:22 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/chert/chert_version.cc:
	  Need <cstdio> for rename().

Fri May 16 17:27:56 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc: Correct FIXME comment and mark
	  as "FIXME:1.2.0".

Fri May 16 17:21:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testrunner.cc,tests/harness/testrunner.h: Add
	  condition to test if the backend is "inmemory".
	* tests/perftest_randomidx.cc: Change the run size from 1000
	  documents to 1000000.  Disable this test for the inmemory
	  backend, because it will quickly use up all the memory on the
	  machine.

Fri May 16 16:56:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note about some more PDF generation tools which are
	  needed, and that doxygen requires them to be on PATH.

Fri May 16 16:38:40 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Ubuntu now needs tetex-extra too.

Fri May 16 10:05:30 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix to not reject chert databases during the
	  "up front" check.

Thu May 15 20:20:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/progclient.cc: Set namespace for close methods (to avoid
	  conflicting with the close method I'm working on adding to
	  database internal).

Wed May 14 17:14:53 GMT 2008  Olly Betts <olly@survex.com>

	* backends/database.cc: Default to flint not chert for a new database.

Wed May 14 17:11:56 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc,docs/postingsource.rst,
	  include/xapian/postingsource.h,matcher/externalpostlist.cc:
	  PostingSource::check() now returns the valid flag rather than
	  passing it in by reference to be set.  Change "should" to "must"
	  for the get_termfreq_est() requirement at Richard's suggestion.
	  Add parameter names to PostingSource method prototypes and update
	  documentation comments to match.

Wed May 14 15:34:38 GMT 2008  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/index.html,docs/postingsource.rst: Add
	  topic document for PostingSource.

Mon May 12 17:27:13 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/postingsource.h: Add documentation comments for
	  ValueWeightPostingSource, and tweak
	  PostingSource::get_maxweight() comment a bit more.

Mon May 12 16:51:01 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Clarify get_maxweight() if the
	  maximum from now on.

Mon May 12 06:51:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/postingsource.cc,include/xapian/postingsource.h,tests/api_db.cc,
	  tests/harness/index_utils.cc: Add ValueWeightPostingSource, which
	  reads a value, applies sortable_unserialise() to it, and returns
	  that as the weight for each document.

Sun May 11 23:49:07 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Do a final sync by
	  comparing our versions to the latest vanilla upstream.  Add a note
	  to each file of the latest revision sync-ed against.
	* queryparser/lemon.c: Enable '#define PRIVATE static'.

Sun May 11 22:48:27 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Add a note of the speed-up that the recent QueryParser changes
	  have given.

Sun May 11 22:10:19 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 5053".

Sun May 11 22:01:48 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 5052".

Sun May 11 21:56:03 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Fix a comment typo.

Sun May 11 21:52:30 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4751".

Sun May 11 21:51:18 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 4745".

Sun May 11 21:47:03 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Comment out memset() call added by
	  one of the earlier merged upstream changes - a later comment on
	  the ticket referred to notes that this was actually a bug in the
	  grammar of the people who reported it.

Sun May 11 21:44:46 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 4743".

Sun May 11 21:41:55 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 4738".

Sun May 11 21:33:13 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 4736".
	* queryparser/lemon.c: Add %syntax_error directive since lemon has
	  changed it's error recovery strategy if you don't have one.

Sun May 11 20:54:31 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: If we hit a syntax error, don't
	  bother feeding further tokens to the parser!

Sat May 10 21:42:44 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4641".

Sat May 10 21:33:10 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4473".

Sat May 10 21:31:25 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4439".

Sat May 10 21:28:27 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4274".

Sat May 10 21:25:35 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4190".

Sat May 10 21:20:16 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 4160".

Sat May 10 21:07:15 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3753".

Sat May 10 21:03:19 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 3738".

Sat May 10 20:00:09 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3654".

Sat May 10 19:55:32 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3594".

Sat May 10 19:46:05 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3593".

Sat May 10 19:44:15 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3591".

Sat May 10 19:40:12 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3528".

Sat May 10 19:38:36 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3476".

Sat May 10 19:36:06 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3333".

Sat May 10 19:33:33 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 3244".

Sat May 10 19:29:18 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3226".

Sat May 10 19:19:48 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 3224".

Sat May 10 19:14:18 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 3210".

Sat May 10 18:56:50 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 3181".

Sat May 10 17:05:35 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 3126".

Sat May 10 16:51:31 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 2764".

Sat May 10 16:40:48 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c,queryparser/queryparser.lt: Merge upstream
	  "Check-in Number: 2761".

Sat May 10 16:32:45 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 2458".

Sat May 10 16:29:55 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 2345".

Sat May 10 16:08:28 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Merge upstream "Check-in Number: 2302".

Sat May 10 15:50:23 GMT 2008  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Merge upstream "Check-in Number: 2208".

Sat May 10 15:03:59 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Prefer `str.assign(ptr)' to `str =
	  string(ptr)'.

Sat May 10 14:48:38 GMT 2008  Olly Betts <olly@survex.com>

	* api/matchspy.cc,api/replication.cc: Prefer `str.assign(ptr, len)' to
	  `str = string(ptr, len)'.

Fri May 09 16:53:19 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: No entries in dispatch[] are NULL, so there's
	  no point testing for it.

Fri May 09 16:51:10 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Remove pointless conversion to size_t which
	  breaks GCC 2.95 build.

Fri May 09 16:22:46 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc: Needs <cstdio> for rename().

Fri May 09 15:41:08 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc: No need for an explicit std::endl when
	  calling TEST_AND_EXPLAIN().

Fri May 09 15:38:22 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc: Use '\n' rather than endl in the middle of
	  writing stuff, since endl forces a flush which just adds useless
	  overhead.

Fri May 09 15:24:42 GMT 2008  Olly Betts <olly@survex.com>

	* common/omdebug.h: Fix RETURN macro to work on GCC 2.95 for the case
	  `RETURN(string())'.

Fri May 09 08:33:35 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Add a protected default ctor so that
	  code subclassing PostingSource actually compiles!

Thu May 08 16:41:59 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: Add doxygen comments for
	  Xapian::PostingSource.  Add private assignment operator and
	  copy constructor to prevent copying.

Thu May 08 16:40:49 GMT 2008  Olly Betts <olly@survex.com>

	* common/postlist.h: Fix one doxygen comment and improve another.

Mon May 05 15:22:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Clean up .chert in clean-local.

Mon May 05 14:52:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am: Adapt the dist-check hook to work with a VPATH
	  build in non-maintainer mode.

Mon May 05 13:18:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am: Fix "make distcheck" by using dist-hook to
	  install generated files, with the appropriate dependency, instead
	  of wildcards in EXTRA_DIST which don't give the correct expansion
	  unless the files happened to be generated already by another
	  rule. Also, ensure that the documentation is generated before
	  attempting to install it.

Sun May 04 09:30:53 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_version.cc,backends/flint/flint_version.cc,
	  common/stringutils.h: Move CONST_STRLEN() into stringutils.h.
	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  Use CONST_STRLEN().

Sat May 03 18:56:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc: Reset the internal sorter pointer to NULL when
	  changing to a sort by value. Fixes #256.
	* tests/api_sorting.cc: Add regression test.

Sat May 03 18:52:27 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Mark internal functions as @internal.

Sat May 03 18:43:12 GMT 2008  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in: Disable header and directory relationship
	  graphs in the API documentation as they aren't interesting to users.

Sat May 03 18:12:30 GMT 2008  Olly Betts <olly@survex.com>

	* docs/gen_codestructure_doc.in: Link to trac instead of viewvc.

Sat May 03 17:25:02 GMT 2008  Olly Betts <olly@survex.com>

	* docs/replication_protocol.rst: Fix a few typos.

Sat May 03 15:53:24 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_database.cc,backends/flint/flint_database.cc:
	  If Database::reopen() is called and the database revision on disk
	  hasn't changed, then do as little work as possible.  Even if it
	  has changed, don't bother to recheck the version file (bug#261).

Sat May 03 10:28:30 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Improve code to prevent probing for f77, etc.

Sat May 03 10:17:05 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/rset.cc: Missing change from last commit.

Sat May 03 09:25:29 GMT 2008  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/,expand/Makefile.mk,expand/esetinternal.cc,
	  expand/expand.cc: Rewrite class ESet::Internal, incorporating the
	  functionality which used to be in the internal OmExpand class.  The
	  expand operation now uses a min heap rather than calling
	  nth_element() repeatedly - this should reduce the complexity of the
	  expand operation by a factor of n/log(n) where n is the requested
	  ESet size.

Fri May 02 15:51:29 GMT 2008  Olly Betts <olly@survex.com>

	* common/ortermlist.h,expand/ortermlist.cc: Kill FreqAdderOrTermList's
	  explicit empty dtor.

Thu May 01 16:38:40 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,api/replication.cc,backends/chert/,
	  backends/flint/,backends/inmemory/inmemory_positionlist.cc,
	  common/utils.cc,matcher/stats.cc,tests/perftest_matchdecider.cc,
	  tests/perftest_randomidx.cc: Assorted formatting tweaks.

Thu May 01 16:32:58 GMT 2008  Olly Betts <olly@survex.com>

	* common/unaligned.h: Fix ";;" to ";" after AssertRel calls.

Thu May 01 16:12:05 GMT 2008  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Tell doxygen to
	  expand XAPIAN_VISIBILITY_DEFAULT so it doesn't appear in collated
	  API documentation.

Wed Apr 30 10:57:53 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Update bugzilla references and URLs to reflect the move
	  to trac.  Update the "fixing a bug" checklist to mention backporting
	  and updating the release notes.

Wed Apr 30 10:40:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/remote-database.cc: Fix error message displayed
	  when remote protocol version doesn't match to display the minor
	  part of the version number supplied by the server correctly.

Tue Apr 29 17:37:10 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Add Alexandre Gauthier, for supplying a method for doing
	  python packaging for Windows.

Tue Apr 29 16:20:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc: Fix variable name for windows compilation.

Tue Apr 29 06:50:53 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_table.cc,backends/flint/flint_table.cc:
	  Remove some debugging code, left over from writing the
	  replication code.

Mon Apr 28 12:11:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/chert/chert_btreebase.cc,backends/chert/chert_table.cc,
	  backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc:
	  Fix issue #259 - update the last_block value whenever allocating
	  a new value, so that next_for_sequential doesn't give up too
	  early.  Also, in both next_for_sequential and
	  prev_for_sequential, for writable databases, check the built-in
	  cursor at all levels for the new block rather than just reading
	  from disk, since newly allocated blocks won't have been written
	  to disk yet.  Also, test the return type of next() when reading
	  subsequent parts of tags, and raise DatabaseCorruptError if it
	  returns false; this prevents incorrect data being returned,
	  leading to a zlib error.
	* tests/api_wrdb.cc: Add regression test.

Fri Apr 25 08:39:28 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Missed change from last but one commit.

Thu Apr 24 13:44:48 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Reserve size of postlists vector.

Thu Apr 24 13:38:51 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h,matcher/externalpostlist.cc,
	  matcher/externalpostlist.h,tests/api_db.cc: Add a default
	  PostingSource::get_description() method so users who don't care
	  aren't forced to define one.  Make PostingSource::reset() a standard
	  method and call it automatically so that a PostingSource-using
	  Query can be run more than once without extra work.

Thu Apr 24 11:24:30 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Don't need <queue>.

Thu Apr 24 04:50:43 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Add test that boolean branches of matches don't
	  cause Xapian::PostingSource to be asked for weights.

Thu Apr 24 03:27:39 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/externalpostlist.cc,matcher/externalpostlist.h,
	  matcher/queryoptimiser.cc: ExternalPostList now takes the
	  factor into account, so works with OP_SCALE_WEIGHT, and
	  doesn't call get_weight()/get_maxweight() for a boolean
	  branch.
	* tests/api_db.cc: Add tests for OP_SCALE_WEIGHT.

Thu Apr 24 02:16:08 GMT 2008  Olly Betts <olly@survex.com>

	* xapian-config.in: Back out --swigheaders.

Wed Apr 23 11:37:45 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/externalpostlist.h: Need to initialise current.

Wed Apr 23 07:57:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Put the inclusion of "utils.h" back; needed
	  for om_tostring().

Wed Apr 23 04:20:55 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/replication.h: Eliminate reference to FlintDatabase
	  from doc comment since it's not user-visible, and chert supports
	  replication too.  No need for '#include <xapian/database.h>' so
	  remove.  Remove references to non-existent parameter 'remotename'.
	  'DatabaseCorrupt error' -> 'DatabaseCorruptError'.

Wed Apr 23 04:19:53 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Wrap Xapian::Query::Internal class
	  definition in "#ifndef SWIG" ... "#endif" in preparation for getting
	  SWIG to directly parse it.

Wed Apr 23 02:16:53 GMT 2008  Olly Betts <olly@survex.com>

	* api/omquery.cc: Prefer string() to "".

Wed Apr 23 02:16:10 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Fix doc comment typo (doesn't affect API
	  docs).

Wed Apr 23 00:59:40 GMT 2008  Olly Betts <olly@survex.com>

	* api/postingsource.cc: Another missing file.

Wed Apr 23 00:34:34 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/postingsource.h: New file missing from previous
	  commit.

Wed Apr 23 00:30:34 GMT 2008  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/omquery.cc,api/omqueryinternal.cc,
	  include/Makefile.mk,include/xapian.h,include/xapian/query.h,matcher/,
	  tests/api_db.cc: Add support for Xapian::PostingSource.

Wed Apr 23 00:21:25 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian.h: Fix misplaced comment.  Tweak doxygen comments for
	  version functions to be more consistent with others.

Wed Apr 23 00:16:14 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Remove bogus comment from cut-and-paste.

Wed Apr 23 00:14:30 GMT 2008  Olly Betts <olly@survex.com>

	* common/omassert.h: Add AssertEqDoubleParanoid().
	* matcher/multimatch.cc: Use it instead of home-brewed version.

Tue Apr 22 23:30:50 GMT 2008  Olly Betts <olly@survex.com>

	* common/utils.h: Stop exporting internal functions needlessly.

Tue Apr 22 12:53:55 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix to work again (broken by the splitting of
	  FlintTable::commit() into flush_db() and commit() in the replication
	  changes).  Don't bother passing tablename to functions where it
	  always has the same value.  Tweak the user-metadata copying loop to
	  make it clearer.  Reserve the right size for the vector used for
	  merging spellings.

Tue Apr 22 12:28:17 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_table.h,backends/flint/flint_table.h,
	  bin/xapian-compact.cc: Default commit's changes_fd parameter to -1.

Tue Apr 22 11:39:10 GMT 2008  Olly Betts <olly@survex.com>

	* common/omassert.h: Fix comment typo.

Tue Apr 22 10:54:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Add "utils.h" back - needed for
	  om_tostring() and mkdir().

Mon Apr 21 07:48:45 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Don't need <list>.  Wrap comment.

Mon Apr 21 07:04:12 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/chert/chert_check.cc,
	  backends/flint/flint_check.cc,tests/: Remove various needless
	  inclusions of headers (especially <iostream>).  Reorder headers.
	  Wrap a couple of comments.  Append single characters to strings
	  using character constants.

Mon Apr 21 06:26:49 GMT 2008  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/valuerangeproccompat.cc,
	  include/xapian/queryparser.h: Remove the
	  v102::NumberValueRangeProcessor ABI-preserving machinery since it's
	  OK to change the ABI for 1.1.0.

Mon Apr 21 04:42:52 GMT 2008  Olly Betts <olly@survex.com>

	* api/,queryparser/queryparser.cc: Remove debug log tracing from
	  get_description() methods since the debug log call tracing *calls*
	  get_description() methods on parameters, so logging these calls just
	  makes for more confusing debug logs.  A get_description() method
	  should have no side-effects so it's not very interesting even when
	  explicitly called by the user.
	* common/omdebug.h: Replace "OM_DEBUG_INTRO" class with dummy
	  placeholder (to preserve numbering), to help prevent accidentally
	  adding these back.

Sun Apr 20 09:46:11 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,common/: Stop describing get_description() as
	  an "Introspection method" internal (matching earlier change to stop
	  doing so externally).  This doesn't help to explain what it does,
	  and get_description() doesn't actually fall under any of the formal
	  definitions of "introspection" I can find.

Fri Apr 18 10:26:18 GMT 2008  Olly Betts <olly@survex.com>

	* backends/chert/chert_metadata.cc: Fix renamed parameter in debug
	  logging.

Fri Apr 18 10:18:35 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,Makefile.am,backends/Makefile.mk,backends/chert/,
	  backends/database.cc,backends/flint/,backends/remote/net_postlist.cc,
	  backends/remote/net_postlist.h,bin/,common/,configure.ac,docs/,
	  include/xapian/dbfactory.h,include/xapian/version_h.cc,
	  net/remoteserver.cc,tests/Makefile.am,tests/harness/: Start new
	  development backend "chert".  Currently the change over flint is
	  that in the postlist table, doclengths are stored once in a
	  chunked postlist-like form, rather than once per posting.

Tue Apr 15 23:24:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc,tests/api_nodb.cc: Fix segfault introduced by
	  previous change when asking for the termfreq on an empty mset.
	  Include a regression test.

Tue Apr 15 06:02:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/enquire.h: Change definition of MSet::get_termfreq
	  such that it will fall back to looking the term frequency up in
	  the database rather than raising an exception if the term is not
	  present in the mset.
	* api/omenquire.cc,common/omenquireinternal.h: Implementation of
	  the above.
	* tests/api_anydb.cc: Test the above.

Mon Apr 14 21:29:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/: Use copies of freemem.cc and freemem.h from omega to report
	  the free physical memory at each stage of indexing.  Also, add a
	  get_total_physical_memory() function to this, and report it's
	  value at the top of the results file (only tested on Linux so
	  far).

Mon Apr 14 19:17:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Make skip_to() test a bit more comprehensive.

Mon Apr 14 19:08:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_metadata.cc,backends/flint/flint_metadata.h:
	  Fix a bug in the skip_to() implementation, and set the parameter
	  name to "key" instead of "tname", since it's not a term.
	* tests/api_wrdb.cc: Add a test of the metadata iterators.

Mon Apr 14 14:22:16 GMT 2008  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/flint/Makefile.mk,
	  backends/flint/contiguousalldocspostlist.cc,
	  backends/flint/contiguousalldocspostlist.h,common/Makefile.mk:
	  The ContiguousAllDocsPostList class isn't flint-specific, so move
	  it out of backends/flint.

Mon Apr 14 13:56:51 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Removed duplicate
	  '#include "flint_database.h"', ironically added by Richard's recent
	  change.  Fix a couple of errors in alphabetical ordering, and
	  move autoptr.h and the "safe" headers to where the standard headers
	  they replace would go.

Mon Apr 14 13:44:37 GMT 2008  Olly Betts <olly@survex.com>

	* Makefile.am,tests/Makefile.am: List check-perf in .PHONY.
	* HACKING: Document the need to list non-file targets in .PHONY.

Mon Apr 14 07:59:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Correct return type in a DEBUGAPICALL macro.

Mon Apr 14 07:14:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc,backends/database.cc,backends/flint/,
	  common/database.h,include/xapian/database.h: Add
	  metadata_keys_begin() and metadata_keys_end() methods to
	  Database, to allow the complete list of metadata in a database to
	  be retrieved.  Supports a prefix argument to obtain a limited
	  subset of the keys, since that may be useful in some situations
	  and is very easy to implement.  Only accesses the keys in the
	  first database in a multidatabase situation (which corresponds
	  with the current behaviour of get_metadata()).
	  Also, reorder the includes in flint_database.cc to be largely
	  alphabetical, and remove a duplicated #include of
	  <xapian/error.h>.

Mon Apr 14 06:51:48 GMT 2008  Olly Betts <olly@survex.com>

	* common/fileutils.cc: Use endswith().

Mon Apr 14 06:14:44 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,common/fileutils.cc,
	  tests/queryparsertest.cc: Use empty() rather than comparing size()
	  to 0.  Use startswith() in a couple of places.  Tweak an Assert
	  to AssertEq.

Sun Apr 13 14:30:55 GMT 2008  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Replace uses of DEBUGLINE(SPELLING, ...) in
	  Database::get_spelling_suggestion() with standard
	  DEBUGAPICALL/RETURN tracing.  Add DEBUGAPICALL/RETURN tracing to
	  a few Database methods which were missing it.

Sun Apr 13 14:15:00 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc: Use RETURN() in a few places which
	  weren't.

Sun Apr 13 13:59:57 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Remove long-time commented
	  out uses of DebugMsg.

Sun Apr 13 13:52:32 GMT 2008  Olly Betts <olly@survex.com>

	* expand/expandweight.cc: Use DEBUGLINE() instead of DEBUGMSG().

Sun Apr 13 11:23:56 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Include corresponding header right
	  after config.h.

Sun Apr 13 10:28:27 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Tweak brace formatting and wrap a
	  comment.

Fri Apr 11 16:18:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc: Fix typo in windows specific code.

Fri Apr 11 12:44:25 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc: Include corresponding header right
	  after config.h.

Fri Apr 11 10:25:03 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.h: Fix filename in header comment.

Fri Apr 11 04:49:03 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac,tests/submitperftest.in,tests/submitperftest.py.in:
	  Rename submitperftest.py to submitperftest.
	* HACKING: Document that scripts shouldn't generally have an
	  extension, and the reason for this policy.

Fri Apr 11 04:32:15 2008  Olly Betts <olly@survex.com>

	* HACKING: Note that GCC 4.3 no longer supports pre-ISO forms of
	  standard headers, such as <list.h>.  GCC on Solaris now seems
	  to support throwing exceptions across shared library boundaries.

Fri Apr 11 03:24:47 GMT 2008  Olly Betts <olly@survex.com>

	* tests/Makefile.am: "make up" in tests now does "make" in the
	  top-level.

Thu Apr 10 08:33:06 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_postlist.cc: Fix debug logging message: ostList
	  -> FlintPostList.

Thu Apr 10 05:47:37 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Remove erroneous FIXME comments talking
	  about ReadFile() not updating WSAOVERLAPPED's Offset/OffsetHigh
	  being a problem with using _get_osfhandle() - ReadFile is documented
	  to behave this way on MSDN.  Factor out update of Offset/OffsetHigh
	  and tweak this code not to rely on off_t being 64 bits.

Thu Apr 10 05:24:11 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_record.cc,backends/flint/flint_utils.h: Use
	  the new STATIC_ASSERT family of macros instead of CASSERT and
	  CASSERT_TYPE_UNSIGNED.

Thu Apr 10 04:46:40 GMT 2008  Olly Betts <olly@survex.com>

	* common/omassert.h: Add "compile-time assertion" macros:
	  STATIC_ASSERT(COND), STATIC_ASSERT_UNSIGNED_TYPE(TYPE),
	  STATIC_ASSERT_TYPE_DOMINATES(TYPE1, TYPE2).
	* tests/internaltest.cc: Test these.

Thu Apr 10 01:07:34 GMT 2008  Olly Betts <olly@survex.com>

	* common/remoteprotocol.h,net/remoteserver.cc: Clean up a couple more
	  things now we've moved to major protocol version 31.

Wed Apr 09 06:50:44 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Add missing explicit include of
	  remote-database.h.

Wed Apr 09 04:48:54 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc,bin/xapian-compact.cc: Fix check for user
	  metadata key to not match other key types we may add in the future.
	  When compacting, we can't assume how we should handle them.  When
	  checking, they currently shouldn't be present, so we should flag
	  an error for them.

Tue Apr 08 15:27:09 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Fix missing line in old entry.

Mon Apr 07 07:49:56 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreeutil.h: Use AssertRel rather than Assert.

Mon Apr 07 06:20:42 GMT 2008  Olly Betts <olly@survex.com>

	* api/error.cc,api/valuerangeproc.cc,backends/flint/flint_table.cc,
	  backends/multi/multi_postlist.cc,backends/remote/net_termlist.cc,
	  bin/xapian-inspect.cc,common/omdebug.cc,common/utils.cc,
	  languages/stem.cc,languages/steminternal.cc,
	  tests/harness/backendmanager_multi.cc,
	  tests/harness/backendmanager_remotetcp.cc: Header inclusions tidying
	  - remove a few redundant inclusions; prefer cstdio to stdio.h, etc
	  in a few places; note why certain headers are required in cases
	  where it's less obvious; in a .cc file, include the corresponding .h
	  second (after <config.h>).

Mon Apr 07 04:23:30 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Fix --enable-log=profile to be recognised.
	* common/omdebug.cc,common/omdebug.h: Fix build with
	  --enable-log=profile.
	* HACKING: Actually document --enable-log=profile.

Sat Apr 05 21:07:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest.cc: Flush after each write, so we can monitor
	  progress of long running tests (we might need to remove this
	  again later, if profiling shows it has a noticeable impact).  Fix
	  two calls to write() to be a single call.
	* tests/perftest_randomidx.cc: Add values to different slots; I'd
	  added them all to slot 0 by mistake, so they were overwriting
	  each other.

Sat Apr 05 20:17:43 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am,tests/perftest_randomidx.cc: Add a new
	  performance test which builds a randomly generated index, and
	  times the index run.  Probably wants a bit more tweaking to make
	  it slightly more representative, but should be a useful test to
	  run on systems where downloading a large amount of data is
	  impractical.
	* ChangeLog: Add missing log message for last commit.

Sat Apr 05 20:16:58 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/perftest.cc,tests/perftest.h: Log indexing runs every 5
	  seconds, as well as after every 1000 documents - gives useful
	  information for slow index runs.

Thu Apr 03 20:58:31 GMT 2008  Olly Betts <olly@survex.com>

	* backends/database.cc,include/xapian/dbfactory.h,
	  include/xapian/version_h.cc: Remove lingering traces of quartz.

Thu Apr 03 07:59:53 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Print top-bit-set characters as escaped
	  hex forms as they often won't be valid UTF-8 sequences.

Thu Apr 03 03:53:37 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Check for the user passing a database
	  directory and issue a special error message since this is an obvious
	  mistake to make.

Wed Apr 02 07:00:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Modify the estimate for the number of hits
	  based on the rate at which a match decider has been denying
	  documents.  Also, reduce the upper bound based on the number of
	  documents denied.
	* tests/api_db.cc: Check that the upper bound when a match decider
	  is used is within the valid range, rather than a particular
	  value.

Tue Apr 01 22:40:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac,tests/perftest.cc,tests/submitperftest.py.in,
	  tests/urllib2_file.py: Fix display of upper bound on number of
	  results of search (was showing lower bound).  Fix display of
	  closing <repetition> tags.  Add script to submit the results of a
	  performance test to a central server.

Tue Apr 01 11:19:58 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Gently rearrange where and how we check for overlong keys.
	* tests/api_wrdb.cc: Extend termtoolong1 to test that the "term too
	  long" exception messages contain the length correctly.

Tue Apr 01 06:06:43 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS,HACKING,INSTALL,README,debian/control.in,debian/copyright,
	  docs/install.html,xapian-core.spec.in: Standardise URLs on our
	  website to be xapian.org not www.xapian.org.

Tue Apr 01 03:44:32 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_record.cc,backends/flint/flint_values.cc,
	  common/,docs/quickstartexpand.cc.html,docs/quickstartindex.cc.html,
	  docs/quickstartsearch.cc.html,matcher/: Update the FSF address for
	  the small number of files which still have the old one.  Remove the
	  "START_LICENCE" and "END_LICENCE" markers from the small number of
	  files which still have them.

Tue Apr 01 02:23:27 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteprotocol.h,
	  common/remoteserver.h,common/serialise.h,docs/remote_protocol.html,
	  net/remoteserver.cc,net/serialise.cc: Update remote protocol to
	  a new major version (31) and strip out all the gunk that's only
	  there to keep it compatible with older version 30 clients.

Tue Apr 01 00:12:38 GMT 2008  Olly Betts <olly@survex.com>

	* api/ompostlistiterator.cc,include/xapian/postingiterator.h: Remove
	  the method Xapian::PostingIterator::get_weight() which has been
	  commented out almost forever.  Weight-handling isn't really
	  appropriate here.
	* api/ompostlistiterator.cc: Remove "\todo" since it's already done!

Mon Mar 31 13:24:11 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/: Remove unnecessary default dtors.

Mon Mar 31 13:21:55 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Document to prefer "new SomeClass" to "new SomeClass()".
	* api/omdocument.cc,api/omenquire.cc,backends/database.cc,
	  backends/flint/flint_database.cc,
	  backends/inmemory/inmemory_database.cc,matcher/multimatch.cc,
	  matcher/queryoptimiser.cc,net/remoteserver.cc: Fix instances of
	  the latter form to use the former form.

Mon Mar 31 12:11:09 GMT 2008  Olly Betts <olly@survex.com>

	* tests/: Update svn:ignore property for perftest changes and remove
	  quartz-related entries.
	* tests/perftest.cc: Add missing '#include "utils.h"'.

Mon Mar 31 09:22:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,tests/,tests/harness/,tests/perftest.cc,tests/perftest.h,
	  tests/perftest_matchdecider.cc: Rework the test collation
	  mechanism slightly to allow it to be used by other testsuites:
	  rename collate-apitest to collate-test, and add a parameter to it
	  naming the output file.  Add new "testrunner.h" and
	  "testrunner.cc" which are an equivalent to the old mechanism in
	  apitest for running tests with various properties; the properties
	  for each backend are now held as member variables of a TestRunner
	  class, and testsuites (eg, apitest) subclass this and implement a
	  "run()" method, which will be called for each backend with the
	  appropriate properties set.  Move definition of DEFINE_TESTCASE
	  macro into testsuite.h.  Add new testsuite "perftest", which is
	  intended to contain potentially time consuming performance tests,
	  logging the results to an XML file for later analysis.  Add a
	  simple test of the ValueSetMatchDeciders to this testsuite.
	  "perftest" isn't run by make check, because it is likely to take
	  some hours to complete in future - instead, there's a new
	  top-level target "check-perf" which builds and runs perftest.

Mon Mar 31 08:13:21 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Recommend using the "svn-ci" script.  Update the date
	  command which produces the correct format timestamp for ChangeLog
	  entries.

Mon Mar 31 08:00:58 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreeutil.h: Fix some out-of-date comments.
	* configure.ac: Use AC_CHECK_SIZEOF to define SIZEOF_INT and
	  SIZEOF_LONG.
	* backends/flint/flint_types.h: Use SIZEOF_INT and SIZEOF_LONG to
	  determine the type of uint4 rather than always using unsigned long
	  (which is 64 bits on most 64 bit Unix platforms).  Drop int4 for
	  the time being, as we don't actually use it.

Mon Mar 31 06:34:20 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Refactor BitWriter::encode()
	  to have a single call to write_bits(), and don't include it inline
	  in the class as it's really a bit big to inline (and write_bits()
	  should now be inlined into it, or at least tail-called).

Mon Mar 31 05:33:02 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Reorder header includes to
	  match our new standard more closely.  Indent class definitions to
	  match our coding standards.

Mon Mar 31 05:31:59 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.h: Remove unnecessary default
	  dtor.

Mon Mar 31 04:55:59 GMT 2008  Olly Betts <olly@survex.com>

	* backends/remote/net_document.cc,backends/remote/net_document.h:
	  Rename "doc" member to "data" since it actually holds the document
	  data.

Mon Mar 31 03:25:21 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_document.cc,backends/flint/flint_document.h:
	  Remove unnecessary default dtor.

Mon Mar 31 02:53:48 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_alltermslist.h: Remove unnecessary
	  default dtor.
	* backends/inmemory/inmemory_alltermslist.h: Fix bogus cut-and-pasted
	  doxygen comment for ctor.

Mon Mar 31 02:33:15 GMT 2008  Olly Betts <olly@survex.com>

	* common/inmemory_positionlist.h: Remove unnecessary default
	  destructor.  Fix comment type ("inemory" -> "inmemory").

Sun Mar 30 12:47:50 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Drop explicit dtor for SimpleStopper
	  which does nothing.

Sun Mar 30 12:12:12 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/valuesetmatchdecider.h: Don't bother checking if an
	  element is present before calling std::set::erase().  Don't bother
	  defining an explicit dtor which does nothing.

Sat Mar 29 00:46:13 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Test matchfunctor bounds in combination with
	  collapsing and percentage cutoff.  Also, range check
	  get_matches_estimated rather than checking it's exactly the value
	  currently returned.

Fri Mar 28 21:37:27 GMT 2008  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Test ValueSetMatchDecider::remove_value() for a
	  value which isn't in the set.  Test that removing a value doesn't
	  affect other values in the set.

Fri Mar 28 21:03:30 GMT 2008  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Avoid needless call to pl->get_termfreq_est()
	  if we're using a matchdecider or matchspy.

Fri Mar 28 10:28:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Set matches_lower_bound to 0 before
	  starting the match process if there is a match decider or spy;
	  previously, the lower_bound wasn't being reduced in the presence
	  of a match decider unless all the potential results were
	  retrieved.
	* tests/api_db.cc: Extend matchfunctor1 to check the bounds and
	  estimates returned; includes a regression test for the above.

Fri Mar 28 09:09:54 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_nodb.cc: Extend tests to check ValueSetMatchDecider
	  remove_value and also ValueSetMatchDeciders holding more than one
	  value.

Fri Mar 28 02:41:45 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: Update version info to match 1.0.6.

Fri Mar 28 00:12:48 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc,include/xapian/enquire.h: Merge two of the
	  get_mset() variants into one, with default arguments, which has
	  exactly the same effect.  We added the two variants to preserve
	  ABI compatibility, and now we're branched for 1.1 this is no
	  longer necessary.

Thu Mar 27 23:54:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/valuesetmatchdecider.cc,include/xapian.h,
	  include/xapian/valuesetmatchdecider.h: Add ValueSetMatchDecider,
	  which is a matchdecider which is intended to be passed a set of
	  values to look for in documents, and selects documents based on
	  the presence of those values.
	* tests/api_db.cc,tests/api_nodb.cc: Add tests for the
	  ValueSetMatchDecider - both for calling it standalone, and when
	  passed to get_mset().
	* api/Makefile.mk,include/Makefile.mk: Tell build system about new
	  files.

Thu Mar 27 06:18:52 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Initialise term_pos in previous change to
	  fix valgrind-detected error.

Thu Mar 27 06:13:01 GMT 2008  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Optimise Query(OP_VALUE_GE, <n>, "") to
	  Query::MatchAll.
	* tests/api_nodb.cc: Add testcase for this case.

Thu Mar 27 04:34:40 GMT 2008  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_document.cc,
	  backends/inmemory/inmemory_document.h: Rename "doc" member to
	  "data" since it actually holds the document data.
	* backends/inmemory/inmemory_database.cc: Remove unused <stdio.h>.
	  Include "inmemory_database.h" right after <config.h>.

Wed Mar 26 23:44:03 GMT 2008  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Throw InvalidArgumentError upon
	  RSet::add_document(0).
	* tests/api_nodb.cc: Add regression test for this.
	* matcher/rset.cc: Add assertion that we don't see a zero docid when
	  calculating rtermfreqs.
	* api/omdocument.cc: Use RETURN not return so debug logging sees the
	  return value.
	* backends/inmemory/inmemory_database.cc,
	  backends/remote/remote-database.cc: Change exception throwing for
	  a zero docid to assertions since zero docids should be checked for
	  before we get to here.

Wed Mar 26 06:17:51 GMT 2008  Olly Betts <olly@survex.com>

	* common/postlist.h: Decree that PostList::check() must be passed a
	  docid which actually exists in the database (which is always true
	  currently and seems unlikely to be an onerous requirement).
	* matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc: Take
	  advantage of this new precondition to simplify the code.
	* matcher/valuegepostlist.cc,matcher/valuerangepostlist.cc: Move the
	  corresponding header first as our header inclusion order guidelines
	  recommend.

Thu Mar 13 01:58:18 GMT 2008  Olly Betts <olly@survex.com>

	* common/stats.h,include/xapian/enquire.h,matcher/localmatch.cc,
	  matcher/weight.cc: Untangle Xapian::Weight to just initialise
	  internal to 0 in its ctor, which is an ABI change.  Resolves
	  a load of FIXME:1.1 comments.

Thu Mar 13 00:50:06 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: Remove workaround for newlib which we
	  don't seem to need elsewhere and was marked "FIXME:1.1".

Thu Mar 13 00:49:27 GMT 2008  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Fix footnote ids after deprecation updates.

Wed Mar 12 10:08:37 GMT 2008  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Remove support for OM_STEMTEST_SKIP_RANDOM,
	  OM_STEMTEST_LANGUAGES, and OM_STEMTEST_SEED.

Wed Mar 12 08:30:48 GMT 2008  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Update for bindings removals for 1.1.0.

Wed Mar 12 06:59:25 GMT 2008  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Update for Omega removals for 1.1.0.

Wed Mar 12 05:11:53 GMT 2008  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omquery.cc,api/version.cc,docs/,
	  generate-exceptions.in,include/xapian.h,include/xapian/enquire.h,
	  include/xapian/query.h,tests/api_db.cc,tests/api_wrdb.cc,
	  tests/apitest.cc,tests/harness/,tests/internaltest.cc: Remove all
	  xapian-core features marked for removal in 1.1.0.

Wed Mar 12 03:28:18 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,Makefile.am,backends/Makefile.mk,
	  backends/dir_contents,backends/quartz/,bin/,configure.ac,docs/,
	  tests/,tests/harness/,tests/quartztest.cc,tests/testdata/,
	  xapian-core.spec.in: Remove the quartz backend.

Wed Mar 12 02:14:33 GMT 2008  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Improve wording of the error message when we can't
	  find xapian-config.

Wed Mar 12 02:13:32 GMT 2008  Olly Betts <olly@survex.com>

	* INSTALL: Minor wording tweak.

Wed Mar 12 01:44:42 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Initialise PostlistCursor member firstdid to
	  avoid using it uninitialised when merging user metadata and the same
	  key is present in more than one source database.  If the same user
	  metadata key is present in more than one source database, copy an
	  arbitrary tag value.

Wed Mar 12 00:34:04 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix potential SEGV (which I think can occur
	  when compacting database(s) with user metadata but no postings).

Fri Mar 07 09:46:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/serialise.h: Add missing std:: before string.

Fri Mar 07 00:47:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc: Tidy up a line which was wider than 80
	  columns, and improve the error message returned when a database
	  replica doesn't contain exactly one subdatabase.

Fri Mar 07 00:34:28 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/serialise.h,net/remoteconnection.cc,net/serialise.cc:
	  Change encode_length() to a template, to allow the full range of
	  off_t values to be encoded.  Also, adjust
	  RemoteConnection::get_message_chunked() to allow the message
	  length to be a 64 bit quantity.  Also, make a couple of type
	  conversions to size_t explicit, to remove some warnings on
	  windows.

Thu Mar 06 01:57:04 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog.

Thu Mar 06 01:44:07 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fix terminology - "user metadata" not "user
	  metainfo".  Fix bug - need to invoke is_user_metadata rather than
	  using the function pointer as the if condition!

Thu Mar 06 01:41:09 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix terminology - "user metadata" not "user
	  metainfo".

Wed Mar 05 21:17:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Add some casts (in the windows-specific
	  code) to fix some warnings from MSVC.

Wed Mar 05 19:01:35 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Update to 1.0 branch point.

Wed Mar 05 19:00:07 GMT 2008  Olly Betts <olly@survex.com>

	* common/msvc_dirent.cc: Tweak to bring comment back into 80 columns.

Wed Mar 05 16:35:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_dirent.cc: Fix sense of check for ENOENT after
	  calling _findnext() - it should be checked for when an error code
	  is returned, not when the call succeeds.
	* tests/api_replicate.cc: Fix tiny capitalisation typo.

Wed Mar 05 16:29:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc: Check case where a backslash isn't found in
	  calc_dirname, and don't replace slash with backslash in this
	  case.

Wed Mar 05 09:30:42 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-check.cc: Add understanding of user metainfo keys in
	  the postlist table.  Allow the METAINFO key to be absent if the
	  table only contains user metainfo keys.

Wed Mar 05 09:01:48 GMT 2008  Olly Betts <olly@survex.com>

	* common/msvc_dirent.cc,common/msvc_dirent.h: Move licence boilerplate
	  up front where we have it in every other file.  Move header guards
	  to the usual location.  Detail the fix we've made for not setting
	  errno to ENOENT erroneously.  Push the setting of orig_errno down
	  a bit.

Wed Mar 05 04:57:44 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: -pedantic isn't actually very useful so just drop it
	  rather than testing for known problem cases and risking unknown
	  problem cases.

Wed Mar 05 03:10:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* matcher/valuegepostlist.cc,matcher/valuegepostlist.h: Implement
	  skip_to method for ValueGePostList.  Previously, the
	  ValueRangePostList::skip_to method was used, which would
	  return incorrect documents.

Wed Mar 05 02:54:27 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc: Search for \ instead of / when looking for a
	  backslash!

Wed Mar 05 02:51:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc: Fix incorrect docstring.

Tue Mar 04 18:48:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_dirent.cc: Fix readdir() so that it doesn't change
	  errno to ENOENT on reaching the end of the directory, as
	  specified by POSIX.

Tue Mar 04 17:54:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Fix for a problem with windows.  Because
	  we're using mixed styles of windows file IO, if a file descriptor
	  which actually corresponds to a file was supplied to remote
	  connection, the file pointer wasn't being adjusted after each
	  call to ReadFile or WriteFile.  This manifested in the test case
	  for replication, resulting in a (corrupt) 2048 byte changeset
	  file being written (instead of a considerably longer changeset).
	  To work around this, we explicitly move the file pointer
	  ourselves.

Tue Mar 04 17:41:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_replicate.cc: Close the replica before removing the
	  temporary directory, to allow the rmdir to work on windows.

Thu Feb 28 16:41:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/remoteconnection.h: Include safeunistd.h, to get correct
	  typedef for off_t on windows - previously, the size of the
	  RemoteConnection class was varying depending on the order in
	  which header files were included, resulting in memory corruption.
	* net/remoteserver.cc: Remove incorrect comment about what the
	  problem was.

Sat Feb 23 23:40:56 GMT 2008  Olly Betts <olly@survex.com>

	* xapian-config.in: Use globbing rather than iterating over the output
	  of ls.

Sat Feb 23 23:33:39 GMT 2008  Olly Betts <olly@survex.com>

	* xapian-config.in: Fix not to repeated headers in --swigheaders in a
	  non-VPATH build.

Fri Feb 22 17:20:19 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Add note about preferring std::string().

Fri Feb 22 17:05:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteserver.cc: Use std::string() instead of
	  std::string(""), since it's a bit cleaner.

Fri Feb 22 16:50:32 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteserver.cc: Add workaround for bug in MSVC 2005.

Fri Feb 22 14:39:03 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc,backends/flint/flint_table.cc,
	  backends/quartz/btree.cc: Use msvc_posix_rename() instead of
	  rename() when renaming base files, so that an error isn't
	  returned if the destination already exists.

Thu Feb 21 17:24:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_dirent.cc: Include msvc_dirent.h instead of dirent.h

Thu Feb 21 17:09:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/database.h: ReplicationInfo is a struct, not a class, so
	  forward declare it as such.

Thu Feb 21 12:16:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/Makefile.mk: Add common/safedirent.h to distribution.

Thu Feb 21 00:25:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xapian-config.in: Add swigheaders option, listing the header
	  files used by swig, so that we can add the appropriate
	  dependencies to the makefiles in the bindings.

Wed Feb 20 20:59:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/replication.h: Add a ReplicationInfo structure,
	  and use it to return information about what has been done when
	  the replication methods are called.
	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h,common/replicatetcpclient.h,
	  common/replicatetcpserver.h,net/replicatetcpclient.cc,
	  net/replicatetcpserver.cc: Populate a ReplicationInfo structure
	  when updating a replica, or sending changes to a file descriptor.
	  Also, fix a bug with reading the replication parameters from a
	  file, which caused a full database copy to be performed on every
	  replication request on a newly opened DatabaseReplica object.
	* bin/xapian-replicate.cc: When doing verbose logging, display the
	  number of database copies and changesets applied, and whether the
	  live database has been updated.
	* tests/api_replicate.cc: Check that the information returned by
	  the replication methods is as is should be, and add a regression
	  test for always copying the database.

Wed Feb 20 11:20:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/: Improve reporting of failures to obtain lock due
	  to unexpected errors - the error messages included in the
	  exceptions raised are now more verbose in many situations.  Also,
	  if the lock can't be obtained when a database is being created,
	  report the lock failure, not a DatabaseOpeningError - it's more
	  useful to know that the lock attempt failed than that the
	  database wasn't present before the attempt to create it.

Tue Feb 19 11:58:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Fix compaction for database which contain
	  user metadata keys.

Sat Feb 16 19:53:44 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix incorrect example in doccomment.

Sat Feb 16 14:46:08 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS: Add Matthew Somerville for Search::Xapian patches.

Tue Feb 12 16:34:52 GMT 2008  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Remove information covered by INSTALL since
	  there's no good reason to repeat it and two copies just risks one
	  getting out of date (as has happened here!)

Tue Feb 12 16:27:30 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS: Add David Spencer for reporting bug#237.

Tue Feb 12 16:25:00 GMT 2008  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Fix very out of date reference to MSet::items
	  (bug#237).

Tue Feb 12 12:40:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-compact.cc: Fix incorrect parameters passed to
	  FlintTable constructor.

Sat Feb 09 11:56:40 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/socket_utils.h,net/remoteconnection.cc: More fixes for
	  windows.

Sat Feb 09 11:31:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_dirent.cc,common/msvc_dirent.h: Hopefully this is a
	  better implementation of dirent functions.

Sat Feb 09 10:59:50 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/: Add implementation of dirent.h for use with MSVC; this
	  is copied from the mingw implementation, which has been placed in
	  the public domain.  Add "safedirent.h" header for easy inclusion
	  of this implementation.

Sat Feb 09 10:43:49 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_replicate.cc: Use _putenv instead of setenv on windows.

Sat Feb 09 09:56:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/socket_utils.cc,common/socket_utils.h: More fixes for
	  windows.

Fri Feb 08 16:40:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/Makefile.mk,common/socket_utils.cc,common/socket_utils.h,
	  net/remoteconnection.cc,net/tcpclient.cc: Move windows-specific
	  socket handling code from remoteconnection.cc into a separate
	  file, provides the inline close_fd_or_socket for unix in the
	  header file.  Use this in tcpclient.cc instead of close to close
	  sockets correctly on windows.

Fri Feb 08 16:40:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/fileutils.cc,common/replicatetcpclient.h: Correct typos in
	  windows only sections of code.

Fri Feb 08 15:29:28 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Fixes for windows - always include
	  "safesysselect.h", and include <io.h> on windows.
	  Also, remove definition of an unused variable (probably due to a
	  copy and paste error).

Wed Feb 06 13:45:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-replicate.cc: Include "safeunistd.h" - needed for
	  sleep, if nothing else.

Tue Feb 05 18:10:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Set -pedantic in CXXFLAGS not AM_CXXFLAGS when
	  testing for problem with it - AM_CXXFLAGS is an automake thing,
	  and isn't used by the autoconf test.

Tue Feb 05 17:50:55 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Cleaner patch for the test of compilation with
	  -pedantic - cache the result using AC_CACHE_VAL().

Tue Feb 05 17:32:11 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Check whether compilation of a cast of INFINITY to
	  a double, and comparison with HUGE_VAL, causes a problem if
	  -pedantic is specified (which it does on at least some Mac OSX
	  versions).  If so, don't use the -pedantic compiler flag.

Tue Feb 05 09:24:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_database.cc,
	  backends/quartz/bcursor.cc: More fixes for debug logging - rename
	  the "hex_encode" functions used for logging to
	  "hex_display_encode" to avoid name clash.  Fix return type
	  declared in flint_database.cc's DEBUGCALL macro.

Tue Feb 05 09:18:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc: Fix for logging compiles: don't check return
	  value of a void function.

Tue Feb 05 09:14:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc: Reopen database after replication, to fix bug
	  with applying a chain of changesets.
	* backends/flint/flint_database.cc: Don't use O_TRUNC (or O_CREAT)
	  when modifying the DB files!
	* tests/api_replicate.cc: Don't call function from inside
	  TEST_EQUAL, because that's a macro and the function will be
	  double-evaluated.

Tue Feb 05 02:07:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/database.cc,backends/flint/,
	  common/database.h: Many fixes to the replication code.  Now
	  parses replication changesets correctly and applies them to the
	  databases.  Also, correct one bug with the generation of
	  changesets.
	* docs/replication.rst,docs/replication_protocol.rst: Update.
	* tests/api_replicate.cc: Add test of two changesets being applied
	  at once.

Sun Feb 03 13:31:10 GMT 2008  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Backport atomic base update fix from
	  flint.

Sat Feb 02 22:47:56 GMT 2008  Olly Betts <olly@survex.com>

	* AUTHORS: Add Thomas Viehmann.

Sat Feb 02 03:39:33 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Update the base files atomically to
	  avoid problems with reading processes finding partially written
	  ones.

Sat Feb 02 03:38:00 GMT 2008  Olly Betts <olly@survex.com>

	* api/replication.cc: Don't leak the RemoteConnection object.

Fri Feb 01 23:15:38 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h:
	  Fix assorted comment errors.

Fri Feb 01 20:20:23 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Fix comment.

Fri Feb 01 20:13:23 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-replicate.cc: Document the default interval in --help.

Fri Feb 01 20:05:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-replicate.cc: Remove the "return 0;" I added at the
	  end of the function - I didn't realise this, but in C++ it's not
	  necessary to have a return at the end of main().  Tidier without
	  it, so it's gone.

Fri Feb 01 19:44:05 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Add Unicode::toupper() to complement
	  Unicode::tolower().
	* tests/api_unicode.cc: Add caseconvert1 testcase to test
	  Unicode::tolower() and Unicode::toupper().

Fri Feb 01 19:36:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-replicate.cc: Add one-shot and verbose options to
	  replication client.

Fri Feb 01 17:52:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/flint/flint_database.cc,
	  include/xapian/replication.h,net/replicatetcpclient.cc,
	  tests/api_replicate.cc: Keep the RemoteConnection in the
	  DatabaseReplica object, so that any data which is read ahead
	  doesn't get lost.  If an error occurs opening the database on
	  the server, send a FAIL message over the connection, rather than
	  just shutting it.

Fri Feb 01 16:51:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc: Fix a database corruption bug: see
	  bugzilla entry #232.  Was caused by lazy tables not being created
	  at the right revision.
	* tests/api_wrdb.cc: Regression test for bug.

Fri Feb 01 15:10:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h,docs/replication_protocol.rst,
	  tests/api_replicate.cc: Add the UUID of the new database to the
	  DB_HEADER message, and move the code which compares UUIDs out of
	  flint_database.cc and into replication.cc.  Fix testcase which
	  missed incorrect comparison of UUIDs.  Store the UUID of the
	  live database which has been replicated in the config file - this
	  isn't an ideal place, but will do until the UUID is stored in the
	  iamflint file, and we can parse it from there.  Remove debug
	  printfs.

Fri Feb 01 15:09:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* bin/quartzdump.cc: Rename hex_encode() to hex_display_encode() to
	  avoid collision.  (The hex encoding produced by this doesn't
	  encode spaces, so isn't quite the same as the functions just
	  added to utils.cc).

Fri Feb 01 15:08:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.cc,common/utils.h: Add utility functions to
	  hex-encode and decode a string, so we can store UUIDs in the
	  config file in replicated DB directories.

Fri Feb 01 12:49:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager_multi.cc: Make the multi
	  backendmanager use relative paths in its stub databases.

Fri Feb 01 12:17:38 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/Makefile.mk: Add replicationprotocol.h to distribution.

Fri Feb 01 12:10:19 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/database.cc: Stub databases used to
	  assume that any relative paths were relative to the current
	  working directory.  They now assume that relative paths are
	  relative to the directory holding the stub database file.
	  Also, lines which begin with a '#' character are ignored, so we
	  can place comments in the stub database files.  Also, recognise a
	  new database type: a "stub directory", which is a directory
	  containing a stub database file named "XAPIANDB".
	* api/replication.cc: Replica databases are now created as
	  directories containing a "XAPIANDB" stub file, so all the
	  workings are internal.
	* common/Makefile.mk,common/fileutils.cc,common/fileutils.h: Add
	  new set of utilities to manipulate path names - extracting
	  directory names, and joining paths.
	* tests/api_replicate.cc: Enable test properly, now that
	  it passes.  Test needs to be expanded to check that the database
	  copy succeeded better.

Fri Feb 01 09:47:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc: Fix warning about unused
	  variable.

Fri Feb 01 03:49:56 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h,common/replicationprotocol.h: Move replication
	  protocol definition into a separate file.  Add (virtual) support
	  methods for applying changesets to Database::Internal.  Sort out
	  atomic swapping of old database for new after a database copy.

Fri Feb 01 03:49:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/quartztest.cc: Rename removedir to removedir_recursive() to
	  avoid conflict with my new function.

Fri Feb 01 03:09:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/replication_protocol.rst: Specify (though not in much
	  detail) what we mean by "packed" strings and integers.

Fri Feb 01 03:09:06 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/replication.h: Be more precise in documentation
	  comment.

Fri Feb 01 03:07:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Remove debug printfs()

Fri Feb 01 03:03:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.cc,common/utils.h: Add overloaded rmdir() which
	  works directly on C++ strings.  Add removedir() method which
	  removes a directory and its contents (as long as the directory
	  only contains files, not subdirectories).

Fri Feb 01 01:51:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/remoteconnection.h,net/remoteconnection.cc: Add
	  "sniff_next_message_type" method to RemoteConnection, and replace
	  the hardcoded "4096" size of the chunks used for the remote
	  connection confersation with a #define.  Fix file mode when
	  creating a file with receive_file(), and bugs with writing too
	  much data to the file.

Thu Jan 31 03:41:42 GMT 2008  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,bin/xapian-replicate-server.cc,
	  common/replicatetcpserver.h: Add xapian-replicate-server server
	  program.

Thu Jan 31 02:46:38 GMT 2008  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,bin/xapian-replicate.cc,common/replicatetcpclient.h,
	  net/replicatetcpclient.cc,net/replicatetcpserver.cc: Add
	  xapian-replicate client program.

Wed Jan 30 19:13:08 GMT 2008  Olly Betts <olly@survex.com>

	* include/xapian/replication.h: Correct name of parameter in doxygen
	  comment.

Wed Jan 30 15:58:44 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h: Hook up the apply_changeset function from the
	  API through to flint.  (The flint layer currently doesn't work,
	  though.)  Also, implement the get_uuid() function for flint, by
	  using the mtime of the iamflint file.
	* tests/api_replicate.cc: Finish implementation of the "replicate"
	  function, and add a test of a replication of a database using
	  this.  The return value test is commented out for now, because
	  the flint layer doesn't work, but this puts the machinery needed
	  to test this in place.

Wed Jan 30 15:10:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc: Implement sending of the whole
	  database copy.

Wed Jan 30 14:45:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* tests/,tests/harness/: Add new testcase file (api_replicate.cc)
	  to hold tests of the replication functionality.  Currently has
	  one partially written test.  Also, add new function to apitest.h:
	  get_named_writable_database_path(), which allows the path to a
	  writable database to be obtained; throws an exception for those
	  backend types for which that isn't meaningful.  Add a new
	  variable for use in the conditions for tests: "replicas", which
	  should be set to true for all backends which support replication.

Wed Jan 30 14:42:26 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Fix the calls to fcntl() in
	  send_message() and send_file() to use fdout instead of fdin.
	  This has probably been stopping timeouts working very well.

Tue Jan 29 15:05:09 GMT 2008  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,net/remoteconnection.cc: Add
	  receive_file() method.

Tue Jan 29 14:37:36 GMT 2008  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,net/remoteconnection.cc: Add the ability
	  to read a message in chunks.

Tue Jan 29 10:08:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/replication.h: Expand documentation comment.
	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h: Add a write_changesets_to_fd() function to
	  Database::Internal, with a default implementation to raise an
	  UnimplementedError.  Hook
	  DatabaseMaster::write_changesets_to_fd() up to this, and
	  implement it for flint databases (the code to send a copy of a
	  database still needs work).

Tue Jan 29 10:01:39 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/replication_protocol.rst: Document that a FAIL message ends
	  the conversation.

Tue Jan 29 09:59:01 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/replication_protocol.rst: Document the protocol used to
	  transfer the updates.

Tue Jan 29 09:57:14 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Fix typo.

Tue Jan 29 09:48:15 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: For win32, use msvc_posix_open() to open
	  the file descriptor, so other things can delete the file while
	  the sending is in progress.

Tue Jan 29 01:23:19 GMT 2008  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Add an assertion.

Tue Jan 29 01:14:07 GMT 2008  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,net/remoteconnection.cc: Add send_file()
	  method to RemoteConnection to allow the contents of a file to be
	  sent as a message.

Tue Jan 29 00:28:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,include/xapian/replication.h: Add methods to
	  allow parameters to be stored associated with a DatabaseReplica.

Tue Jan 29 00:16:42 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Change write_changesets_to_fd() to take the revision information
	  as a string - it now includes a UUID.  Add get_uuid() method to
	  FlintDatabase - currently always returns "FIXME", but will
	  eventually return an ID for the database.

Mon Jan 28 19:07:20 GMT 2008  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/replicatetcpclient.h,net/Makefile.mk,
	  net/replicatetcpclient.cc,net/replicatetcpserver.cc: Add
	  ReplicateTcpClient class implementing a replication client over
	  TCP/IP.

Mon Jan 28 17:13:09 GMT 2008  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/replicatetcpserver.h,net/Makefile.mk,
	  net/replicatetcpserver.cc: Add ReplicateTcpServer class implementing
	  a replication server over TCP/IP.

Mon Jan 28 17:01:02 GMT 2008  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,net/remoteconnection.cc: Minor tweaks
	  to allow unidirectional connections.

Mon Jan 28 16:26:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc: Fix overly hasty commit - add
	  get_description() method for internal class, and use that instead
	  of trying to access a private member.

Mon Jan 28 16:22:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,common/output.h,include/xapian/replication.h:
	  Add get_description() methods to DatabaseMaster and
	  DatabaseReplica, and add XAPIAN_OUTPUT_FUNCTION methods for them
	  so that they can be displayed in debugging methods.  Should fix
	  build with logging enabled.

Mon Jan 28 11:52:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,include/xapian/replication.h: Add
	  DatabaseReplica::close() method, to allow the write lock to be
	  released easily.

Mon Jan 28 11:21:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,include/xapian/replication.h: Change
	  DatabaseReplica into a PIMPL style class, now that it has more
	  than one member.  Add visibility annotations to DatabaseMaster
	  and DatabaseReplica.

Mon Jan 28 10:44:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,include/xapian/replication.h: Add code to swap
	  stub database files over atomically, and to track the current
	  real database path.

Mon Jan 28 04:52:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/replication.cc,backends/database.cc,
	  backends/flint/flint_changesetapplier.h,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  common/database.h: Implement opening of the database underlying
	  DatabaseReplica objects, and hook up the get_revision_info()
	  method for it.

Mon Jan 28 04:17:21 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.cc,common/utils.h: Add "dir_exists" function, to
	  check for presence of a directory at a given path.

Mon Jan 28 03:48:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc: Change a "+= 1" to ++ - this isn't
	  Python!

Mon Jan 28 03:08:45 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/Makefile.mk,api/replication.cc,include/Makefile.mk,
	  include/xapian/replication.h: Add interface to replication
	  functionality.  (Currently just unimplemented stubs.)

Mon Jan 28 02:01:02 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_btreebase.h: Add a missing std::

Mon Jan 28 01:59:55 GMT 2008  Olly Betts <olly@survex.com>

	* common/remotetcpserver.h: Fix typo in doxygen comment: `@port' ->
	  `@param port'.  Update comment - socket is no longer closed by
	  handle_one_connection().

Mon Jan 28 01:28:00 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/: Add support for recording the changes made to a
	  database in "changeset" files.  These are currently not produced
	  by default - for now, the "XAPIAN_MAX_CHANGESETS" environment
	  variable can be set to control production of them.  As part of
	  these changes, the FlintTable constructor now takes the
	  tablename, so that this can be stored in changesets produced from
	  the table.
	* bin/xapian-check.cc,bin/xapian-compact.cc,bin/xapian-inspect.cc:
	  Update to match changes in FlintTable constructor.
	* docs/Makefile.am,docs/replication.rst,docs/replication_protocol.rst:
	  Add basic documentation of the replication protocol (though this
	  isn't yet definitive, since the protocol isn't finished!)

Sun Jan 27 21:10:24 GMT 2008  Olly Betts <olly@survex.com>

	* net/remotetcpserver.cc,net/tcpserver.cc: The job of closing the
	  socket connected to the client more naturally belongs to the
	  framework TcpServer class.

Sun Jan 27 20:32:55 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Call flint_io_sync() in commit()
	  rather than flush_db(), as that gives more time for written blocks
	  to get written to disk before we block on waiting for them to be.
	  This should tend to speed up WritableDatabase::flush() in I/O bound
	  situations.

Sun Jan 27 19:35:08 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_spelling.h,backends/flint/flint_synonym.h:
	  Merge changes to the spelling and synonym tables just before
	  calling FlintTable::flush_db(), rather than just before calling
	  FlintTable::commit(), so that they don't get forgotten.

Sun Jan 27 14:29:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc,backends/flint/flint_table.cc,
	  backends/flint/flint_table.h: Separate step which flushes
	  modified blocks from cursors to the DB file from the rest of
	  commit.  This will allow me to insert the changeset writing code
	  between the two steps, so it can assume that the DB file is fully
	  up-to-date.  Also remove an out-of-date FIXME about trying to
	  avoid updating the value and position tables if they're not used:
	  these tables are now lazily created anyway.

Sun Jan 27 12:53:51 GMT 2008  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Change explicit references to xapian-tcpsrv.

Sun Jan 27 12:26:24 GMT 2008  Olly Betts <olly@survex.com>

	* common/tcpclient.h,common/tcpserver.h,net/: Make use of TCP_NODELAY
	  optional at the class level.  No user-visible changes.

Sat Jan 26 17:18:09 GMT 2008  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc,common/Makefile.mk,
	  common/remotetcpclient.h,common/tcpclient.h,net/Makefile.mk,
	  net/remotetcpclient.cc,net/tcpclient.cc: Split out the "open
	  a connection" part of TcpClient and rename the rest to
	  RemoteTcpClient.

Sat Jan 26 14:01:34 GMT 2008  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc,common/Makefile.mk,common/remotetcpserver.h,
	  common/tcpserver.h,net/Makefile.mk,net/remotetcpserver.cc,
	  net/tcpserver.cc: Split TcpServer into a generic TCP server
	  class (TcpServer) and a subclass of this which implements the
	  remote backend TCP server (RemoteTcpServer).

Sat Jan 26 11:06:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_btreebase.cc,backends/quartz/btree_util.h,
	  common/utils.h: Move fdcloser into utils.h, since it's generally
	  useful, and it's better not to have multiple copies of it
	  scattered through the code.

Fri Jan 25 15:06:30 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc,backends/quartz/btree.cc: Use
	  msvc_posix_unlink() on windows in sys_unlink_if_exists()
	  functions, so that they will work even if the file is still open.
	  This probably changes no behaviour, because
	  sys_unlink_if_exists() is probably never called in such a
	  situation, but this may not be true in future.

Thu Jan 24 13:31:20 GMT 2008  Olly Betts <olly@survex.com>

	* docs/overview.html: Remove commented-out comment about OP_XOR.

Thu Jan 24 13:30:04 GMT 2008  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Briefly mention how pure boolean retrieval is
	  supported.

Thu Jan 24 13:28:44 GMT 2008  Olly Betts <olly@survex.com>

	* HACKING: Move "debian/patch" update earlier in the checklist.

Thu Jan 24 13:26:45 GMT 2008  Olly Betts <olly@survex.com>

	* NEWS: Partly update from ChangeLog.

Thu Jan 17 22:32:08 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc,backends/flint/flint_lock.h,
	  bin/xapian-check.cc: Apply tweaked version of patch for OS/2 support
	  by Yuri Dario.
	* AUTHORS: Add Yuri Dario.
	* PLATFORMS: Mention OS/2.

Mon Jan 14 11:03:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc,backends/quartz/btree.cc: Fix more
	  assertions to avoid overflowing int.

Mon Jan 14 09:29:51 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_btreeutil.h: Fix assertions to not overflow
	  int.

Mon Jan 14 09:23:54 GMT 2008  Olly Betts <olly@survex.com>

	* backends/quartz/btree_util.h: Fix assertions to not overflow int.

Mon Jan 14 08:47:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Fix test for gcc being 4.0.x or 4.1.x, so we don't
	  use -Wstrict-overflow with them.

Sun Jan 13 23:28:04 GMT 2008  Olly Betts <olly@survex.com>

	* configure.ac: GCC warning flag overhaul.  Stop passing
	  "-Wno-multichar" since any multi-character character literal is
	  bound to be a typo (I believe we were only passing it after
	  misinterpreting its sense!)  Pass "-Wformat-security",
	  "-Wconversion", and "-pedantic" for all GCC versions.  Add
	  "-Winit-self" and "-Wstrict-overflow=5" for GCC >= 4.2.  The
	  latter may be too aggressive, but it's hard to know without
	  trying it more widely.

Sun Jan 13 00:25:25 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_check.h,backends/flint/flint_table.h,
	  backends/quartz/btree.h,net/tcpserver.cc,tests/harness/testsuite.cc:
	  Add XAPIAN_NORETURN() annotations to functions and non-virtual
	  methods which don't return.
	* net/remoteserver.cc: Assign bool variable using a comparison rather
	  than subtraction, so the intent is clearer.

Sun Jan 13 00:23:41 GMT 2008  Olly Betts <olly@survex.com>

	* backends/flint/flint_check.cc: Tweak a comparison so all the
	  constants are on the same side (micro-optimisation).
	* backends/quartz/btreecheck.cc: Equivalent change for quartz.

Sun Jan 13 00:20:08 GMT 2008  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add a couple of testcases I wrote for a
	  reported problem which turned out to work correctly already.  Still,
	  they add to our test coverage.

Thu Jan 10 02:04:55 GMT 2008  Olly Betts <olly@survex.com>

	* tests/runtest.in: Cope with "@EXEEXT" extension on test programs.

Wed Jan 09 21:57:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omquery.cc,api/omqueryinternal.cc,common/remoteprotocol.h,
	  include/xapian/query.h,matcher/queryoptimiser.cc,tests/api_anydb.cc:
	  Add OP_VALUE_LE operator, for symmetry with OP_VALUE_GE.
	  Currently implemented internally using a ValueRangePostList with
	  an empty string as the start of the range.

Wed Jan 09 19:36:37 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h: Add
	  new query operator OP_VALUE_GE, for performing "return documents
	  with a value greater than this" searches.  Also add a new
	  constructor to go with this which takes a value number and a
	  single string argument.
	* matcher/: Add ValueGePostList class, as a subclass of
	  ValueRangePostList.  Change internal members of
	  ValueRangePostList to be protected instead of private.  Add
	  support for making ValueGePostLists from OP_VALUE_GE queries.
	* tests/api_anydb.cc: Add valuege1 testcase of OP_VALUE_GE queries.
	* common/remoteprotocol.h: Bump minor protocol number, due to
	  additional operator being possible in serialised queries.

Wed Jan 09 15:18:16 GMT 2008  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from Debian buildd logs.

Wed Jan 09 13:53:34 GMT 2008  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager_remotetcp.cc: Fix XAPIAN_NORETURN() to
	  wrap a declaration, not the definition, to fix compile failure on
	  mingw "make check".  Correct file documentation comment to refer
	  to "remotetcp" not "remoteprog".

Mon Jan 07 01:28:14 GMT 2008  Olly Betts <olly@survex.com>

	* PLATFORMS: Remove reports for 0.8.x as they're too old to be
	  interesting.  Separate out 0.9.x reports.

Mon Jan 07 00:23:10 GMT 2008  Olly Betts <olly@survex.com>

	* PLATFORMS: Add Solaris 9 and 10 success reports from James Aylett.

Sat Jan 05 19:13:12 GMT 2008  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: In generate_call(), if the failure
	  case would just be "if (ret == 0) return 0;" then combine it with
	  the test for the called method returning signal `f'.

Sat Jan 05 18:28:31 GMT 2008  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Generate more readable code for the
	  inlined single ASCII character literal string check.

Sat Jan 05 18:27:07 GMT 2008  Olly Betts <olly@survex.com>

	* languages/steminternal.cc: Tweak skip_utf8() to save ~0.5% on
	  stemtest.

Sat Jan 05 02:20:57 GMT 2008  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Optimise a single ASCII character
	  literalstring check by inlining the check.  This makes stemtest run
	  about 2% faster.

Fri Dec 21 21:57:11 GMT 2007  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Fix example of using multiple VRPs to come out
	  as a "program listing".

Fri Dec 21 15:31:35 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stringutils.h,common/utils.h: Move declaration of
	  within_DBL_EPSILON back into utils.h to fix builds with
	  --enable-assertions, and since it's not string-related.

Fri Dec 21 02:12:49 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS: Note that one change was "(bug#45)".  Bump release date.

Thu Dec 20 22:00:41 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS: Update again for 1.0.5.

Thu Dec 20 17:50:26 GMT 2007  Olly Betts <olly@survex.com>

	* common/stringutils.cc: Add new file I failed to commit.

Thu Dec 20 17:17:28 GMT 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add feature tests to ensure that ':' is
	  inserted between prefix and term when it should be.

Thu Dec 20 13:58:18 GMT 2007  Olly Betts <olly@survex.com>

	* common/,queryparser/queryparser.lemony,
	  queryparser/termgenerator_internal.cc,tests/harness/index_utils.cc,
	  tests/harness/unixcmds.cc: Move C_isupper(), C_toupper(), etc from
	  utils.cc/utils.h to stringutils.cc/stringutils.h, since they are
	  string-related.

Thu Dec 20 03:00:08 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: Remove details of issues with autoconf < 2.57 and
	  automake < 1.5 as these versions are antiques compared to our
	  current requirements of autoconf >= 2.59 and automake >= 1.8.3.

Wed Dec 19 03:41:42 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS,NEWS,configure.ac: Update for 1.0.5.

Wed Dec 19 03:36:30 GMT 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Calling WritableDatabase methods when we don't
	  have exactly one subdatabase now throws InvalidOperationError.
	* tests/termgentest.cc: Add regression test to check that we now get
	  InvalidOperationError (previously this case gave a segmentation
	  fault).

Wed Dec 19 01:39:01 GMT 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from tinderbox.

Tue Dec 18 23:17:37 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc,backends/flint/flint_lock.h: Move lots
	  of headers included by flint_lock.h to flint_lock.cc since
	  flint_lock.h doesn't need them.  Add a "FIXME:1.1:" comment about
	  an odd special-case for newlib.

Thu Dec 13 17:34:19 GMT 2007  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Mark undocumented OM_STEMTEST_* environmental
	  variables for removal in 1.1.

Thu Dec 13 01:27:15 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: Need to check RPM packaging with Tim Brody too.

Thu Dec 13 01:26:16 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Note that we check for <streambuf> because GCC 2.95
	  only has <streambuf.h>.

Thu Dec 13 01:23:27 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Add Ralf Wildenhues for suggesting a way to factor out
	  the boilerplate in multitarget rules.

Wed Dec 12 02:02:51 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS: Update for ChangeLog in preparation for 1.0.5.

Wed Dec 12 01:02:29 GMT 2007  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Mark as up to date for Xapian 1.0.5.  Minor
	  wording improvements.

Sun Dec 09 01:09:19 GMT 2007  Olly Betts <olly@survex.com>

	* tests/collate-apitest: Check for sources in the build directory
	  first, and only if not there prepend "$srcdir/".  The recently
	  added api_generated.cc will be in the build directory when using an
	  SVN checkout.

Fri Dec 07 12:37:08 GMT 2007  Olly Betts <olly@survex.com>

	* docs/sorting.rst,docs/valueranges.rst: State explicitly that
	  Xapian::sortable_serialise() is used to encode values at index time
	  and give an example of how it is called.

Thu Dec 06 15:55:31 GMT 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/collate-apitest,
	  tests/generate-api_generated: Add automatically generated tests to
	  ensure that API classes generally have copy ctors and assignment
	  operators, and also generally have a default ctor.

Thu Dec 06 15:32:23 GMT 2007  Olly Betts <olly@survex.com>

	* docs/sorting.rst: Fill in the remaining items in the outline.

Thu Dec 06 12:50:46 GMT 2007  Olly Betts <olly@survex.com>

	* tests/valgrind.supp: Another variant of the zlib suppression.

Wed Dec 05 18:31:12 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,docs/Makefile.am,tests/Makefile.am: Add dir_contents,
	  docs/dir_contents and tests/dir_contents to distribution
	  tarballs.

Wed Dec 05 18:28:12 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Really fix handling of version.h.

Wed Dec 05 18:20:54 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Handle make pattern substitutions.

Wed Dec 05 18:11:31 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Fix special-case handling of include/xapian/version.h.

Wed Dec 05 18:01:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multiandpostlist.cc,matcher/multiandpostlist.h: Implement
	  get_wdf() method for MultiAndPostList (by adding together the
	  wdfs of the subpostlists).  Not currently used (but will be by
	  SynonymPostList).

Wed Dec 05 17:43:24 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Special-case version.h.

Wed Dec 05 17:31:47 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Fix errors in previous check-in.

Wed Dec 05 17:18:26 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Parse BUILT_SOURCES to determine which files are
	  generated and so need looking for in the build directory - this
	  won't need updating when new files are generated, or existing
	  ones stop being.

Wed Dec 05 16:55:26 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* preautoreconf: Fix "make doxygen_docs" with VPATH build: look for
	  generated code files in build dir, and make rule which re-runs
	  preautoreconf change to srcdir first.

Wed Dec 05 14:59:52 GMT 2007  Olly Betts <olly@survex.com>

	* docs/sorting.rst: Document set_sort_by_value() and friends.

Wed Dec 05 11:31:27 GMT 2007  Olly Betts <olly@survex.com>

	* docs/sorting.rst: More work.

Tue Dec 04 14:42:57 GMT 2007  Olly Betts <olly@survex.com>

	* docs/bm25.html: Improve wording.

Mon Dec 03 17:11:01 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/index.html,docs/sorting.rst: Add the start of
	  a topic document on sorting.

Mon Dec 03 17:10:04 GMT 2007  Olly Betts <olly@survex.com>

	* common/stats.h: Fix comment typos.

Sun Dec 02 14:36:47 GMT 2007  Olly Betts <olly@survex.com>

	* docs/synonyms.rst: Minor wording clarification.

Sun Dec 02 14:23:37 GMT 2007  Olly Betts <olly@survex.com>

	* tests/collate-apitest: Fix reversed conditional for deciding
	  which generated headers to update.

Sun Dec 02 03:47:44 GMT 2007  Olly Betts <olly@survex.com>

	* tests/apitest.cc: Include api_all.h instead of the individual
	  generated headers.

Sun Dec 02 03:44:56 GMT 2007  Olly Betts <olly@survex.com>

	* tests/collate-apitest: Add licence and (C).  Only update .h files
	  which may have changed.  Generate api_all.h which just includes
	  the generated headers corresponding to all the sources processed.
	  Strip spaces from conditions.
	* tests/Makefile.am: Update for api_all.h.

Sun Dec 02 03:21:59 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/weight.cc: Wrap comment.

Sun Dec 02 03:21:25 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Thank Petr Ročkai.

Sun Dec 02 02:40:58 GMT 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Oops, this file also part of previous change.

Sun Dec 02 02:14:27 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Implement copy ctor and assignment
	  operator for Xapian::Enquire (bug#219).
	* configure.ac: Note what this means in terms of library versioning.

Sat Dec 01 02:54:51 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/: Stop describing get_description() as an
	  "Introspection method", as this doesn't help to explain what it
	  does, and get_description() doesn't actually fall under any of the
	  formal definitions of "introspection" I can find.

Sat Dec 01 02:45:16 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.h: Overlooked (C) update.

Sat Dec 01 02:34:59 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,common/,configure.ac,tests/api_anydb.cc,
	  tests/api_db.cc,tests/btreetest.cc,tests/harness/testsuite.cc,
	  tests/harness/testsuite.h,tests/harness/testutils.cc,
	  tests/internaltest.cc: Raise the minimum supported GCC version
	  to 2.95.3 and strip out om_ostringstream which is no longer
	  required.

Sat Dec 01 01:10:04 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_sorting.cc,tests/api_wrdb.cc: Move sortfunctor2 from
	  api_wrdb.cc to api_sorting.cc.

Sat Dec 01 00:43:31 GMT 2007  Olly Betts <olly@survex.com>

	* tests/valgrind.supp: Add version of the valgrind zlib suppression
	  for 64 bit hosts.

Fri Nov 30 18:06:49 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.cc: Workaround MSVC which doesn't clear
	  the fail bit when a stream is reopened.

Fri Nov 30 00:44:21 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Make delete_ptr<> a functor rather than
	  a function.  This fixes the build with SGI's compiler, and
	  apparently a functor allows more compilers to inline the call.

Thu Nov 29 19:24:22 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix previous change to work.

Thu Nov 29 18:53:09 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Assume we have <sstream> and hardwire HAVE_SSTREAM to
	  be 1.  If this assumption proves correct for all platforms we care
	  about, we can rip out the old om_ostringstream code.

Thu Nov 29 17:51:11 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.cc: Work around MSVC.

Wed Nov 28 03:17:06 GMT 2007  Olly Betts <olly@survex.com>

	* api/sorter.cc: Fix reverse sorting of value strings with different
	  lengths.
	* tests/api_wrdb.cc: Add test sortfunctor2 to check this actually
	  works.

Wed Nov 28 02:27:37 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/:
	  Add get_named_writable_database() and use it to fix spell3 on
	  Microsoft Windows.

Tue Nov 27 16:56:12 GMT 2007  Olly Betts <olly@survex.com>

	* xapian-config.in: Factor out the code to check if we need explicit
	  dependencies into a function.  On platforms we know don't need
	  explicit dependencies, --ltlibs now gives the same output as --libs.

Tue Nov 27 00:24:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Remove api_regressions.cc from list - didn't
	  mean to commit that (yet).

Tue Nov 27 00:17:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Use $(collated_apitest_sources) in list of
	  apitest_SOURCES; now a new test file can be added just by adding
	  it to this variable.

Mon Nov 26 23:04:00 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Add generated apitest .h files to targets of
	  rule which calls collate-apitest, since they're also generated by
	  it.  Change the rule to use a .stamp and a .lock file as
	  described in HACKING, to fix parallel builds.

Mon Nov 26 18:48:20 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am: Distribute preautoreconf.

Mon Nov 26 17:24:15 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING,configure.ac,docs/Makefile.am: Use pngcrush to reduce the
	  size of PNG files in the doxygen-generated HTML docs.

Mon Nov 26 15:39:58 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Don't package or install various intermediate
	  files which doxygen generates.

Mon Nov 26 13:14:19 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_db.cc: Ensure that the database needed for stubdb1 is
	  present, by creating it first (with get_database()).  This
	  requires that the database type is flint, but the test doesn't
	  depend on any particular database type anyway, so this doesn't
	  lose us anything.

Mon Nov 26 13:08:08 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/collate-apitest: Display the name of the backend which a
	  set of tests is for.

Mon Nov 26 09:45:39 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am,tests/collate-apitest: Fix with VPATH builds -
	  pass srcdir as the first argument to collate-apitest, so it can
	  find the sources.  Also, use srcdir to form the path to
	  collate-apitest when calling it from the make rule.

Mon Nov 26 02:22:08 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/apitest.cc,tests/apitest.h: Convert the
	  remaining tests to be collated.

Mon Nov 26 02:08:18 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/apitest.cc,tests/apitest.h: Collate the
	  localdb and remotedb tests.

Mon Nov 26 01:40:59 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the specchar, doclendb, collfreq, allterms, and
	  multivalue tests.

Mon Nov 26 01:21:35 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the anydb tests.  Remove the generated files upon
	  "make clean" in maintainer-mode.

Mon Nov 26 00:34:03 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the wrdb tests.

Mon Nov 26 00:18:18 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_posdb.cc,tests/apitest.cc: Add "writable" flag and use it
	  for poslist2 and poslist3.

Mon Nov 26 00:13:43 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the posdb tests.

Mon Nov 26 00:03:29 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the nodb tests.

Sun Nov 25 23:55:02 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the transaction tests.

Sun Nov 25 23:49:26 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Collate the unicode tests.

Sun Nov 25 23:35:40 GMT 2007  Olly Betts <olly@survex.com>

	* tests/: Make a start on automatically collating test cases.

Sun Nov 25 22:41:52 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/weightinternal.cc: Initialise all members of
	  Xapian::Weight::Internal, and use initialisers rather than
	  assignment to do so.  Fixes an error reported by valgrind.

Sun Nov 25 16:48:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/weight.cc: Add another note of a FIXME needed for 1.1

Sun Nov 25 16:40:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/bm25weight.cc,matcher/tradweight.cc: Add some missing
	  "using namespace std;" lines which are needed due to earlier
	  changes in header file inclusions.  Also, remove some unnecessary
	  std:: prefixes.

Sun Nov 25 16:35:30 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,include/xapian/enquire.h,matcher/localmatch.cc,
	  matcher/weight.cc: Undo ABI change introduced in previous commit
	  with a nasty workaround; we can't initialise Weight::internal
	  reliably, because applications complied with earlier versions of
	  the library may have inlined the constructor of the Weight class.
	  Therefore, we can't delete Weight::internal in the destructor,
	  because we don't know if it was initialised.  Instead, we
	  add factory methods for making Weight::Internal objects to Stats,
	  register all the Weight::Internal objects made by these factory
	  methods in a list is the Stats object, and delete them when Stats
	  is deleted (which conveniently happens after the match has
	  finished).  Mark all this with FIXME:1.1: so that we can easily
	  convert it to nicer code once we branch for 1.1.

Sun Nov 25 15:14:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/Makefile.mk,api/weightinternal.cc,common/,
	  include/xapian/enquire.h,matcher/: Split Stats and
	  Xapian::Weight::Internal into different classes: Stats remains
	  with the same members (but becomes a concrete class, rather than
	  a typedef of another class), and Xapian::Weight::Internal becomes
	  a simple container for exactly those statistics which are
	  relevant for a weight object (ie, it holds just one termfreq and
	  reltermfreq, rather than a map of all of them).  This is
	  dynamically allocated, so Xapian::Weight now owns the object
	  pointed to by its "internal" member, and deletes it in its
	  destructor.  Add a new header file "weightinternal.h" so that the
	  full "stats.h" stuff doesn't need to be included for definitions
	  of weighting schemes.  Replace #include "stats.h" lines with
	  forward declarations of Stats, where possible.

Sun Nov 25 15:09:29 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc: Add missing include of stats.h
	* matcher/queryoptimiser.cc,net/tcpserver.cc: Remove unnecessary
	  include of stats.h
	* net/remoteserver.cc: Include missing includes of omassert.h and
	  stats.h, and change an Assert to AssertEq.
	* matcher/multimatch.cc: Output the contents of the stats object in
	  debugging code.

Sun Nov 25 04:22:05 GMT 2007  Olly Betts <olly@survex.com>

	* common/multimatch.h: No longer need "autoptr.h" here.

Sun Nov 25 04:07:04 GMT 2007  Olly Betts <olly@survex.com>

	* common/multimatch.h: Fix typo in documentation comment.

Sun Nov 25 03:58:21 GMT 2007  Olly Betts <olly@survex.com>

	* common/remoteserver.h,matcher/localmatch.cc,matcher/multimatch.cc:
	  Remove lingering traces of StatsGatherer.

Sat Nov 24 20:44:03 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,matcher/Makefile.mk,matcher/stats.cc: Add
	  get_description() method for Xapian::Weight::Internal, and add
	  stats.cc back to hold it's implementation.
	* common/output.h: Add an output function for Stats (aka
	  Xapian::Weight::Internal) to fix the build when debug logging is
	  enabled.

Sat Nov 24 01:21:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc,common/,matcher/,net/remoteserver.cc: Remove
	  StatsGatherer and its subclasses completely.  Instead of a
	  StatsGatherer subclass, MultiMatch is now simply passed a Stats
	  object, and passes this to the prepare_match() methods of the sub
	  matchers to be populated with statistics.  OmEnquire then passes
	  the same Stats object to MultiMatch::get_mset(), whereas a remote
	  submatch sends the Stats object to the parent match, to be
	  combined with the global statistics, and then passes the returned
	  global statistics to MultiMatch::get_mset().  Remove stats.cc
	  since it only contained implementations of StatsGatherer methods,
	  and networkstats.h which only contained the definition of the
	  NetworkStatsGatherer.
	* matcher/rset.cc: Add the rset size to the database - we now
	  compute the global rset size the same way as we compute the
	  global collection size: by adding the sizes in the sub
	  collections together.  We have the total rset size easily
	  available in the code, but building the total rset size up from
	  the sub-databases makes the code simpler.

Sat Nov 24 01:21:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andnotpostlist.cc: Add a missing #include "omdebug.h".

Fri Nov 23 23:13:12 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,matcher/: Remove the StatsSource class entirely.
	  LocalSubMatch and RemoteSubMatch now contribute their stats
	  directly to the gatherer in the prepare_match() method, so the
	  gatherer doesn't need to worry about keeping track of the sources
	  of statistics.

Fri Nov 23 21:46:32 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/submatch.h,matcher/: Change SubMatch::start_match() (and
	  all start_match() methods in subclasses) to take the statistics
	  for the whole collection as an additional parameter.  MultiMatch
	  now gets the statistics from the gatherer and passes it to
	  start_match().

Fri Nov 23 17:38:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h: Add set_termfreq() and set_reltermfreq()
	  convenience methods to Stats; and remote the take_my_stats(),
	  my_termfreq_is() and my_reltermfreq_is() methods from
	  StatsSource.
	* common/rset.h,matcher/rset.cc: Rename give_stats_to_statssource()
	  to contribute_stats(), and give it take a Stats object instead of
	  a StatsSource object.  Can't forward declare Stats, so we need to
	  #include "stats.h" in rset.h now, unfortunately.
	* matcher/localmatch.cc,matcher/localmatch.h: Move register_term()
	  implementation inline into prepare_match().  Build up the
	  statistics in a local Stats object, rather than passing them
	  piecemeal to the StatsSource object, and then use
	  StatsSource::get_my_stats() to set them, just like
	  RemoteSubMatcher.

Fri Nov 23 14:35:49 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/localmatch.cc,matcher/localmatch.h: Get the total
	  statistics from the gatherer directly and store them in a new
	  member of LocalSubMatch, rather than getting them via the
	  StatsSource when we need them.  This bypasses the
	  get_total_stats() and set_total_stats() methods of StatsSource.
	* common/stats.h,matcher/stats.cc: Remove the (newly) unused
	  methods StatsSource::set_total_stats() and
	  StatsSource::get_total_stats().

Fri Nov 23 11:40:54 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/,include/xapian/enquire.h,matcher/: Rename
	  Xapian::Weight::Internal to StatsSource (which I hope to be able
	  to remove shortly), and rename the Stats class to
	  Xapian::Weight::Internal.  Requires minimal plumbing changes -
	  TradWeight and BM25Weight classes now query the internals
	  directly for the statistics, LocalSubMatch now gets the
	  statistics from StatsSource and passes them to wt_factory.
	  common/remote-database.h and common/serialise.h now need to
	  #include stats.h unfortunately, because a forward declaration
	  can't be used for Xapian::Weight::Internal (unless I'm missing
	  something).

Fri Nov 23 10:15:43 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,matcher/bm25weight.cc,matcher/localmatch.cc,
	  matcher/tradweight.cc: Remove the Xapian::Weight::Internal
	  get_total_* methods: instead, add a get_total_stats() method
	  which returns a Stats object representing the whole collection.
	  Add get_termfreq() and get_reltermfreq() convenience methods to
	  Stats for looking up individual term's statistics.  Also, change
	  protected members of Xapian::Weight::Internal to private members,
	  since we're no longer subclassed.  Also, in tradweight.cc, avoid
	  division by zero in the (rare) situation of the average length
	  being zero; in the same way as this is handled by bm25weight.cc.

Thu Nov 22 12:58:02 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,matcher/localmatch.cc,matcher/localmatch.h,
	  matcher/stats.cc: Replay Xapian::Weight::Internal's
	  perform_request() method with set_total_stats().  The replacement
	  takes the stats as a parameter, rather than magically getting
	  them from the gatherer.  The LocalSubMatch now needs to call the
	  gatherer to get the stats, and then pass it to set_total_stats(),
	  so needs to keep a reference to the gatherer.  However, we are
	  now one step closer to decoupling the gatherer from the stats.

Thu Nov 22 11:47:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/stats.h,matcher/localmatch.cc: Remove automatic
	  just-in-time calls to statssource.perform_request() - instead,
	  make it public, and call it explicitly before the postlist tree
	  is constructed.  Also, make Xapian::Weight::Internal's destructor
	  non-virtual, since it's no longer subclassed anywhere.

Thu Nov 22 11:02:39 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/networkstats.h,matcher/stats.cc: Remove
	  fetch_local_stats() method, and use of have_gathered flag for
	  caching result of gathering the stats - instead, simply Assert
	  that have_gathered is false before gathering; we currently only
	  call get_local_stats() once for a given gatherer.

Thu Nov 22 10:04:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/rset.h: Change multiline "///" comments to use "/**",
	  style.

Thu Nov 22 09:27:42 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/localmatch.cc,matcher/queryoptimiser.h: Update a couple
	  of comments.

Thu Nov 22 08:29:19 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/networkstats.h,common/stats.h,matcher/: Remove the
	  LocalStatsSource and NetworkStatsSource classes - just use the
	  base class (Xapian::Weight::Internal) instead.  LocalStatsSource
	  had no extra members whatsoever, whereas NetworkStatsSource had
	  various members which weren't used, and a single method
	  "take_remote_stats" which simply sets the statistics held - I've
	  renamed this method "set_my_stats" and added it to the base
	  class.

Thu Nov 22 00:05:06 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/networkstats.h,common/stats.h,matcher/stats.cc: Replace
	  StatsGatherer::contrib_my_stats() and
	  StatsSource::contrib_stats() methods; instead add a
	  get_my_stats() method to StatsSource and simply call this.

Wed Nov 21 16:37:10 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/networkstats.h,common/remoteserver.h,matcher/stats.cc,
	  net/remoteserver.cc: Rework NetworkStatsGatherer - it no longer
	  needs to have the RemoteServer passed into it; instead, the
	  RemoteServer calls NetworkStatsGatherer::set_global_stats() with
	  the global statistics as soon as it gets them.  This new method
	  replaces fetch_global_stats().  As a result, the RemoteServer no
	  longer needs to remember the global_stats received from the
	  network - it just passes them straight to the gatherer - so
	  remove the global_stats and get_global_stats() methods from
	  RemoteServer.

Wed Nov 21 15:42:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/rset.h,matcher/rset.cc: Document the member functions of
	  RSetI, and remove the totally unused "get_reltermfreq()" member.
	  Also remove an ancient, commented out, implementation of an
	  "add_document()" member, and add copyright lines.

Wed Nov 21 15:26:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/rset.h,matcher/localmatch.cc,matcher/rset.cc: Make
	  RSet::calculate_stats() private, and call it only from
	  RSet::give_stats_to_statssource().  Was previously called
	  directly from localmatch.cc, but this way it's clear that it's
	  only called once.

Wed Nov 21 14:30:17 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/remotesubmatch.h: Move implementation of constructor into
	  .cc file (accidentally missed this file from the last-but-one
	  commit, which did the necessary changes to the .cc file).

Wed Nov 21 14:28:48 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/rset.cc: Improve debugging messages.

Wed Nov 21 14:26:44 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/remotesubmatch.cc: Add some debugging, and reorder the
	  header includes.

Wed Nov 21 13:21:35 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Add DEBUGCALL_STATIC macros to the new
	  functions, and tidy some code in the constructor slightly.

Wed Nov 21 10:00:48 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Split the loop which calls prepare_match()
	  out of the constructor into a separate static function.

Tue Nov 20 18:23:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Refactor code which splits the RSet into
	  sub RSets (one for each sub database) into a separate function.
	  No functional change.

Tue Nov 20 17:56:47 GMT 2007  Olly Betts <olly@survex.com>

	* common/remoteserver.h: Remove unused '#include "omassert.h"'.

Tue Nov 20 12:53:06 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Thank Marcus Rueckert for GCC 4.3 fixes.

Tue Nov 20 10:22:28 GMT 2007  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Recent GCC 4.3 snapshots thinks cf and tf
	  might be used uninitialised.  They won't be, but we only need to
	  initialise them once per run to silence the warning, so just do
	  that.

Tue Nov 20 10:20:13 GMT 2007  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Fix equality testing of C strings to use
	  strcmp() rather than '=='.  In practice, using '==' often gives
	  the desired effect due to pooling of constant strings, but this may
	  have resulted in bugs on some platforms.

Tue Nov 20 01:47:16 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager_remotetcp.cc: Add missing "#include
	  <cstring>".

Tue Nov 20 01:26:40 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/unixcmds.cc: Add #include of cstring, to get
	  strchr, needed for gcc 4.3 snapshot.

Tue Nov 20 01:25:22 GMT 2007  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/termlist.cc,backends/alltermslist.cc,
	  backends/flint/flint_spelling.cc,backends/flint/flint_spelling.h,
	  common/alltermslist.h,common/termlist.h,common/vectortermlist.h:
	  Provide a default implementation of accumulate_stats() in the
	  virtual base class TermIterator::Internal instead of repeating it
	  in each subclass which doesn't get used for generating an ESet, and
	  don't call abort() in the default implementation - an Assert(false)
	  is sufficient, and more consistent with how we handle other similar
	  cases.

Tue Nov 20 01:24:17 GMT 2007  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc: Add missing '#include <cstdlib>'.

Mon Nov 19 23:54:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_postlist.cc,backends/quartz/quartz_postlist.cc:
	  Add NORETURN macro to report_read_error(); fixes warnings from
	  GCC 4.3 about possibly uninitialised values.  Reorder header
	  includes to follow proposed policy.
	* backends/flint/flint_postlist.h: Add include of omdebug.h which
	  previously needed to be done before including this.  Tidy up
	  order of includes.

Mon Nov 12 14:06:38 GMT 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/omenquire.cc,api/sorter.cc,common/multimatch.h,
	  common/omenquireinternal.h,include/Makefile.mk,include/xapian.h,
	  include/xapian/enquire.h,include/xapian/sorter.h,
	  matcher/multimatch.cc,net/remoteserver.cc,tests/: Add new functor
	  class to allow more sophisticated sorting options.

Mon Nov 12 14:03:06 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: Improved wording.

Sun Nov 11 07:51:57 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Hide the v102 namespace from Doxygen
	  as it isn't user visible.

Sat Nov 10 21:53:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: Remove .multi in clean-local rule; should fix
	  distcheck.

Sat Nov 10 15:34:25 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testutils.cc,tests/harness/testutils.h:
	  mset_expect_order_begins() is never used, so remove it.
	* tests/harness/testutils.cc: Don't need <iostream>, only <fstream>.

Sat Nov 10 11:09:22 GMT 2007  Olly Betts <olly@survex.com>

	* docs/index.html: Add a list of documents on particular features and
	  include links to previously unlinked-to documents.  Weed down the
	  top navigation bar which had grown to unwieldy length.

Sat Nov 10 10:17:42 GMT 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Update for Debian buildds.

Sat Nov 10 02:13:07 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If "first" is non-zero, then use nth_element
	  with vector::reverse_iterator to partition items such that the
	  unwanted ones are at the end not the start.  This means the call
	  to vector::erase() no longer needs to copy all the wanted items.

Fri Nov 09 19:01:38 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: collapsekey3 is too strict - even if the value
	  never occurs, lower_bound may drop as we may reject potential
	  matches before applying the collapse test.

Fri Nov 09 16:36:39 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/termiterator.h: Clarify get_wdf() versus
	  get_termfreq() in documentation comments.

Fri Nov 09 00:07:02 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Fix comment typo.

Fri Nov 09 00:04:45 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,tests/Makefile.am: New make target
	  'check-multi'.

Thu Nov 08 23:54:47 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Re-enable test case allpostlist1 for multi
	  since it works fine (presumably thanks to the multi_postlist.cc
	  fix).

Thu Nov 08 23:44:29 GMT 2007  Olly Betts <olly@survex.com>

	* tests/,tests/harness/: Add new "multi" test backend which indexes
	  the specified text file(s) to two databases which will look just
	  like the equivalent single database when searched together.  Since
	  writing isn't supported, a number of tests which require this are
	  disabled, as are any tests which explicitly use a multi-database
	  since a multi-of-multis isn't equivalent to a multi of equivalent
	  individual databases.  A handful of testcases are also currently
	  disabled because they fail for reasons not yet fully explored.
	  Existing tests run with the new backend provide regression tests
	  for the two recent fixes.

Thu Nov 08 23:42:33 GMT 2007  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc: Fix PostingIterator::skip_to()
	  when running over multiple databases.  Regression test to follow.

Thu Nov 08 23:37:51 GMT 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Mention the "auto" backend.

Thu Nov 08 23:28:30 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix bug in handling a pure boolen match over
	  more than one database under set_docid_order(ASCENDING) - we can't
	  shortcut in this case because MergePostList generally doesn't return
	  docids in order.  Regression test to follow.

Thu Nov 08 21:07:09 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Fix comment typo.

Thu Nov 08 07:40:48 GMT 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Don't use MultiPostList when there's only one
	  subdatabase.

Thu Nov 08 05:40:17 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Run sortrel1 for inmemory too.

Thu Nov 08 03:43:50 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,tests/harness/index_utils.cc,
	  tests/harness/index_utils.h: New class FileIndexer which acts like
	  an iterator returning a Xapian::Document object for each paragraph
	  in some specified files.

Wed Nov 07 16:30:49 GMT 2007  Olly Betts <olly@survex.com>

	* common/,docs/remote_protocol.html,matcher/,net/remoteserver.cc,
	  net/serialise.cc: If we're doing a match with only one database
	  which is remote then just return the unserialised MSet from the
	  remote match.  This requires that we include
	  internal->percent_factor in the MSet serialisation, which requires
	  a minor remote protocol version bump.

Wed Nov 07 09:47:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: Fix logging build (a change to the logging
	  code introduced in r9644 didn't compile)

Tue Nov 06 17:10:51 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Better documentation comment for
	  Document::termlist_count().

Tue Nov 06 12:32:16 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,docs/Makefile.am,languages/Makefile.mk: No need to set
	  SUFFIXES manually for suffixes used in implicit rules.

Tue Nov 06 10:41:14 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If we're collapsing on a value, keep track of
	  the number of empty collapse values seen, since that allows us to
	  give a better lower bound on the number of matches.
	* tests/api_db.cc: This change breaks an (incorrect) assumption in
	  collapsekey3, so change that test case to be a regression test for
	  the improved estimate.  Add a new test as (the previously missing)
	  collapsekey2, but disable it for now as we don't seem to have a
	  suitable existing database.

Tue Nov 06 07:58:34 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/tradweight.cc: Make sure lenpart has been calculated in
	  TradWeight::get_sumpart_needs_doclength() (this doesn't appear to
	  actually be a problem in current use, but it might become an issue
	  if the code which uses TradWeight changes.

Tue Nov 06 07:49:18 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Add simple feature test for TradWeight being
	  used to run a query.

Tue Nov 06 07:26:28 GMT 2007  Olly Betts <olly@survex.com>

	* common/stats.h,matcher/bm25weight.cc,tests/api_anydb.cc: Fix bug in
	  BM25Weight - in the case where k2 is non-zero, a non-initialised
	  value influenced the weight calculations.  By default k2 is zero, so
	  this bug probably won't affect most users.

Tue Nov 06 07:22:27 GMT 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
	  net/remoteserver.cc: Modify MultiMatch::MultiMatch() to take a const
	  pointer to Xapian::RSet rather than a const reference.  This makes
	  the code simpler for the case where we don't have an RSet.

Tue Nov 06 05:47:38 GMT 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Use ".empty()" not ".size() == 0".

Mon Nov 05 21:05:45 GMT 2007  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Hook LT_INIT as well as AC_PROG_LIBTOOL and
	  AM_PROG_LIBTOOL.

Mon Nov 05 11:17:23 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/termgenerator.rst: Change a couple of instances of "terms"
	  to "words" for clarity; the item from the input text is a word,
	  and the result of processing is a term.

Mon Nov 05 09:46:53 GMT 2007  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Note that this document is up-to-date for
	  1.0.4.  Improve the formatting a bit and fix a the odd typo.

Mon Nov 05 06:24:01 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Fix MSVC warning.

Mon Nov 05 06:21:09 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.h: Forward declare PosFilter as "struct"
	  rather than "class", since it's defined as "struct".

Mon Nov 05 05:41:01 GMT 2007  Olly Betts <olly@survex.com>

	* api/sortable-serialise.cc: Suppress MSVC warning.

Mon Nov 05 04:55:48 GMT 2007  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Improved.

Mon Nov 05 04:43:13 GMT 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: More improvements from Jenny Black.

Sun Nov 04 22:59:28 GMT 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Assorted improvements to the start of this
	  document.

Sun Nov 04 22:54:13 GMT 2007  Olly Betts <olly@survex.com>

	* api/omdocument.cc,tests/api_wrdb.cc: values_begin() didn't ensure
	  that values had been read.  However, values_end() did (and so did
	  values_count()) so this wasn't generally an issue, but it shouldn't
	  happen anyway.
	* tests/api_wrdb.cc: Extend adddoc5 to include a regression test for
	  this bug.

Sun Nov 04 22:44:39 GMT 2007  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Remove 'FIXME' suggesting more value tests.
	* tests/api_nodb.cc: Add the suggested tests we don't already have.

Sun Nov 04 19:23:52 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_posdb.cc,tests/api_wrdb.cc: Use get_writable_database()
	  instead of get_writable_database("").
	* tests/api_wrdb.cc: Rework test_spell3 so it works under __WIN32__
	  (bug#177).

Sun Nov 04 07:31:04 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.h: Make BackendManager dtor virtual as
	  intended.

Sun Nov 04 07:05:12 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/,
	  tests/quartztest.cc: Extend BackendManager to allow opening a
	  WritableDatabase as a Database as well, and to allow reopening a
	  closed WritableDatabase as a WritableDatabase.  With these new
	  features, rework quartztest's adddoc2 and adddoc3 as apitest
	  testcases adddoc5 and adddoc6.

Sun Nov 04 06:08:42 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc,tests/apitest.cc,tests/apitest.h,tests/harness/:
	  Add BackendManager::get_writable_database_as_database() and use it
	  instead of assuming what the WritableDatabase path will be.

Sun Nov 04 05:31:30 GMT 2007  Olly Betts <olly@survex.com>

	* tests/,tests/harness/: Subclass BackendManager for each database
	  backend supported, which should provide a better foundation on
	  which we can rebuild to fix the nastier bits of the test harness.

Fri Nov 02 17:39:58 GMT 2007  Olly Betts <olly@survex.com>

	* INSTALL: zlib 1.2.0 apparently fixes a memory leak in deflateInit2,
	  which we use, so that's another reason to prefer 1.2.x.

Fri Nov 02 06:34:36 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Fix extracting of valgrind error
	  messages.

Fri Nov 02 05:09:05 GMT 2007  Olly Betts <olly@survex.com>

	* docs/bm25.html,docs/scalability.html: Remove references to Muscat
	  3.6.

Thu Nov 01 18:51:20 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS: Fix to talk about OP_VALUE_RANGE rather than
	  ValueRangePostList since the later isn't user-visible.

Thu Nov 01 18:16:20 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/exactphrasepostlist.cc: Fix memory leak if second memory
	  allocation fails.

Thu Nov 01 17:54:09 GMT 2007  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Move the section on stemming to a better
	  location.

Thu Nov 01 17:37:40 GMT 2007  Jenny Black

	* docs/glossary.rst: Fix typo.

Thu Nov 01 06:34:58 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Minor code simplification.

Wed Oct 31 16:17:08 GMT 2007  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Fix to handle the special case of a term which
	  is 48 characters long.  Fix not to go into an infinite loop if
	  certain checks fail.

Wed Oct 31 15:56:45 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: If the subpostlists are ORs and pruning
	  or operator decay happens within them, then get_termfreq_est() can
	  change such that the first postlist returns a higher value than
	  the second, so remove a bogus assertion which assumed this didn't
	  happen (bug#209).

Wed Oct 31 15:43:58 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: I documented an increase in
	  FLINT_VERSION but didn't increase it - luckily the previous version
	  wasn't in a released version, so just adjust the comment to match
	  what actually happened.

Wed Oct 31 15:24:48 GMT 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Add '#include <safeunistd.h>' (bug#208).

Wed Oct 31 15:01:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-check.cc: Update the checking of the termlist table to
	  stop checking for the "has_termfreqs" flag, which is no longer
	  stored in termlists.

Wed Oct 31 14:31:38 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/quartz_positionlist.cc: Add missing #include,
	  which is needed only when configured with --enable-log and with
	  --disable-assertions.

Tue Oct 30 04:52:53 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Update for 1.0.4.

Tue Oct 30 04:10:32 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Code tweak.

Tue Oct 30 03:04:04 GMT 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add two more test cases to improve
	  coverage.

Tue Oct 30 00:13:42 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: abi::__cxa_demangle() requires GCC 3.1
	  it seems.

Mon Oct 29 23:14:41 GMT 2007  Olly Betts <olly@survex.com>

	* docs/scalability.html: Update size of gmane.

Mon Oct 29 23:13:00 GMT 2007  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Note that Quartz is now deprecated.

Mon Oct 29 21:09:12 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac,tests/harness/testsuite.cc: Demangle the name of
	  the std::exception subclass for GCC, and handle compilation with
	  -fno-rtti.

Mon Oct 29 19:50:05 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Catch std::exception subclasses
	  explicitly and report e.what() (which gives the method name which
	  threw, at least under GCC).

Mon Oct 29 18:46:57 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Mon Oct 29 18:36:12 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Pull out old_item.wt into a variable.

Mon Oct 29 18:24:46 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Fix problem with spelling
	  correction of hyphenated terms (or other terms joined with phrase
	  generators): the position of the start of the term wasn't being
	  reset for the second term in the generated phrase, resulting in
	  out of bounds errors when substituting the new value in the
	  corrected query string.
	* tests/queryparsertest.cc: Test the fix.

Mon Oct 29 17:34:17 GMT 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Move "Stem::stem_word(word)" in the bindings
	  to the right section (it was done in 1.0.0, as already indicated).
	  Deprecate the non-pythonic iterators in favour of the pythonic ones.

Mon Oct 29 02:54:09 GMT 2007  Olly Betts <olly@survex.com>

	* NEWS,api/Makefile.mk,docs/Makefile.am,include/Makefile.mk,
	  include/xapian.h,tests/api_db.cc,tests/api_nodb.cc,
	  tests/api_wrdb.cc: Back out match spy changes in preparation for
	  creating a branch for them.

Mon Oct 29 02:37:31 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Fix
	  ValueRangeProcessor::get_termfreq_est() and get_termfreq_max() to
	  work when at_end() when paranoid assertions are enabled.

Mon Oct 29 01:51:07 GMT 2007  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: Add ESetItem::swap() and
	  MSetItem::swap().

Sun Oct 28 16:33:34 GMT 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from tinderbox and buildbot.

Sun Oct 28 06:00:23 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/queryoptimiser.cc: Remove unused variable.

Sun Oct 28 05:46:28 GMT 2007  Olly Betts <olly@survex.com>

	* docs/remote.html: xapian-tcpsrv can handle concurrent read access
	  so update the out-of-date information here.  Also, some new features
	  aren't supported by the remote backend yet.

Sun Oct 28 05:20:02 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Update documentation comment for
	  QueryParser::set_stemming_strategy().

Sun Oct 28 05:03:03 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of STEM_ALL.
	* tests/queryparsertest.cc: Update tests.  Move tables of queries to
	  before the test functions which use them.

Sat Oct 27 20:50:57 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h,
	  matcher/queryoptimiser.cc: Eliminate Query::Internal::dbl_parameter
	  to avoid any risk of ABI breakage.

Sat Oct 27 17:08:46 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Pull in <xapian/deprecated.h> explicitly.
	  Add @deprecated note to Query::Query(Query::op, Query) explaining
	  why it is deprecated.
	* include/xapian/queryparser.h: Wrap comment better.

Sat Oct 27 05:37:33 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Merge two "testsuite" sections in draft 1.0.4 entry.

Sat Oct 27 02:34:10 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Note specifically that std::list::size() is O(n) for GCC.
	  Update the debian packaging checklist.

Sat Oct 27 02:33:14 BST 2007  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Add link to the forthcoming book
	  "Introduction to Information Retrieval", which can be read online.

Sat Oct 27 02:22:36 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: We no longer build sourcedoc.pdf so remove it from
	  MAINTAINERCLEANFILES.

Sat Oct 27 02:20:31 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Mostly updated for 1.0.4.

Fri Oct 26 04:57:31 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: OP_SCALE_WEIGHT applied to MatchNothing is
	  now handled by the Query ctor, so replace the code to handle
	  OP_SCALE_WEIGHT in Query::Internal::simplify_matchnothing() by an
	  assertion that the subquery isn't MatchNothing.

Fri Oct 26 04:50:37 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Deprecate the essentially useless
	  constructor Query(Query::op, Query).
	* docs/deprecation.rst: Note this deprecation, and since the feature
	  doesn't actually have a use, schedule it for 1.1.0.  Also schedule
	  Enquire::register_match_decider() for 1.1.0 for the same reason.

Fri Oct 26 01:00:08 BST 2007  Olly Betts <olly@survex.com>

	* api/omquery.cc,include/xapian/query.h: OP_SCALE_WEIGHT applied to
	  OP_VALUE_RANGE can have no effect so ignore it.
	* tests/queryparsertest.cc: Update expected query descriptions.

Fri Oct 26 00:23:55 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: When checkatleast is set, and we're sorting
	  by relevance with forward ordering by docid, and the query is pure
	  boolean, we were exiting before the checkatleast requirement was
	  satisfied.  Then the adjustments made to the estimated and max
	  statistics based on checkatleast meant we claimed there were
	  exactly msize results.

Thu Oct 25 00:34:14 BST 2007  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc,matcher/multiandpostlist.cc,
	  matcher/queryoptimiser.cc,queryparser/queryparser.cc: Fix build
	  with --enable-assertions and --enable-log.

Wed Oct 24 06:29:03 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Drop out of IN_GROUP mode when we
	  generate a BOOLEAN_FILTER token.
	* tests/queryparsertest.cc: Add regression test.

Wed Oct 24 06:08:29 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Drop special treatment for unmatched
	  ')' at the start of the query, as it seems rather arbitrary and not
	  particularly useful.  Reparsing seems a better approach here.
	* tests/queryparsertest.cc: Add regression test case for bug which
	  dropping this special case fixes.

Wed Oct 24 05:25:40 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Add Ron Kass for several bug reports.

Wed Oct 24 05:13:01 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix parsing of queries which consist
	  only of boolean filter terms and HATE-d terms.
	* tests/queryparsertest.cc: Add regression tests, and a few more cases
	  which passed before too.  Fix descriptions of queries which now give
	  different (but equivalent) Xapian::Query object hierarchies.

Wed Oct 24 04:51:56 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Fix warning in debug log build.

Wed Oct 24 04:41:08 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/flint/flint_table.h: Don't
	  use class member function pointers to implement FlintTable::next()
	  and FlintTable::prev() as we can just call the methods directly
	  based on the sequential flag.  Profiling suggests this speeds up
	  searches a little, the two pointers take up 16 bytes each (on
	  x86_64) so it reduces the class size by up to 32 bytes, and the code
	  is simpler because we no longer need to update prev_ptr and
	  next_ptr.

Wed Oct 24 00:16:06 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Tweak Query::get_description() to describe
	  OP_SCALE_WEIGHT queries as '<factor> * <subquery>' rather than
	  '<subquery> * <factor>' as the former results in more readable
	  descriptions.
	* queryparser/queryparser.lemony: Use OP_SCALE_WEIGHT with factor 0.0
	  for queries which should be purely boolean which resolves a FIXME
	  comment in the code.
	* tests/queryparsertest.cc: Fix expected results for this change.

Tue Oct 23 19:13:08 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Some as_XXX() methods delete the
	  object they are called on, while others don't, so rename the ones
	  which don't to get_XXX() to make the code clearer, and make them
	  all return Query rather than Query *.  Eliminate Term::as_query()
	  completely - when we actually want a new object we can just call
	  new in the caller.  op_window_query() now takes the difference
	  between the number of terms and the total window size, and we now
	  use a std::vector to store the generated Query objects rather than
	  a std::list, since we know how many there will be and can reserve
	  the required size in advance.

Tue Oct 23 18:33:49 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Improve comment.

Mon Oct 22 21:00:05 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of LOVE and HATE
	  following a quoted phrase.
	* tests/queryparsertest.cc: Add regression test.

Mon Oct 22 05:23:23 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Refactor so Term::as_query() calls
	  Term::as_query_object() instead of vice versa, as this avoids
	  calling 'new Query' quite a bit and makes a measurable difference
	  to the speed of the QueryParser.  Fix a call to as_query() which
	  can be as_query_object().

Mon Oct 22 04:10:17 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: FLAG_PARTIAL with multi-prefixes
	  would result in inflated wqf for the "normal" version of the term
	  treated as partial.
	* tests/queryparsertest.cc: Add regression test.

Mon Oct 22 02:34:58 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Rename QueryParser::Internal::prefixes to prefixmap to avoid
	  confusion with all the other variables which are now called
	  "prefixes" in queryparser.lemony.  Eliminate have_prefix and
	  instead just set prefixinfo to NULL by default.

Sun Oct 21 23:56:57 BST 2007  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h,include/xapian/enquire.h,
	  include/xapian/query.h,matcher/: Implement a new QueryOptimiser
	  class which can hoist the positional filters of OP_PHRASE and
	  OP_NEAR higher up the tree and merge the "AND" inside them into
	  any neighbouring OP_AND or OP_FILTER (bug#23).  This shaves 10% of
	  the execution time of real world queries on real world data.  On
	  particularly slow cases, the saving can be more dramatic - it
	  saves 50% when tested on a log of slow cases.  OP_SCALE_WEIGHT
	  scaling factors are now pushed down to the leaves and any leaf
	  we a factor other than 0.0 (boolean) or 1.0 (unscaled) has
	  its weights scaled using a ScaleWeight wrapper around the normal
	  weighting object (bug#203).

Sun Oct 21 23:46:11 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Fix documentation of OP_SCALE_WEIGHT.
	  Negative scaling factors aren't now clipped to 0, instead we
	  throw Xapian::InvalidArgumentError.  Remove the explicit setting of
	  OP_ELITE_SET to 10 which is no longer required.  Wrap a long comment
	  line.

Sun Oct 21 23:20:23 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Tweak code and wrap comment.

Sun Oct 21 04:53:40 BST 2007  Olly Betts <olly@survex.com>

	* matcher/extraweightpostlist.h: Add missing '#include "multimatch.h"'
	  which is pulled in implicitly by some other header which always
	  happens to be included before this one.

Fri Oct 19 03:52:17 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Remove deprecation of
	  QueryParser::add_prefix() and QueryParser::add_boolean_prefix().
	  Reformat the tables to use the "simple table" style, and to all be
	  126 columns wide, since that fits in a maximised terminal window
	  without wrapping (at least on my machine!)

Fri Oct 19 03:44:33 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
	  tests/queryparsertest.cc: Since calling QueryParser::add_prefix()
	  or QueryParser::add_boolean_prefix() a second time with the same
	  field name was ignored before (rather than overriding as we had
	  thought) it seems reasonable to change this behaviour.  This
	  also avoids the need to deprecate these methods which will force all
	  users to update their code.  Change the semantics of default_prefix
	  - it's more useful if this overrides any default prefixes set with
	  add_prefix(), since this allows the same QueryParser object to
	  parse both a "general" search input which searches several fields
	  and also a "title" search input.  Trying to set the same field
	  as probabilistic and boolean now throws InvalidOperationError
	  rather than UnimplementedError.

Fri Oct 19 03:29:53 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Fix compilation.

Fri Oct 19 03:28:37 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: We're still getting "info" messages in the
	  generated HTML.  It seems to be impossible to get rst2html to
	  report "info" messages to stdout without adding them to the
	  generated document, so just drop "--verbose" to disable them
	  completely.

Thu Oct 18 18:27:28 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Use std::vector<> for the stack in the
	  lemon-generated parser.  This means that the stack is no longer a
	  fixed size, so we needn't worry about overflow, and that in typical
	  use it'll actually use less memory (lemon defaults to a 100 entry
	  stack).

Thu Oct 18 17:23:45 BST 2007  Olly Betts <olly@survex.com>

	* languages/turkish.sbl: Minimise differences with Snowball SVN HEAD
	  by stripping trailing whitespace.

Mon Oct 15 15:39:26 BST 2007  Olly Betts <olly@survex.com>

	* backends/quartz/btree_util.h: Need "safeunistd.h" for close().
	  Fixes build errors on mingw and with SGI's CC on IRIX.

Mon Oct 15 05:30:23 BST 2007  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: Fix typo in comment.

Mon Oct 15 05:26:35 BST 2007  Olly Betts <olly@survex.com>

	* common/omassert.h: Rewritten from scratch.  The new version only
	  includes headers if assertions are enabled, which should help
	  to speed up non-assertion builds by reducing unnecessary header
	  inclusion.  Also, float.h and math.h are never now pulled in -
	  instead we use the new within_DBL_EPSILON() function.  AssertNe()
	  and AssertNeParanoid() are never actually used, so replace them with
	  AssertRel() and AssertRelParanoid which allow the user to assert any
	  binary relation, not just inequality.  Also, we now use rare() to
	  give branch prediction hints for assertion tests (since the failure
	  branch should never be taken).
	* common/omdebug.h,common/stringutils.h,tests/harness/testsuite.h:
	  Replace several definitions of the STRINGIZE macro with a single
	  version in common/stringutils.h.
	* backends/flint/,backends/inmemory/inmemory_database.cc,
	  backends/multi/multi_postlist.cc,backends/quartz/,
	  backends/remote/remote-database.cc,bin/quartzcheck.cc,
	  bin/xapian-compact.cc,common/stringutils.h,expand/expandweight.cc,
	  expand/ortermlist.cc,matcher/phrasepostlist.cc,
	  matcher/scaleweightpostlist.cc,net/remoteconnection.cc,
	  net/tcpserver.cc: Explicitly include headers which were previously
	  being pulled in implicitly by omassert.h.
	* HACKING: Update the documentation for assertion calls, and document
	  CompileTimeAssert() (which previously wasn't documented here).

Mon Oct 15 05:09:15 BST 2007  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Add within_DBL_EPSILON() function
	  which returns true if its two double arguments differ by less
	  than DBL_EPSILON (currently not used anywhere).

Mon Oct 15 05:03:50 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: If check sets valid to true, we can't
	  be at_end(), so check valid first as at_end() is a rare event.

Mon Oct 15 05:00:18 BST 2007  Olly Betts <olly@survex.com>

	* matcher/: Remove code for FilterPostList, which has been unused for
	  ages.

Sun Oct 14 02:13:57 BST 2007  Olly Betts <olly@survex.com>

	* matcher/andpostlist.cc: AndPostList now ensures that its left is
	  less frequent than its right (it can still be produced as an
	  operator decay product, and sometimes left is more frequent when
	  this happens).

Sun Oct 14 00:58:20 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Use rare() to mark rarely taken branches.

Sun Oct 14 00:30:46 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Add rare() and usual() macros to config.h which allow
	  branch prediction hints to be given for compilers which support this
	  (currently GCC and Intel C++).
	* HACKING: Document rare() and usual().

Sat Oct 13 22:37:32 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Improve wording.

Sat Oct 13 16:42:26 BST 2007  Olly Betts <olly@survex.com>

	* api/postlist.cc,common/postlist.h,matcher/: Implement a variant of
	  PostList::skip_to() called PostList::check() which isn't required
	  to leave the PostList on a particular docid.  This allows queries
	  filtered by a ValueRangePostList to run around 3.5 times faster.
	  Fixes buf#164, though there's probably scope for at least some
	  further improvement.

Sat Oct 13 16:08:07 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: Fix typo bug (get_termfreq_min
	  should be get_termfreq_max!)

Sat Oct 13 15:53:52 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multiandpostlist.cc: Fix assertion (should be <= not <).

Fri Oct 12 01:20:05 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Note that rst2html may be installed as rst2html.py.

Fri Oct 12 01:10:11 BST 2007  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: Tweak formatting.

Thu Oct 11 22:58:36 BST 2007  Olly Betts <olly@survex.com>

	* tests/: svn:ignore: Add termgentest and termgentest.exe.

Thu Oct 11 16:18:03 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: If rst2html isn't found, also look for rst2html.py,
	  which archlinux reportedly installs it as.

Thu Oct 11 16:09:20 BST 2007  Olly Betts <olly@survex.com>

	* matcher/: Round the result of all get_termfreq_est() calculations to
	  the nearest integer instead of rounding down.

Thu Oct 11 15:40:48 BST 2007  Olly Betts <olly@survex.com>

	* matcher/: Add new PostList subclass MultiAndPostList which handles
	  a multi-way AND operation in a single class.  This allows us to
	  optimise some cases of 3 or more way AND operations much better
	  and gives a 16-17% performance improvement in tests using real-world
	  query logs.
	* tests/api_anydb.cc: MultiAndPostList rounds get_termfreq_est()
	  calculations to the nearest integer (rather than always rounding
	  down) so adjust the expected answers in test_matches.

Thu Oct 11 15:14:27 BST 2007  Olly Betts <olly@survex.com>

	* matcher/selectpostlist.cc: Explicitly qualify next() as
	  SelectPostList::next().

Thu Oct 11 13:04:40 BST 2007  Olly Betts <olly@survex.com>

	* README: Remove the ancient history lesson - this material is better
	  left to the history page on the website.

Thu Oct 11 00:33:34 BST 2007  Olly Betts <olly@survex.com>

	* matcher/branchpostlist.h: Fix comment typo.

Thu Oct 11 00:28:29 BST 2007  Olly Betts <olly@survex.com>

	* api/postlist.cc,backends/flint/flint_alldocspostlist.cc,
	  backends/flint/flint_alldocspostlist.h,common/postlist.h,matcher/:
	  Eliminate several implementations of open_position_list and
	  read_position_list in favour of default ones in the PostList base
	  class which throw InvalidOperationError.  Change the default
	  get_wdf implementation to also throw InvalidOperationError.

Wed Oct 10 22:27:44 BST 2007  Olly Betts <olly@survex.com>

	* docs/install.html: Improve the remainder.  This documents now just
	  gives a brief overview of building, suitable for most common cases,
	  and defers to the INSTALL document in each tarball for more details.

Wed Oct 10 21:51:39 BST 2007  Olly Betts <olly@survex.com>

	* common/leafpostlist.h: Rewrite header.
	* api/Makefile.mk,api/leafpostlist.cc: Add new source file for
	  virtual, and non-trivial, non-virtual, methods of LeafPostList.
	* api/omdatabase.cc,backends/inmemory/inmemory_database.h,
	  backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h,
	  backends/remote/net_postlist.h,common/emptypostlist.h: Add missing
	  '#include "omassert.h"' which was previously pulled in implicitly
	  via '#include "leafpostlist.h"'.
	* backends/inmemory/inmemory_database.h: Remove unused '#include
	  <stdlib.h>'.
	* backends/multi/multi_postlist.cc,backends/multi/multi_postlist.h:
	  MultiPostList::set_termweight() is never used, so eliminate it.
	* backends/remote/net_postlist.cc: Rename parameter "weight" to
	  "min_weight" to avoid clash with new member variable of
	  LeafPostList.
	* matcher/emptysubmatch.cc,matcher/localmatch.cc: Don't call
	  LeafPostList::set_termweight() with a BoolWeight object - the
	  default behaviour is now equivalent.

Wed Oct 10 18:18:09 BST 2007  Olly Betts <olly@survex.com>

	* docs/install.html: Improve the first half.

Wed Oct 10 16:32:57 BST 2007  Olly Betts <olly@survex.com>

	* common/postlist.h: Rewrite header.
	* api/Makefile.mk,api/postlist.cc: Add new source file for virtual
	  methods of Xapian::PostingIterator::Internal.
	* api/omdatabase.cc,backends/flint/flint_postlist.h,
	  backends/quartz/quartz_alldocspostlist.cc,
	  backends/quartz/quartz_postlist.h,matcher/valuerangepostlist.cc:
	  Add missing '#include "autoptr.h"' which was previously pulled in
	  implicitly via '#include "postlist.h"'.

Wed Oct 10 16:25:08 BST 2007  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Remove quartztest's test_postlist1 and
	  test_postlist2.
	* tests/api_db.cc: Enhance test_termstats to cover part of the removed
	  tests.  Enhance test_postlist1 to check more long terms.  Eliminate
	  the helper function from test_postlist3.
	* tests/api_wrdb.cc: Add test_postlist7 to cover the rest of what the
	  removed tests checked which isn't already checked elsewhere.

Wed Oct 10 02:29:44 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Update the release checklist.

Wed Oct 10 02:01:03 BST 2007  Olly Betts <olly@survex.com>

	* matcher/scaleweightpostlist.cc,matcher/scaleweightpostlist.h: Move
	  virtual dtor definition out of header.

Wed Oct 10 01:41:05 BST 2007  Olly Betts <olly@survex.com>

	* matcher/msetpostlist.cc: Avoid virtual method overhead in
	  MSetPostList::recalc_maxweight().

Wed Oct 10 00:16:00 BST 2007  Olly Betts <olly@survex.com>

	* common/expandweight.h,expand/expand.cc,expand/expandweight.cc: We
	  never actually use ExpandWeight::get_maxweight(), so remove it.

Tue Oct 09 16:27:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_version.cc,
	  backends/flint/flint_version.h: Don't try to upgrade a flint
	  database if we're only reading it, or it's already the latest
	  version.

Mon Oct 08 10:14:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_nodb.cc: Rename test_scaleweightmatchnothing1 to
	  test_scaleweight3 so all the scaleweight tests can be run
	  together more easily.  Add test_scaleweight4 to test that scaling
	  by a weight close to 1 is optimised away.

Sun Oct 07 12:20:14 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Add explicit note that
	  Database::get_metadata() returns an empty string when the backend
	  doesn't support user-specified metadata, and that
	  WritableDatabase::set_metadata() throws UnimplementedError in this
	  case.  Add note about current behaviour with multidatabases.

Sun Oct 07 10:58:24 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: No need to use AutoPtr<> here now.

Sun Oct 07 10:54:05 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/remoteprotocol.h: Bump the network protocol minor
	  revision, since we've added a query operator (OP_SCALE_WEIGHT)
	  and the server will need to be updated to understand serialised
	  queries containing it.

Sun Oct 07 01:54:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc,include/xapian/query.h,matcher/,
	  tests/api_anydb.cc,tests/api_nodb.cc,tests/internaltest.cc:
	  Rename OP_MULT_WEIGHT to OP_SCALE_WEIGHT and MultWeight to
	  ScaleWeight, and move it to before OP_MULT_WEIGHT (to remove the
	  gap in the enum).
	  Don't do an epsilon test to compare the weight to zero (when
	  checking if it's effectively a boolean query) - do an exact
	  comparison instead.  Raise an exception if the parameter for
	  OP_SCALE_WEIGHT is < 0 (instead of clipping it to 0).  Adjust
	  weights accordingly.
	  Add test_scaleweight2() to test a query with some weights
	  multiplied by 0, and some by a different factor.

Wed Oct 03 17:23:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc,tests/api_nodb.cc: Fix (and test) for a
	  double delete if OP_MULT_WEIGHT was applied to an empty query.

Mon Oct 01 13:20:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Update
	* net/remoteconnection.cc: Back out previous change - I was
	  confused, the code was previously fine, and the change broke it.

Mon Oct 01 13:13:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omqueryinternal.cc: Fix access of uninitialised member when
	  unserialising a mult-weight query.
	* tests/internaltest.cc: Add a regression test for unserialisationg
	  of mult-weight queries.

Mon Oct 01 13:11:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: After calling read(), check for received
	  == 0 after checking for errors, so that if an EINTR occurs in
	  read, we don't report EOF instead of retrying.

Sun Sep 30 23:20:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h: Add
	  OP_MULT_WEIGHT operator, and a new Query constructor which takes
	  a single subquery and a "double" parameter - currently only
	  useful for OP_MULT_WEIGHT.  Add dbl_parameter to Query::Internal,
	  to hold this parameter.  Add serialisation of OP_MULT_WEIGHT
	  using "." to represent the operator.  Drop OP_MULT_WEIGHT
	  operators which have a parameter of 1 (or very close) when
	  simplifying, since these have no effect.
	* matcher/multweightpostlist.cc,matcher/multweightpostlist.h: New
	  files, implementing a postlist which multiplies the weights from
	  its single sub-postlist by a parameter.
	* matcher/Makefile.mk: Add new files.
	* matcher/localmatch.cc: Add support for the OP_MULT_WEIGHT query
	  operator, which produces a MultWeightPostList if the associated
	  parameter is greater than DBL_EPSILON, and produces a boolean query
	  otherwise.
	* tests/api_anydb.cc: Add tests for OP_MULT_WEIGHT operator with
	  various queries, and various multipliers.
	* NEWS: Update

Sun Sep 30 23:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.h: Add TEST_NOT_EQUAL_DOUBLE() macro.
	* tests/harness/testsuite.cc: Add special
	  case to TEST_EQUAL_DOUBLE_() for exact equality of the supplied
	  arguments.  This is tidier in general, because it avoids "inf"
	  being produces by the calculation, but is only actually necessary
	  in the case where the arguments are both exactly 0; it all works
	  out nicely for other values of the arguments.

Sun Sep 30 21:12:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: #define XAPIAN_DEPRECATED to disable
	  compiler warnings about the deprecated forms of add_prefix() and
	  add_boolean_prefix().

Sun Sep 30 21:07:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/Makefile.mk,docs/Makefile.am,docs/deprecation.rst,
	  include/Makefile.mk,include/xapian.h,include/xapian/queryparser.h,
	  queryparser/queryparser.cc,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h,tests/: Re-apply changes which
	  needed more thought or more work before being included in a
	  release.
	* NEWS: Update with current descriptions of these changes.

Sun Sep 30 20:22:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/valgrind.supp: Add further suppressions needed for the
	  version of zlib on ubuntu gutsy.

Fri Sep 28 15:38:18 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Final (?) update for 1.0.3.

Fri Sep 28 15:37:22 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Another small update.

Fri Sep 28 15:30:17 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Add link to the 1.0.N tracker bug.

Fri Sep 28 14:04:06 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: More updates.

Fri Sep 28 13:45:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Document that empty metadata keys will
	  cause an exception from get_metadata() and set_metadata().
	* api/omdatabase.cc: Cause empty metadata keys to raise an
	  InvalidArgumentError if they're passed to set_metadata() or
	  get_metadata().
	* tests/api_wrdb.cc: Add test_metadata3, to check behaviour with an
	  empty metadata key.

Fri Sep 28 13:30:49 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Updates from tinderbox.

Fri Sep 28 13:22:16 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Clarify support for empty metadata keys.

Fri Sep 28 11:00:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/valgrind.supp: Add second version of the zlib end condition
	  check which works for the version of zlib in Ubuntu gutsy; ie,
	  version 1.2.3.3, where the error occurs in the function called
	  directly by deflate, rather than two levels below it.

Fri Sep 28 03:11:11 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Update for 1.0.3.

Fri Sep 28 03:05:10 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,docs/Makefile.am,docs/deprecation.rst,
	  include/Makefile.mk,include/xapian.h,include/xapian/queryparser.h,
	  queryparser/queryparser.cc,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h,tests/: Back out changes which
	  need more thought or more work in the interests of getting 1.0.3
	  out this month.

Fri Sep 28 03:04:19 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update with recent changes.

Fri Sep 28 01:55:42 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Revert to the previous deprecation policy.

Fri Sep 28 01:20:34 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Rephrase since "should be in the MSet"
	  might be misunderstood.

Fri Sep 28 01:12:47 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS,docs/Makefile.am,docs/glossary.rst,docs/index.html: Add
	  glossary put together by Jenny Black, also incorporating entries
	  from Deron Meranda's glossary on the wiki.

Thu Sep 27 23:06:30 BST 2007  Olly Betts <olly@survex.com>

	* docs/stemming.html: Reorder the initial paragraphs so we actually
	  answer the question "What is a stemming algorithm?" up front.

Thu Sep 27 22:15:36 BST 2007  Olly Betts <olly@survex.com>

	* matcher/valuerangepostlist.cc: Call ValueRangePostList::next()
	  explicitly to avoid the overhead of virtual method dispatch.

Thu Sep 27 14:43:25 BST 2007  Olly Betts <olly@survex.com>

	* common/termlist.h: Don't need to forward declare
	  Xapian::Internal::ExpandWeight here.

Thu Sep 27 14:36:00 BST 2007  Olly Betts <olly@survex.com>

	* common/termlist.h: Add missing (but indirectly included) '#include
	  <xapian/base.h>'.

Fri Sep 21 18:00:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Add deprecation for
	  Database::positionlist_begin() throwing DocNotFoundError , for
	  same reason as deprecating it throwing RangeError.  Also, add
	  deprecation for QueryParser::add_prefix(f, p) and
	  add_boolean_prefix() - replaced by three argument form of
	  add_prefix.  Also, add a policy that we don't add
	  XAPIAN_DEPRECATED when there's no replacement for the deprecated
	  feature in the last x.x.0 release.
	* include/xapian/queryparser.h: Add @deprecated to documentation
	  comments for add_prefix(f, p) and add_boolean_prefix() (but don't
	  add XAPIAN_DEPRECATED() macro for now).

Fri Sep 21 16:13:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/queryparser.h: Fix copy and paste errors in
	  documentation comment, and hopefully clarify it somewhat.

Fri Sep 21 15:50:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Initialise the default prefix from
	  prefixes.find(""), allowing multiple default prefixes to be set
	  by calling add_prefix() with an empty field name.
	* queryparser/queryparser.lemony: Several more tests; mainly for
	  the new default_prefix functionality, but also a bit more
	  coverage for multiple prefixes in general.

Fri Sep 21 15:04:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc: API
	  addition: Revert previous change to behaviour of
	  QueryParser::add_prefix and QueryParser::add_boolean_prefix
	  methods, to avoid API change within a release series.  Add new
	  QueryParser::add_prefix() form which takes three parameters; the
	  third parameter is a value from a new "prefix_type" enum.
	* queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Internal changes to allow multiple filters to be set for a single
	  field:
	   - Remove the PrefixInfoList object again - instead add a list of
	     prefixes to PrefixInfo.  We only aim to support one type of
	     prefix for a given field, so the extra flexibility given by
	     PrefixInfoList is a districation.
	   - Change filter_group_id to be based on a list of prefixes,
	     instead of a single prefix.
	   - Change Term objects to store a list of prefixes instead of a
	     single prefix.  make_term() now takes a prefix argument and
	     makes a single term.  Term::as_... methods iterate through the
	     prefix list and OR together the resulting terms.
	   - Change TermList object to store a list of Terms instead of
	     Queries, and also to keep track of whether the prefix lists
	     for those Terms are all the same.  When they are the same,
	     generate separate phrases for each prefix, and OR them
	     togeher, instead of generating phrases of "OR" groups of
	     terms.  Remove the unused "TermList::add_term()" method.
	* tests/queryparsertest.cc: Add simple tests of repeated inline
	  fields, phrases with multiple prefixed fields, tests of backwards
	  compatible behaviour of add_prefix(field, prefix), and
	  add_boolean_prefix(), and of the new add_prefix() form with
	  incompatible types.

Thu Sep 20 02:13:36 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update with changes since 1.0.2.

Wed Sep 19 20:00:43 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Fix "Key_" in exception message to
	  say "Key" (the result of overzealous search-and-replace).

Wed Sep 19 17:08:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Handle repeated calls to QueryParser::add_boolean_prefix() with
	  the same field - this will generate multiple terms for each
	  occurrence of the field in the query.  Involves reorganising the
	  internal representation of prefixes, to hold a list of PrefixInfo
	  objects for each field, instead of a single object.  This also
	  paves the way towards handling for multiple calls to
	  QueryParser:add_prefix() with the same field, and allowing
	  add_{boolean_}prefix() with an empty field to set the default
	  prefix handling, but the behaviour of this are currently
	  unchanged.  Technically, this could be considered an API change,
	  but the previous behaviour (of using only the most recent value
	  set by add_boolean_prefix) was unintentional and undocumented,
	  and seems unlikely to have been deliberately used.
	* tests/queryparsertest.cc: Add a very simple test for repeated
	  boolean_prefix fields; several more are needed.  Also, a
	  commented out test of repeated non-boolean prefix fields.

Tue Sep 18 23:28:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Remove unused variable
	  "term_group".

Tue Sep 18 16:56:37 BST 2007  Olly Betts <olly@survex.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Use a set rather than a
	  map to store the "multivalues" flags.

Mon Sep 17 14:10:47 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/matchspy.h: Fix documentation comment typo.

Sun Sep 16 04:13:20 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Fix compiler warning in mingw build.

Sun Sep 16 02:59:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,tests/api_wrdb.cc: Check length of
	  new terms is at most 245 bytes for flint in add_document() and
	  replace_document() so that the API user gets an error there rather
	  than when flush() is called (explicitly or implicitly).  Fixes
	  bug#44.

Sat Sep 15 20:11:36 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Add missing include of
	  msvc_posix_wrapper.h.

Sat Sep 15 17:58:35 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/flint/flint_version.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,common/database.h,
	  include/xapian/database.h,tests/api_wrdb.cc: Add support for user
	  specified metadata (bug#143).

Sat Sep 15 02:26:40 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h:
	  Implement FlintCursor::find_entry_ge() a little more efficiently
	  (we could do better still by modifying FlintTable too).

Sat Sep 15 00:56:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc: If we found the exact key, just copy
	  it to current_key.

Fri Sep 14 21:52:45 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/: Overhaul FlintAllDocsPostList.

Fri Sep 14 19:20:56 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.cc: Rework
	  FlintAllTermsList::skip_to() to use FlintCursor::find_entry_ge().

Fri Sep 14 17:45:06 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.h: Improve documentation comment.

Fri Sep 14 17:28:17 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spellingwordslist.cc,
	  backends/flint/flint_synonym.cc: Use FlintCursor::find_entry_ge().
	* backends/flint/flint_synonym.h: Use FlintCursor::find_entry_lt().
	* backends/flint/flint_alltermslist.h: Use FlintCursor::find_entry_lt()
	  and skip any keys before "\x00\xff" to allow for extra metadata
	  keys.

Fri Sep 14 15:26:04 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: The
	  reason why a deleted key is still visible to the cursor is that it
	  is running over the previous revision of the tree.  So we don't
	  need to call find_entry() at all - we can just call next().  Also
	  extend FlintCursor::del() to return whether the cursor is positioned
	  (like FlintCursor::next() does).
	* backends/flint/flint_postlist.cc: Use the return value of
	  FlintCursor::del().

Fri Sep 14 15:10:39 BST 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Reorder the testdata/flint-x.y.z files
	  consistently.

Fri Sep 14 12:48:04 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Add "tar-ustar" option to AM_INIT_AUTOMAKE.  This
	  is needed to avoid a failure of make dist due to filepaths of
	  more than 99 characters (in the generated documentation: the
	  relevant filepaths are for the NumberValueRangeProcessor class,
	  and extend to 103 characters).  Automake documentation implies
	  that tar-v7 is the default format, which doesn't support
	  filepaths longer than 99 characters portably; ustar allows 256
	  characters.  The automake documentation says that the ustar
	  format "is believed to be old enough to be portable"; if we come
	  across problems due to the format change we could consider
	  renaming files to reduce the filepath length.
	* tests/Makefile.am: Remove
	  testdata/flint-1.0.2/{value,position}.{baseA,DB} from
	  distribution, since they don't actually exist.  Fixes make dist.

Fri Sep 14 10:45:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: Add
	  FlintCursor::find_entry_gt(), and use it instead of
	  flint_entry_ge() in FlintCuror::del().  This fixes failure of
	  deldoc4 test.  I'm not sure why find_entry() can return true
	  immediately after the key it's searching for was deleted with
	  B->del(), though: that merits further investigation.

Fri Sep 14 04:57:14 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Avoid comparing char with 0 - on platforms
	  where char is unsigned by default this can give a compiler warning.

Fri Sep 14 03:40:18 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Removed unused variable.

Fri Sep 14 01:56:36 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.cc: Fix comment typo.

Fri Sep 14 01:51:52 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: Add
	  FlintCursor::find_entry_lt() and FlintCursor::find_entry_ge()
	  which we can implement more efficiently (in the future) than
	  user code calling FlintCursor::find_entry() and then having to
	  adjust the cursor position in some cases.

Thu Sep 13 14:52:34 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.cc: FlintCursor::after_end() is
	  never true after FlintCursor::find_entry() so remove check for this
	  case!

Thu Sep 13 03:11:19 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.h,backends/flint/flint_database.cc,
	  backends/flint/flint_database.h: Don't pass FlintPostListTable
	  pointer to FlintAllTermsList - it can find this via the database
	  if we make it FlintDatabase instead of Database::Internal.

Thu Sep 13 02:07:19 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/: Read/write the metainfo key from FlintDatabase to
	  avoid having to pass a huge long list of values across once we start
	  to store more statistics.

Thu Sep 13 02:03:46 BST 2007  Olly Betts <olly@survex.com>

	* backends/database.cc,common/database.h: Move definitions of virtual
	  methods out of the header file.

Thu Sep 13 01:33:49 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Store the total_length and lastdocid values in FlintDatabase object.

Wed Sep 12 20:27:49 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Eliminate a block which used to scope some
	  variables which have now moved.  Unify debug output from different
	  cases after the match.  Remove half-finished comment which doesn't
	  seem to be trying to say anything useful.

Wed Sep 12 20:20:18 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: In checkatleast2, the total number of matching
	  documents in the database is 5, so use TEST_EQUAL instead of
	  TEST_GREATER_OR_EQUAL to compare get_matches_lower_bound() with 5.

Wed Sep 12 17:55:00 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.h: Fix some comment typos and
	  outdated information.  Remove some superfluous uses of "virtual".

Wed Sep 12 17:15:58 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
	  Failing to create a flint or quartz database because we couldn't
	  create the directory for it now throws DatabaseCreateError not
	  DatabaseOpeningError.
	* tests/api_db.cc: Update test cases.

Wed Sep 12 15:40:16 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  If we reach the flush threshold during a transaction, flush the
	  postlist changes, but don't actually commit them.

Wed Sep 12 14:12:52 BST 2007  Olly Betts <olly@survex.com>

	* common/msvc_posix_wrapper.cc,common/msvc_posix_wrapper.h: Add
	  msvc_posix_rename() which can rename a file on top of another file.
	* common/stringutils.h: Add common_prefix_length() function.
	* backends/flint/: Clean up FlintWritableDatabase - it now just
	  inherits from FlintDatabase which allows several virtual methods
	  which just forwarded to FlintDatabase to be dropped.  Also, we
	  now no longer need to pass FlintTable objects to other classes
	  - they can just find the tables they want via the database pointer.
	  The never-used "store_termfreqs" flag has been dropped from the
	  termlist table entries - existing 1.0.x flint databases will be
	  automatically upgraded to the new version.  Opening a database
	  now calls stat() less, so should be slightly more efficient.
	  And TermIterator::positionlist_count() now works for the flint
	  backend.
	* tests/Makefile.am,tests/api_db.cc,tests/testdata/flint-1.0.2/: New
	  test flintbackwardcompat2 which tests that we can open a flint
	  database from 1.0.2.
	* tests/api_wrdb.cc: New test adddoc4 which checks that termlists
	  handle an initial term of any valid length correctly.
	* tests/testdata/flint-1.0.1/postlist.DB: Mark as a binary file in
	  SVN.

Tue Sep 11 23:02:56 BST 2007  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Implement
	  TermIterator::positionlist_count() for the inmemory backend.
	* tests/api_posdb.cc: Add feature test for
	  TermIterator::positionlist_count() (which currently skips for all
	  backends except inmemory).

Tue Sep 11 03:43:30 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Make sure flush_threshold gets
	  initialised.
	* backends/flint/flint_database.h: Change type of flush_threshold from
	  `size_t' to `Xapian::doccount' for consistency with the type of
	  changes_made.

Tue Sep 11 03:19:37 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h:
	  Change flush_threshold from static to non-static, and set it for
	  each FlintWritableDatabase based on the value of the
	  XAPIAN_FLUSH_THRESHOLD environment variable at the time the
	  database was opened, instead of caching the value for each future
	  database which is opened.

Tue Sep 11 02:59:45 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: When running rst2html, use "--exit-status=warning"
	  rather than "--strict".  The former actually gives a non-zero exit
	  status for a warning or worse, while the former doesn't, but does
	  include any "info" messages in the output HTML.

Tue Sep 11 02:38:30 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add "Database::positionlist_begin() throwing
	  RangeError".

Tue Sep 11 00:52:27 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Document a few more "coding standards".

Mon Sep 10 21:34:23 BST 2007  Olly Betts <olly@survex.com>

	* examples/delve.cc,examples/simpleexpand.cc,net/tcpserver.cc,
	  queryparser/queryparser.cc,queryparser/queryparser.lemony: Add more
	  missing "#include <string.h>" instances.

Mon Sep 10 20:24:25 BST 2007  Olly Betts <olly@survex.com>

	* net/serialise.cc: Add missing "#include <string.h>".

Sun Sep 09 15:38:11 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.h,backends/flint/flint_synonym.h,
	  backends/flint/flint_table.h: Fix typo (Z_DEFAULT_COMPRESSION
	  where it should be Z_DEFAULT_STRATEGY) which meant that zlib
	  compression wasn't enabled for the spelling or synonym tables.

Fri Sep 07 19:31:44 BST 2007  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Fix typo.

Thu Sep 06 15:02:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/editdistance.cc: Fix off-by-one error in loop bounds when
	  setting up fkp array initially.  Fixes bug #194.
	* tests/api_wrdb.cc: Add regression test for #194, spell5.

Thu Sep 06 14:31:15 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: More localised fix for preserving the
	  start of the valgrind report when in verbose mode.  Rework the code
	  which pulls out the start of the report to summarise why the test
	  failed.

Thu Sep 06 14:17:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.cc: When displaying valgrind output, seek
	  back to the start of the valgrind output for the current test
	  before dumping it to stdout: previously, the earlier check for the
	  valgrind error message to display (when not using -v) caused the
	  first 1024 bytes of the valgrind output to get dropped.

Tue Sep 04 20:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: For remote submatches, keep a count of
	  matches which we know exist, but we don't get passed from the
	  submatch.  These can be detected by checking for the lowerbound
	  on the matches in the submatch being greater than the index of
	  the last item in the returned submset.  When the match is over,
	  use this count, together with docs_matched, to adjust the lower
	  bound and estimate (and upper bound, if we've not seen as many
	  documents as we were asked to check for).  Fixes checkatleast2
	  and checkatleast3 in the remote database case.
	* tests/harness/testsuite.h: Add TEST_GREATER_OR_EQUAL,
	  TEST_GREATER, TEST_LESSER_OR_EQUAL and TEST_LESSER macros, which
	  display the values of the arguments if they fail.
	* tests/api_anydb.cc: Use TEST_GREATER_OR_EQUAL and TEST_EQUAL in
	  checkatleast2 and checkatleast3, to make failures easier to
	  debug.

Tue Sep 04 18:16:49 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Restructure to make the control flow clearer.
	  Rewrap some comments which got wrapped to ~82 columns somehow.

Tue Sep 04 17:21:49 BST 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Restore the HTML header I accidentally deleted
	  in November 2006.

Tue Sep 04 17:15:30 BST 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Fix typo.

Tue Sep 04 13:47:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_anydb.cc: Tighten test_checkatleast3 to check for
	  previous bug (now fixed).

Tue Sep 04 13:37:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/multimatch.cc: If check_at_least is greater than
	  maxitems, but there are fewer results than check_at_least, the
	  lower and upper bounds reported should be equal (and exact).  Fix
	  a bug which caused this not to be the case, by checking if
	  docs_matched < check_at_least, and forcing the bounds (and
	  estimate) to be docs_matched in this case.

	  Also, fix a bug when sorting by anything other than relevance,
	  which was causing potential matches which are too low in the
	  ranking to make the mset not to be added to the count of
	  docs_matched, even when docs_matched < check_at_least.

	  Also, add a few extra explanatory comments and debug log messages
	  in get_mset().

Tue Sep 04 12:43:03 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from debian buildd logs.

Tue Sep 04 09:57:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,configure.ac,msvc/genversion.pl,msvc/version.h.in:
	  Move msvc/genversion.pl and msvc/version.h.in to win32msvc in
	  xapian-maintainer-tools.  Remove generation of msvc/version.h
	  from configure.in, and AC_SUBST() of MAJOR_VERSION,
	  MINOR_VERSION and REVISION, which were only in place for this
	  generation.  Remove msvc/version.h from distribution tarballs.

Tue Sep 04 02:56:00 BST 2007  Olly Betts <olly@survex.com>

	* matcher/andpostlist.cc: If the database has > 2G documents then the
	  sum of termfreq_min can overflow, so handle this case correctly.

Tue Sep 04 00:05:47 BST 2007  Olly Betts <olly@survex.com>

	* xapian-config.in: We always need to include dependency_libs in the
	  output of `xapian-config --libs` if shared libraries are disabled.

Mon Sep 03 16:28:33 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Allow "xapian-check db/record." and
	  "xapian-check db/record.DB".

Mon Sep 03 02:16:43 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst,include/xapian/enquire.h: Deprecate
	  Enquire::register_match_decider().
	* api/omenquire.cc,common/omenquireinternal.h: Remove mdecider_map
	  since the set values are never used anywhere.

Sun Sep 02 20:54:33 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Add "update the 1.0.N tracker bug" to the release
	  checklist.

Fri Aug 31 10:44:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_db.cc,tests/api_wrdb.cc: Fix compilation of apitest,
	  which was broken on 64 bit platforms due to size_t instead of
	  doccount bug.

Fri Aug 24 11:56:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Fix uses of size_t
	  which should have been Xapian::doccount.  Was causing compile
	  errors on platforms where size_t and Xapian::doccount were
	  different sizes.

Fri Aug 03 20:10:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_nodb.cc: Add test_stringlistserialise1() to test the
	  StringListSerialiser and StringListUnserialiser.  Change the list
	  of testcases to use the TESTCASE and END_OF_TESTCASES macros.

Fri Aug 03 19:53:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Add StringListSerialiser
	  and StringListUnserialiser classes which can be used to serialise
	  a list of strings into a single string.  Add flag to
	  ValueCountMatchSpy to use this to unserialise the values read
	  from the database into multiple strings, allowing several values
	  to be stored for a particular slot in a database: this allows
	  multiple values of a particular facet to be stored.

Thu Jul 26 16:55:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc: Change STRINGIZE to om_tostring()
	  in error message about a key which is too long; STRINGIZE doesn't
	  work since FLINT_BTREE_MAX_KEY_LEN is no longer a preprocessor
	  constant - it's a C++ constant; before this change, the error
	  message contained the literal text "FLINT_BTREE_MAX_KEY_LEN".

Tue Jul 17 12:20:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Add a
	  MultipleMatchDecider, which calls a list of deciders in order,
	  until one returns false.
	* include/xapian/enquire.h: Expand comment to say which way round
	  the return values of the MatchDecider operator are.
	* tests/api_db.cc: Add test_matchfunctor3() to test the
	  MultipleMatchDecider - also tests the ValueCountMatchSpy,
	  incidentally.

Tue Jul 17 11:10:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Make
	  get_most_frequent_items() private, since I'm not convinced it's
	  useful to make it available externally.  We can always make it
	  public again if it's useful to do so.
	* test/api_wrdb.cc: Update tests accordingly.

Sat Jul 14 00:17:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Get rid of the
	  TopValueMatchSpy in favour of a new function
	  "get_most_frequent_items", which processes the output of a
	  ValueCountMatchSpy.  Add a TermCountMatchSpy which counts the
	  occurrences of terms with a given prefix, and gives output in
	  the same form as ValueCountMatchSpy.  Add convenience methods
	  ValueCountMatchSpy::get_top_values() and
	  TermCountMatchSpy::get_top_terms() which use this to return the
	  most frequent items seen by the matchspy.
	* tests/api_wrdb.cc: Test the ValueCountMatchSpy, and the
	  get_most_frequent_items() function.

Fri Jul 13 18:57:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/andpostlist.cc,tests/api_anydb.cc: Improve the lower
	  bound on the number of matching documents for an AND query - if
	  the sum of the lower bounds for the two sides is greater than the
	  number of documents in the database, then some of them must have
	  both terms.  This greatly improves the lower bound for queries of
	  the form "<alldocuments> FILTER foo" (since FILTER is a subclass
	  of AND, and uses the same method), but is probably a useful
	  improvement elsewhere.

Fri Jul 13 17:53:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/valueranges.rst: Correct out-of-date reference to
	  float_to_string, spotted by Enrico Zini.

Wed Jul 11 22:54:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
	  Move ValueAndFrequency out of the TopValueMatchSpy class - it
	  doesn't seem to be possible to wrap it with swig without doing
	  this, and it doesn't seem much less tidy.

Wed Jul 11 18:03:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/matchspy.cc,include/xapian/matchspy.h: Split MatchSpy into a
	  base class (ValueCountMatchSpy), which just counts the values in
	  the documents it sees, and a subclass (CategorySelectMatchSpy)
	  which does the grouping into categories, and scores the
	  categories.  Add another subclass (TopValueMatchSpy) which
	  calculates a sorted vector holding the most frequent values.
	* tests/api_wrdb.cc: Update matchspy1 and matchspy2 to use
	  CategorySelectMatchSpy instead of MatchSpy, and corresponding
	  changes to the methods.  Add matchspy3 to test the
	  TopValueMatchSpy.

Mon Jul 09 15:40:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Fix copyright: everything I've done in 2007
	  has been for Lemur.

Mon Jul 09 15:40:38 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/version_h.cc: Fix type in comment.

Fri Jul 06 12:14:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/enquire.h: Add note to register_match_decider()
	  documentation comment of what this function is for, and also that
	  it doesn't currently do anything (other than store the values
	  passed to it in the enquire internals).

Thu Jul 05 20:52:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/categorisation.rst: Fix typo.

Thu Jul 05 20:41:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Rework matchspy2 to use approximate values to
	  avoid failing on some platform due to differing precision.

Thu Jul 05 12:21:48 BST 2007  Olly Betts <olly@survex.com>

	* docs/categorisation.rst: Complete half sentence.

Thu Jul 05 12:17:20 BST 2007  Olly Betts <olly@survex.com>

	* docs/categorisation.rst: Add section on restricting by category
	  values.

Thu Jul 05 04:47:18 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/categorisation.rst: Add topic document
	  discussing use of Xapian::MatchSpy.

Thu Jul 05 02:08:13 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian.h,tests/api_wrdb.cc: Restore MatchSpy stuff.

Thu Jul 05 01:38:38 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Note that RoadMap on the wiki needs updating for each
	  release.

Thu Jul 05 01:03:05 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Update.

Thu Jul 05 00:31:00 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Minor tweaks and clarifications.

Thu Jul 05 00:29:53 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian.h,tests/api_wrdb.cc: Disable MatchSpy class for 1.0.2
	  as it's not ready for release yet.

Wed Jul 04 21:20:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Update with release date for release 1.0.2

Wed Jul 04 21:09:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Add Tomek Jackowiak, for reporting bug #166 (missing
	  Xapian::Query documentation).

Wed Jul 04 20:45:56 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Updated version and library version for 1.0.2.

Wed Jul 04 20:36:07 BST 2007  Olly Betts <olly@survex.com>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
	  Tidy up API for MatchSpy::build_numeric_ranges() and add tests.

Wed Jul 04 19:40:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Fully updated.

Wed Jul 04 18:33:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Move some of the changelog entries into news-style comments.

Wed Jul 04 17:50:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: SKIP_TEST() spell3 on windows - it doesn't
	  work there due to trying to delete (and then overwrite) an open
	  database.  We shouldn't be doing this, so add a long FIXME
	  explaining what we should be doing instead.

Wed Jul 04 17:27:22 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Partly update.

Wed Jul 04 17:19:51 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Add Simon Tatham for spotting the -INFINITY issue, and for
	  a lot of useful advice during the CVS to SVN transition.

Wed Jul 04 17:16:59 BST 2007  Olly Betts <olly@survex.com>

	* api/,include/xapian/queryparser.h,tests/queryparsertest.cc: Rename
	  Xapian::NumberValueRangeProcessor::float_to_string() to
	  Xapian::sortable_serialise() and
	  Xapian::NumberValueRangeProcessor::string_to_float() to
	  Xapian::sortable_unserialise().

Wed Jul 04 17:16:16 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Add rationale for 2 space indents for "public", etc.

Wed Jul 04 14:09:57 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Loops on integers and scale to doubles
	  rather than looping on doubles and scaling to get integers.

Wed Jul 04 13:01:11 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: If the NumberValueRangeProcessor
	  string encodings don't sort the same way, there's no need to report
	  the string encodings in the error message as they are written to
	  "tout" just before, along with the respective numbers they came
	  from.  The string encodings can contain control characters, so are
	  liable to corrupt the test failure message.

Wed Jul 04 12:25:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/valuerangeproc.cc: Fix encoding of extremely large, negative,
	  non-IEEE representation to be -INFINITY, not +INFINITY.  Thanks
	  to Simon Tatham for pointing this out.
	* include/xapian/queryparser.h: Add a documentation comment note
	  that zero and -zero will be transformed to the same value.

Wed Jul 04 10:09:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/valuerangeproc.cc: Change encoding used for doubles to a much
	  more compact scheme, and add support for +-INFINITY.  Also, some
	  other tweaks to avoid unnecessary computation.
	* tests/queryparsertest.cc: Update test cases to expect new
	  encoding of doubles, and add values for INFINITY and DBL_MAX and
	  some other special numbers to the list of numbers that are
	  specifically checked.

Wed Jul 04 03:29:10 BST 2007  Olly Betts <olly@survex.com>

	* api/matchspy.cc,include/xapian/matchspy.h,tests/api_wrdb.cc:
	  Category score now explicitly weights for having nearer the
	  requested number of categories.  Category score is now normalised
	  so values should be roughly comparable between different sized
	  collections.  Add untested code to build ranges.

Wed Jul 04 00:48:07 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add new "--no-renumber" option to preserve
	  document ids from source databases.  Fix bug in change to add
	  support for spelling and synonym tables which was preventing any
	  renumbering from happening!

Wed Jul 04 00:25:52 BST 2007  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,tests/api_wrdb.cc: Fix bug in
	  inmemory backend - using replace_document() to add a document with a
	  specific document id above the highest currently used would create
	  empty documents for all document ids in between.

Tue Jul 03 09:27:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note that protection level declarations in classes
	  and structs should only be indented by 2 spaces.

Tue Jul 03 03:53:11 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/matchspy.cc,include/xapian/matchspy.h,
	  tests/api_wrdb.cc: Add MatchSpy method to score how good a
	  categorisation is.

Tue Jul 03 01:24:19 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Replace `#include <xapian/stem.h>'
	  with forward declaration of Stem.

Tue Jul 03 01:14:12 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/errorhandler.h: Replace `#include <xapian/error.h>'
	  with forward declaration of Error.
	* api/errorhandler.cc: Now needs to explicitly `#include
	  <xapian/error.h>'.

Tue Jul 03 01:08:30 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/dbfactory.h: Replace `#include <xapian/database.h>'
	  with forward declarations of Database and WritableDatabase.

Tue Jul 03 00:59:57 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Remove `#include <xapian/error.h>'.

Mon Jul 02 23:25:55 BST 2007  Olly Betts <olly@survex.com>

	* include/Makefile.mk,include/xapian.h,include/xapian/matchspy.h,
	  tests/api_wrdb.cc: Implement "MatchSpy" class to tally values
	  in matching documents.

Mon Jul 02 18:15:18 BST 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h: Fix last change to
	  preserve ABI compatibility.

Mon Jul 02 17:52:10 BST 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
	  include/xapian/enquire.h,matcher/multimatch.cc,net/remoteserver.cc,
	  tests/api_db.cc: Add support for a "matchspy" - a MatchDecider which
	  is documented to be tested on ever candidate document.  We plan to
	  optimise the current matchdecider to be used as little as possible.

Mon Jul 02 17:35:12 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Enhance matchfunctor1 to test that the functor
	  returns ALL matching documents, not just that all documents returned
	  match.

Mon Jul 02 16:36:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/omassert.h: Fix to avoid warning in gcc-snapshot; use
	  do{}while(0) to protect assertions, and remove the old "if (a) {}
	  else {fail}" constructions which tried to do the same job.

Mon Jul 02 14:56:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-inspect.cc: Add missing #include of <stdio.h> - fixes
	  gcc-2.95 compilation.

Mon Jul 02 14:54:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/termgenerator_internal.h: Fix for gcc-2.95
	  compilation.

Mon Jul 02 14:09:22 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/valuerangeproccompat.cc,
	  include/xapian/queryparser.h: Put the new NumberValueRangeProcessor
	  in a sub-namespace which we then import it from.  Restore the old
	  NumberValueRangeProcessor implementation inside the library so that
	  it is available to code linked against 1.0.0 or 1.0.1 to keep ABI
	  compatibility.

Sun Jul 01 15:32:30 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Clearer description of
	  NumberValueRangeProcessor.  Don't document the number format in
	  terms of strtod() - that's a bug, not a feature we want to be tied
	  to.
	* include/xapian/query.h,include/xapian/queryparser.h: Use "@a" not
	  "\a" for consistency with existing usage.

Sun Jul 01 10:09:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/localmatch.cc: When registering a term, check if it's
	  empty, and if so use the document count as the term frequency,
	  rather than calling the database to get the term frequency of an
	  empty term (most database backends have an assertion that the
	  term is not empty, and an empty term isn't a valid parameter to
	  pass to get_termfreq() anyway).
	* matcher/multimatch.cc: For MatchAll queries, the "" term will not
	  be found in the termlist of the top document, so check if a ""
	  term is present in the query, and use it to increase the
	  percent_scale if so.  This fixes an Assertion which checked that
	  percent_scale was not 0.
	* tests/api_db.cc: Add test_matchall1() which tests running a query
	  with a MatchAll query.
	* tests/api_nodb.cc: Rename test_emptyquery1 and test_emptyquery2
	  to test_emptyquery2 and test_emptyquery3, respectively.  There
	  was already a (different) test_emptyquery1 in api_anydb.cc.

Sat Jun 30 18:04:06 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Write `2.0' rather than `(double)2'.

Sat Jun 30 16:12:49 BST 2007  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Fix typo.  Fix ".. note:" to ".. note::" so
	  it appears visibly in the HTML output rather than in an HTML
	  comment!

Sat Jun 30 15:14:33 BST 2007  Olly Betts <olly@survex.com>

	* api/omdocument.cc,common/document.h,include/xapian/document.h:
	  Add Xapian::Document::get_docid() method.

Sat Jun 30 04:00:57 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If there's only one term in the query (a
	  pretty common case) we don't need to look at the top document's
	  termlist to determine that it matches all the query terms.

Sat Jun 30 00:37:09 BST 2007  Olly Betts <olly@survex.com>

	* INSTALL: Add note that zlib must be installed before you can build
	  Xapian.

Fri Jun 29 22:40:58 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/: If doccount == lastdocid, all document ids up to
	  lastdocid are used, so we provide a special really efficient version
	  implementation of iterating all documents for this common case for
	  flint.

Fri Jun 29 00:39:04 BST 2007  Olly Betts <olly@survex.com>

	* common/stringutils.h: Add startswith() and endswith() overloads
	  which take a single character.
	* backends/flint/flint_spellingwordslist.cc,bin/xapian-inspect.cc:
	  Use new forms.
	* backends/flint/flint_spellingwordslist.cc: Fix comment typo.

Thu Jun 28 21:43:49 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spellingwordslist.cc: Another begins_with()
	  which I somehow missed.

Thu Jun 28 19:51:03 BST 2007  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc,backends/flint/flint_alltermslist.cc,
	  backends/flint/flint_synonym.cc,
	  backends/inmemory/inmemory_alltermslist.cc,
	  backends/quartz/quartz_alltermslist.cc,
	  backends/quartz/quartz_metafile.cc,bin/xapian-inspect.cc,
	  common/stringutils.h,tests/harness/testsuite.cc: Rename
	  begins_with() to startswith() and ends_with() to endswith() for
	  consistency with Python string operations.

Thu Jun 28 18:49:50 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Don't put a Z prefix on terms if the
	  stemmer is "none", which matches what TermGenerator generates.

Thu Jun 28 02:22:04 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Don't SEGV when Query::MatchNothing is used
	  with OP_AND_NOT (fixes bug#176).
	* tests/api_nodb.cc: Add regression test emptyquery2.
	* AUTHORS: Thank bug reporter (Krzysztof Klemm).

Wed Jun 27 13:05:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Updated.

Wed Jun 27 13:04:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* examples/copydatabase.cc: Add support for copying the spelling
	  data.

Wed Jun 27 12:46:54 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Updated.

Wed Jun 27 12:13:50 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-check.cc: Check spelling and synonym Btrees.

Wed Jun 27 12:10:47 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add merging for spelling and synonym tables.

Wed Jun 27 12:09:34 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc: Fix PrefixCompressedStringItor to
	  not ignore the last entry.
	* tests/api_wrdb.cc: Regression test (spell4).

Wed Jun 27 11:51:10 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Remove bogus comment.

Wed Jun 27 04:12:56 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.h: Make FlintCursor::after_end() const.

Tue Jun 26 22:31:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Add test_spell3(), which tests spelling
	  correction with multi databases, and the results of the iterator
	  from Database::spellings_begin() with single and multi databases.

Tue Jun 26 20:51:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omtermlistiterator.cc: Handle pruning, so that multi-database
	  spelling word iterators work.  Pruning should arguably always
	  have been handled, but it's never been possible for the TermList
	  passed to TermIterator to prune before, so it's not been an
	  issue.

Tue Jun 26 20:50:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_spellingwordslist.h: Don't bother testing
	  whether we found an entry which was exactly "W" - if we do, the
	  database is corrupt, but the best recovery strategy would just be
	  to continue at the next matching entry.

Tue Jun 26 20:26:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Remove mistaken skip_to("W") - should be done
	  by open_spelling_wordlist() rather than here.
	* backends/flint/flint_spellingwordslist.h: Only call
	  cursor->prev() if find_entry("W") finds an entry.

Tue Jun 26 17:46:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_alltermslist.cc,
	  backends/flint/flint_spellingwordslist.cc,
	  backends/flint/flint_synonym.cc: Remove calls to abort() which
	  are followed immediately by an Assert() which checks the same
	  condition.

Tue Jun 26 17:26:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Add spellings_begin() and
	  spellings_end(), to iterate through the spelling correction
	  target words.
	* api/omdatabase.cc: Implement spellings_begin(), using the newly
	  added FreqAdderOrTermList to join the spellings lists.
	* common/database.h,backends/database.cc: Add
	  open_spelling_wordlist() to get iterator of spelling targets, if
	  any, with default implementation which returns NULL.
	* backends/flint/flint_database.h,backends/flint/flint_database.cc:
	  Implement open_spelling_wordlist() for flint.
	* backends/flint/flint_spelling.h: Make merge_changes() public, so
	  it can be called when a writable database needs to open a
	  spelling wordlist.
	* backends/flint/flint_spellingwordslist.h,
	  backends/flint/flint_spellingwordslist.cc: New files,
	  implementing an iterator over the spelling targets.

Tue Jun 26 17:25:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/ortermlist.h,expand/ortermlist.cc: Add a
	  "FreqAdderOrTermList", which adds the term frequencies of the
	  sublists, rather than requiring that they're equal for terms
	  which are in both.

Tue Jun 26 17:22:03 BST 2007  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Update to mention spelling and synonym tables,
	  and to document optional tables more clearly.

Tue Jun 26 16:23:25 BST 2007  Olly Betts <olly@survex.com>

	* tests/termgentest.cc: Add feature test for TermGenerator spelling
	  integration.

Tue Jun 26 16:14:56 BST 2007  Olly Betts <olly@survex.com>

	* tests/termgentest.cc: Fix comment paste-o.

Tue Jun 26 16:11:11 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc,
	  queryparser/termgenerator_internal.cc,
	  queryparser/termgenerator_internal.h: Add support for generating
	  spelling data to TermGenerator class.

Tue Jun 26 15:22:12 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Don't skip "empty" source databases, as they
	  may have spelling and/or synonym data.  Warn if more than one source
	  database has spelling data and ignore all but the first.  Similarly
	  warn and ignore for synonym data.

Tue Jun 26 13:52:15 BST 2007  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Fix code which extracts the leafname to
	  handle a trailing directory separator.
	* examples/copydatabase.cc: Copy synonym data across.  Print warning
	  that spelling data isn't copied (as there's no API to access it
	  currently).

Tue Jun 26 13:21:13 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix to compact spelling and synonym tables.

Tue Jun 26 02:20:50 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Fix randomly indented line.

Tue Jun 26 02:20:01 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Change parameter name for
	  Document::get_value() to match other parameter names in the class.

Tue Jun 26 02:19:16 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: FLAG_AUTO_MULTIWORD_SYNONYMS now
	  implies FLAG_AUTO_SYNONYMS.

Tue Jun 26 02:18:02 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test for a single word synonym in
	  multi-synonym mode.

Tue Jun 26 02:08:47 BST 2007  Olly Betts <olly@survex.com>

	* common/ortermlist.h,queryparser/termgenerator_internal.h: Fix
	  warnings from Intel's C++ compiler.

Tue Jun 26 01:45:09 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Snapshots and releases are now bootstrapped with libtool
	  1.5.24, which includes all the patches we were applying on top of
	  1.5.22.
	* HACKING: Expand note about preferring pre-increment to
	  post-increment to mention preferring it to adding one, and to cover
	  decrementing too.

Tue Jun 26 01:34:41 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc: Fix bug appending spelling data to
	  an existing trigram.

Tue Jun 26 01:34:07 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Fix handling of exceptions during
	  commit.

Mon Jun 25 17:01:40 BST 2007  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Update for Unicode spelling correction.

Mon Jun 25 15:41:43 BST 2007  Olly Betts <olly@survex.com>

	* api/editdistance.cc,api/editdistance.h,api/omdatabase.cc:
	  Convert to UTF-32 before calculating edit distances.
	* tests/api_wrdb.cc: Add test coverage for Unicode spelling
	  correction.

Mon Jun 25 14:03:34 BST 2007  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Remove tests for removed method
	  QuartzPostList::get_collection_freq().

Mon Jun 25 12:32:07 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc: Replace abort() with exception
	  throwing.

Mon Jun 25 03:01:20 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Track the fd used to communicate
	  with a xapian-tcpsrv child process so we can close it when we reap
	  the child pid.

Mon Jun 25 02:44:04 BST 2007  Olly Betts <olly@survex.com>

	* docs/valueranges.rst: Fix bad RST markup.

Sun Jun 24 23:24:26 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Fix memory leak in test harness
	  launching of xapian-tcpsrv so that "apitest -b remotetcp" now passes
	  under valgrind.

Sun Jun 24 19:39:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/valueranges.rst: Add documentation for the
	  NumberValueRangeProcessor, now that it is fixed.

Sun Jun 24 14:29:06 BST 2007  Olly Betts <olly@survex.com>

	* backends/remote/net_postlist.cc,backends/remote/net_postlist.h:
	  Move NetworkPostList virtual methods out of the header.  Move the
	  constructor into the header, since that can be inlined.

Sun Jun 24 14:15:43 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/,backends/multi/multi_postlist.cc,
	  backends/multi/multi_postlist.h,backends/quartz/,
	  backends/remote/net_postlist.cc,backends/remote/net_postlist.h,
	  backends/remote/remote-database.cc,common/emptypostlist.h,
	  common/postlist.h,common/remote-database.h: For Flint and Quartz,
	  refactor so we no longer create a postlist just to find the termfreq
	  or collection frequency.  These were the only places which used
	  PostList::get_collection_freq(), so eliminate it (bug#124).

Sun Jun 24 09:40:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* msvc/genversion.pl: Add a script to generate the version.h file
	  for MSVC builds by parsing configure.ac to extract the version
	  number, and then performing the appropriate substitutions on
	  msvc/version.h.in.  Shouldn't be used for tarball builds (because
	  version.h already exists) or for builds which use configure.

Sun Jun 24 02:25:38 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: The check_at_least parameter to
	  Enquire::get_mset() is now handled in a more efficient way - no
	  extra memory is now required, and CPU overhead should be reduced
	  (bug#174).

Sun Jun 24 02:00:07 BST 2007  Olly Betts <olly@survex.com>

	* docs/synonyms.rst,docs/Makefile.am: New "topic" document describing
	  synonym support.
	* docs/Makefile.am: HTML documentation generated from RST files wasn't
	  being installed.

Sun Jun 24 00:45:46 BST 2007  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,common/submatch.h,docs/remote_protocol.html,
	  matcher/,net/remoteserver.cc: Pass check_at_least to the remote
	  server to reduce the amount of work required to produce the match
	  on the remote server, and also reduce the serialised size of the
	  returned MSet.

Sun Jun 24 00:17:18 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: More check_at_least tests.

Sat Jun 23 20:02:48 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,tests/api_wrdb.cc: Add multi-database support
	  for synonyms.

Sat Jun 23 18:50:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h: Tiny fix to a documentation comment.

Sat Jun 23 17:35:37 BST 2007  Olly Betts <olly@survex.com>

	* common/ortermlist.h,expand/ortermlist.cc: Comment out unused method
	  OrTermList::get_collection_freq().  The same dummy implementation
	  is provided by the parent class (TermList).

Sat Jun 23 17:07:40 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,backends/flint/,
	  common/database.h,include/xapian/database.h,tests/api_wrdb.cc:
	  Implement Database::synonym_keys_begin() to allow iteration over all
	  the terms for which synonyms have been added.

Sat Jun 23 04:19:54 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix handling of check_at_least parameter -
	  we weren't discarding matches above the requested MSet size
	  correctly.
	* tests/api_anydb.cc: Add regression test checkatleast2.

Sat Jun 23 03:00:45 BST 2007  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Document synonyms.

Sat Jun 23 02:50:55 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Unapply commented out fragments
	  towards supporting '~' on phrases, which I didn't mean to apply.

Sat Jun 23 02:25:32 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.lemony,
	  tests/queryparsertest.cc: Add support for synonym operator ('~')
	  to the QueryParser.

Sat Jun 23 01:52:51 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix two bugs in the query parser -
	  now '+' and '-' work on bracketed subexpressions as documented.
	* tests/queryparsertest.cc: Add regression tests.

Sat Jun 23 01:47:30 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Use "using namespace std;".

Fri Jun 22 18:48:21 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_synonym.cc: Fix iteration of unflushed
	  synonyms.

Fri Jun 22 18:21:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Fix typo.

Fri Jun 22 18:02:21 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,backends/flint/,
	  common/database.h,include/xapian/database.h,
	  include/xapian/queryparser.h,queryparser/queryparser.lemony:
	  Add support for storing synonyms for terms in a new optional Btree
	  table in flint databases, and using them in the QueryParser.
	* tests/queryparsertest.cc: Feature tests for synonyms.

Fri Jun 22 17:58:37 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Removed superfluous "private:" in
	  class State.  Make State::get_database() const.

Fri Jun 22 17:58:15 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Make sure .flint subdirectory exists.

Fri Jun 22 17:52:53 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Don't die with an error if the user tries to
	  move forward twice from the end.  Also, make "prev" from the end
	  work.

Fri Jun 22 17:47:36 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: If an input token has a yyminor, report
	  its name in the debug output.

Fri Jun 22 14:47:17 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Updated with changes since 1.0.1.

Thu Jun 21 21:12:49 BST 2007  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remoteprotocol.h,
	  common/remoteserver.h,net/remoteserver.cc: Protocol version
	  increased to 30.2.  This difference from 30.1 is that
	  MSG_DELETEDOCUMENT now send REPLY_DONE to allow DocNotFoundError
	  to be propagated.  MSG_DELETEDOCUMENT now has a new number and
	  the old number for MSG_DELETEDOCUMENT is now
	  MSG_DELETEDOCUMENT_PRE_30_2 which is handled by the server so
	  that older clients will continue to work.
	* docs/remote_protocol.html: Update.
	* tests/api_wrdb.cc: Add regression test for DocNotFoundError bug.

Thu Jun 21 17:22:53 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,tests/queryparsertest.cc,docs/spelling.rst: Add
	  support for spelling correction when using multiple databases.

Thu Jun 21 16:15:22 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add feature tests for correcting spelling
	  errors in the QueryParser.

Thu Jun 21 15:01:00 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Check the edit distance 3 words are found if
	  asked for.

Thu Jun 21 14:59:15 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,common/omdebug.h: Add some debug tracing for the
	  spelling correction.

Thu Jun 21 13:45:12 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc,docs/spelling.rst: Generate
	  "bookends" for four character words too, so that we suggest
	  "fuor" -> "four".
	* tests/api_wrdb.cc: More testcases.

Thu Jun 21 13:08:07 BST 2007  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Assorted minor improvements.  Add note about not
	  detecting single character substitutions in two character words.

Thu Jun 21 13:02:57 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Check cases for single edits to a two character
	  word work as expected.

Thu Jun 21 04:13:46 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Add test cases to check we find all single edit
	  errors for a three letter word.

Thu Jun 21 04:08:11 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.h: Now that
	  FlintSpellingTable::merge_changes() is only called from within the
	  class, make it a private method.  discard_changes() is only used
	  once, and from within the class, so just inline it as that's
	  clearer.  Make the comment about the overridden methods a doxygen
	  grouping comment,

Thu Jun 21 04:02:51 BST 2007  Olly Betts <olly@survex.com>

	* docs/spelling.rst: Update to mention "bookend" bigrams.

Thu Jun 21 03:56:52 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc: Generate "bookend" spelling
	  entries for two and three letter terms, consisting of the prefix 'B'
	  followed by the first and last letters.  This allows us to handle
	  substitution or deletion of the middle character of a three letter
	  word, or insertion in the middle of a two letter word.

Thu Jun 21 03:18:28 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Some doubles in the list which
	  value_range_serialise1 tests have the same values on some platforms,
	  so test that adjacent numbers and their string counterparts compare
	  the same way rather than that both are "<".

Thu Jun 21 02:46:01 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Add "spell1" - a simple feature test for spelling
	  based on Richard's python test.  Use TESTCASE() and END_OF_TESTCASES
	  macros.

Wed Jun 20 21:57:01 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: WritableDatabase::delete_document()
	  no longer cancels pending changes if the document doesn't exist.
	* backends/quartz/quartz_database.cc: Same fix.

Wed Jun 20 20:53:52 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: We may now need to flush even if
	  there have been no documents added/replaced/deleted, as there may be
	  changes to the spelling table.

Wed Jun 20 20:46:30 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Fix a function name in the debug
	  loggging.

Wed Jun 20 20:39:43 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc: Fix FlintSpellingTermList not to
	  report at_end() one entry too early.

Wed Jun 20 19:21:45 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Don't touch <dbdir>/log for flint
	  as flint doesn't create a log like quartz does.

Wed Jun 20 17:10:29 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_spelling.h:
	  Push special handling for spelling_table into the FlintSpellingTable
	  class.  This fixes "is_modified()" to take into account unflushed
	  changes held in memory.

Wed Jun 20 13:59:01 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Don't use RETURN() in methods which return void.

Wed Jun 20 11:56:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/editdistance.cc: Change an Assert in is_transposed() (which
	  fails in some cases) to a test, since it seems legitimate that
	  a value of pos2 <= 0 might be supplied to the function (though
	  the answer will always be "false" in that case).

Wed Jun 20 02:38:51 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Fix two incorrect return types in debug logging.

Wed Jun 20 02:14:40 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Add missing implementations of
	  WritableDatabase::add_spelling() and
	  WritableDatabase::remove_spelling().

Wed Jun 20 00:58:46 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.h: Make the maps private.

Wed Jun 20 00:05:15 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Snapshots now bootstrapped with automake 1.10.

Wed Jun 20 00:03:42 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_spelling.cc,common/Makefile.mk,
	  expand/Makefile.mk,expand/ortermlist.h: Move ortermlist.h from
	  "expand/" to "common/" so we can included it from flint_spelling.cc
	  without a relative path.

Tue Jun 19 22:41:08 BST 2007  Olly Betts <olly@survex.com>

	* api/,backends/database.cc,backends/flint/,common/database.h,
	  docs/Makefile.am,docs/spelling.rst,include/xapian/database.h,
	  include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Add support for spelling correction.

Tue Jun 19 19:18:40 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_table.cc,
	  backends/flint/flint_table.h: Add new method
	  FlintTable::key_exists() so we don't need to create a cursor to
	  check if a key exists in FlintDatabase::term_exists() (the other
	  alternative previously was to read the key and tag and ignore the
	  tag, but that could involve reading more blocks if the tag is
	  long, and it could involve uncompressing the tag too).

Tue Jun 19 17:49:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Cast the input to pow() to a double, to
	  fix a problem on windows (which has several versions of pow(),
	  and the version taking a float was being used by default,
	  resulting in some of the tests overflowing the range of float).

Tue Jun 19 17:48:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/valuerangeproc.cc: Fix assertions, so that the code works
	  with assertions turned on.

Tue Jun 19 12:35:46 BST 2007  Olly Betts <olly@survex.com>

	* matcher/branchpostlist.cc: Add missing #include <config.h>.
	* matcher/branchpostlist.cc,matcher/branchpostlist.h: Move other
	  virtual method definitions out of the header.

Mon Jun 18 21:41:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/branchpostlist.h: Add missed copyright statement.

Mon Jun 18 21:36:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/branchpostlist.cc,matcher/branchpostlist.h: Add get_wdf()
	  method to BranchPostList (which just sums the wdf, which is
	  useful for a synonym postlist, which is the only situation in
	  which this will be called).  Add the method definition in a
	  separate file, as per the comment I just added to HACKING.
	* matcher/Makefile.mk: Add branchpostlist.cc

Mon Jun 18 21:33:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note about virtual methods (saying that the
	  shouldn't be defined in header files).

Mon Jun 18 20:15:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/phrasepostlist.cc,matcher/phrasepostlist.h,
	  matcher/exactphrasepostlist.cc,matcher/exactphrasepostlist.cc:
	  Add get_wdf() methods to NearPostList, PhrasePostList and
	  ExactPhrasePostList - these use a very rough approximation (but
	  there's a big long comment justifying it).

Mon Jun 18 18:38:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/mergepostlist.cc,matcher/mergepostlist.h: Add copyright
	  statements for previous commit (and update license while I'm at
	  it).

Mon Jun 18 18:24:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/mergepostlist.cc,matcher/mergepostlist.h: Add get_wdf()
	  method to MergePostList (just passes through the value from the
	  current postlist).  Not currently needed, but the expected
	  behaviour is obvious, and this will be needed if there's a
	  synonym postlist higher in the query tree (when synonym postlists
	  are implemented).  Also, correct a documentation comment typo.

Mon Jun 18 13:09:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/valuerangeproc.cc: Cast the first parameter to ldexp() to
	  double to fix compilation on some platforms, and add a few more
	  explanatory code comments to
	  NumberValueRangeProcessor::string_to_float()

Mon Jun 18 11:33:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/valuerangeproc.cc: Add static methods to
	  NumberValueRangeProcessor to serialise and unserialise doubles.
	  Change the code which tests a term for being a number to use
	  strtod, and accept any string which strtod thinks is a number.
	  If NumberValueRangeProcessor accepts a range, it now converts the
	  begin and end values to strings using the serialise method.
	  Also, expand some of the code comments.
	* include/xapian/queryparser.h: Add documentation comments to
	  NumberValueRangeProcessor.
	* tests/queryparsertest.cc: Update value_range2_queries to expect
	  new serialised forms in its output.  Update test_qp_value_range3
	  to test a wider range of values (including negative, fractional,
	  and more-than-single-digit).

Mon Jun 18 03:36:38 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix comment typo, and add brackets
	  to make intended precedence clearer.

Mon Jun 18 03:36:04 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Tweak wording of a couple of
	  documentation comments.

Mon Jun 18 02:00:31 BST 2007  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Mention "AND NOT" as an alternative way to
	  write "NOT".

Mon Jun 18 01:43:00 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Adjust precedence of boolean
	  operators to match those in maths and programming languages.
	  "NOT" now binds as tightly as "AND" (previously "AND NOT" would
	  bind like "AND", but just "NOT" would bind like "OR"!)  Also
	  "XOR" now binds more tightly than "OR", but less tightly than
	  "AND" (previously it bound just like "OR").
	* tests/queryparsertest.cc: Add testcases for the new behaviour.

Mon Jun 18 01:16:18 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Better test coverage of handling of random
	  double quotes in queries.

Sun Jun 17 16:17:34 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Don't call operator++(0) from operator()
	  as it does more work than we need.

Sun Jun 17 14:14:16 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-inspect.cc: Fix so that Ctrl+D doesn't cause an infinite
	  loop!

Sat Jun 16 22:19:11 BST 2007  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,bin/xapian-inspect.cc,xapian-core.spec.in:
	  New utility 'xapian-inspect' allowing interactive inspection of
	  key/tag pairs in a flint Btree.  Useful for development and
	  debugging, and an approximate replacement for quartzdump.

Sat Jun 16 17:03:57 BST 2007  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Update for
	  doxygen 1.5.2 (using "doxygen -u").

Sat Jun 16 10:17:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am: The "check-none" target should run all the
	  tests which don't need a database, not just those in apitest: add
	  internaltest, stemtest, queryparsertest and termgentest to the
	  list of tests it runs.

Sat Jun 16 09:36:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,bin/Makefile.mk,examples/Makefile.mk: Work around an
	  apparent bug in automake which causes the entries in .libs
	  subdirectories generated for targets of bin_PROGRAMS not to be
	  removed on make clean.  (This was causing make distcheck to
	  fail.)

Sat Jun 16 04:42:16 BST 2007  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,tests/Makefile.am,tests/apitest.cc,
	  tests/harness/backendmanager.cc,tests/harness/backendmanager.h: In
	  the testsuite, rename the "void" pseudo-backend to "none" to more
	  clearly reflect what it is.  And rename the "remote" backend to
	  "remoteprog", to better differentiate it from "remotetcp".
	* HACKING: Fix error - "apitest -b=flint" doesn't work - it must be
	  "apitest -bflint".

Sat Jun 16 04:40:28 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Now using doxygen 1.5.2.

Sat Jun 16 02:08:20 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Fix to build with older zlib.  Not
	  hugely important as zlib security fixes mean any well maintained
	  box will be running a recent zlib, but the fix is trivial.

Fri Jun 15 19:39:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Document the new check-void, check-inmemory,
	  check-remoteprog and check-remotetcp targets.

Fri Jun 15 19:34:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am,tests/Makefile.am: Add check-void, check-inmemory,
	  check-remoteprog and check-remotetcp targets, to allow the tests
	  for any of the backends to be performed in isolation.

Fri Jun 15 19:29:19 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,xapian-core.spec.in,xapian.spec.in:
	  Rename xapian.spec to xapian-core.spec to match tarball name.
	  Append the user name to BuildRoot.

Fri Jun 15 14:51:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/progclient.cc: Open the file handle pointing to /dev/null as
	  O_WRONLY instead of O_RDONLY: doesn't affect whether the test
	  passes (since nothing gets written to stderr in theory anyway),
	  but makes more sense.

Fri Jun 15 13:21:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/progclient.cc: Better fix - rather than leaving stderr open,
	  we close it, and then reopen it pointing to /dev/null.

Fri Jun 15 12:55:07 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/progclient.cc: Don't close stderr in the child before we call
	  execve() - with this change, apitest passes under valgrind with
	  the remote database backend: before it, the child seemed to be
	  exiting without writing anything to the socket, causing the test
	  to fail with a NetworkError (due to an unexpected EOF).

Thu Jun 14 23:47:52 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Replace duplicated code with calls
	  to existing method set_revision_number(new_revision).

Thu Jun 14 18:51:03 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Stop including <sys/utsname.h>
	  which we don't use here.

Thu Jun 14 18:22:24 BST 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Fix typo from copy&paste.

Thu Jun 14 16:46:45 BST 2007  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: Update for the "lazy table" changes.  Correct
	  the description of xapian-compact --multipass (only the postlist
	  tables are merged in multiple passes), correct description of how
	  to use xapian-check on a single table (no trailing '.' should be
	  specified).  Change the "how to upgrade 0.9.x flint databases" to
	  talk about 1.0.y rather than 1.0.0.

Thu Jun 14 16:25:55 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/: The value and position tables are now only created
	  if there is anything to add to them.  So if you never use document
	  values, there's no value_DB, value.baseA, or value.baseB.  This
	  means the table doesn't need to be opened for searching (saving a
	  file handle) and when flushing changes, we don't need to update
	  baseA/baseB just to keep the revisions in step.  The flint database
	  version has been increased, but the new code will happily open and
	  read/update flint databases from Xapian 1.0.0 and 1.0.1.
	* bin/xapian-check.cc,bin/xapian-compact.cc: Update to handle
	  databases without value and/or position tables.
	* tests/testdata/flint-1.0.1/: Empty example of a flint 1.0.1 format
	  database.
	* tests/Makefile.am,tests/api_db.cc: Add check that a flint 1.0.1
	  format database can be opened.

Wed Jun 13 22:40:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/queryparser.h: Document set_stemmer() and
	  set_stemming_strategy() better - in particular, make it clear
	  that the default value for the stemming strategy is STEM_NONE.

Wed Jun 13 17:16:52 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Wrap overlong line.

Wed Jun 13 16:47:07 BST 2007  Olly Betts <olly@survex.com>

	* msvc/version.h.in: Remote backend is now supported in the MSVC
	  build.

Wed Jun 13 04:18:51 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Eliminate dont_close_handle as it's always false.

Wed Jun 13 02:53:28 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc,backends/flint/flint_btreebase.h:
	  Remove unused FlintTable_base constructor.

Tue Jun 12 18:27:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Add fix to allow compilation on
	  OpenBSD, which uses off_t instead of uLong for total_out in
	  zlib.h.  Remove Assert() which is followed by a better check of
	  the same condition.
	* AUTHORS: Add Julien Touche for help with this fix.

Tue Jun 12 13:34:59 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/unixcmds.cc: On unix builds, set access permissions
	  on copied directories to allow writes.  This fixes make
	  distcheck, which was failing on tests because the copied
	  directory was set to read-only, causing the later "rm -rf"
	  command to fail.

Mon Jun 11 20:10:26 BST 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Fix typo.

Mon Jun 11 20:08:42 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Ship and install internals.html.

Mon Jun 11 17:46:04 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/doxygen_full_conf.in: Disable generation of
	  PDF version of doxygen-collated documentation of internals.  It
	  keeps overflowing TeX limits and it seems likely that most people
	  would prefer the HTML version of this anyway.

Mon Jun 11 17:45:12 BST 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Remove duplicated code.

Mon Jun 11 03:55:53 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Probably the final update for 1.0.1.

Mon Jun 11 03:47:37 BST 2007  Olly Betts <olly@survex.com>

	* examples/simpleindex.cc: Tweak the logic to be clearer.

Sun Jun 10 21:59:21 BST 2007  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Drop automake requirement to 1.8.3 to allow
	  RPM spec file to work on SLES 9.

Sun Jun 10 21:48:51 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Bump version to 1.0.1 and LIBRARY_VERSION_INFO to
	  15:0:0.

Sun Jun 10 21:46:57 BST 2007  Olly Betts <olly@survex.com>

	* xapian.spec.in: Add "# norootforbuild" comment which SuSE's build
	  scripts look for.  Rename "Source0:" to "Source:" as there's only
	  one tarball now.  Add gcc-c++ and zlib-devel to "Build-Requires:".

Sun Jun 10 21:43:45 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: More updates.

Sun Jun 10 18:01:19 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc,generate-exceptions.in: Make Error::error_string member
	  std::string rather than char * to avoid problems with double free()
	  with copied Error objects.  Also, Error::get_description() now
	  converts my_errno to error_string if it hasn't been already.
	* tests/internaltest.cc: Add regression tests for both bugs.

Sun Jun 10 13:33:21 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: New testcase in allterms6.

Sun Jun 10 13:20:37 BST 2007  Olly Betts <olly@survex.com>

	* xapian-config.in: Add special case check for host_os matching linux*
	  or k*bsd-gnu since vanilla libtool doesn't identify them as needing
	  link_all_deplibs_CXX=no.

Sun Jun 10 03:32:54 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Sun Jun 10 02:14:58 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Sat Jun 09 17:28:32 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Add the unstem entry for boolean
	  prefixed terms in Term::make_term() as we do for other terms.

Sat Jun 09 17:27:55 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Replace reference to Xapian "1.0" with
	  "1.0.0".

Sat Jun 09 17:12:44 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser_internal.h:
	  Factor out the code which actually parses a term into a separate
	  method.

Fri Jun 08 23:31:23 BST 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Distribute tests/testdata/flint-0.9.9/.

Fri Jun 08 19:20:36 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Fri Jun 08 18:55:43 BST 2007  Olly Betts <olly@survex.com>

	* examples/simplesearch.cc: Report "Matches 1-<N>:".

Fri Jun 08 18:46:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omenquire.cc: Fix issue brought to my attention by Enrico
	  Zini: if an uninitialised database is supplied to Enquire,
	  performing a search will cause a segfualt.  It isn't completely
	  clear whether using an uninitialised database should cause an
	  error, or whether the search should return an empty result list,
	  but for ease of implementation, and to avoid application errors
	  going unnoticed, I've made Enquire's constructor report an
	  InvalidArgumentError if the supplied database is uninitialised.
	* include/xapian/enquire.h: Document new exception case, and
	  workaround if you want a search in this situation to return an
	  empty result set, instead of getting an error.
	* tests/api_nodb.cc: Regression test for this fix.
	* AUTHORS: Mention Enrico Zini.

Fri Jun 08 18:33:19 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Fri Jun 08 17:09:22 BST 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Distribute common/stringutils.h.

Thu Jun 07 20:44:36 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: It appears we need to create the target
	  directory for xcopy to behave as we want.

Thu Jun 07 19:34:18 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Fix typo to unbreak testsuite on Windows
	  NT derivatives.

Thu Jun 07 19:02:36 BST 2007  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_alltermslist.cc: Another tweak - don't
	  call map::lower_bound() in the ctor at all.  Also, prevent skip_to()
	  from moving backwards, since that behaviour is user-visible.

Thu Jun 07 18:36:49 BST 2007  Olly Betts <olly@survex.com>

	* common/stringutils.h: New header, providing inline functions
	  begins_with() and ends_with() to check if a std::string has
	  a given prefix or suffix.
	* api/valuerangeproc.cc,backends/flint/flint_alltermslist.cc,
	  backends/inmemory/inmemory_alltermslist.cc,
	  backends/quartz/quartz_alltermslist.cc,
	  backends/quartz/quartz_metafile.cc,tests/harness/testsuite.cc:
	  Make use of begins_with() and ends_with().
	* tests/harness/testsuite.cc: Tidy up guessing of srcdir.  In
	  particular, fix comments to reflect that libtool won't create a
	  wrapper script for the test programs on most platforms (because
	  we now use --no-install when linking).
	* backends/inmemory/inmemory_alltermslist.cc: In the ctor, use
	  std::map::lower_bound() to find the first term matching the
	  given prefix, rather than iterating through from the start of
	  the map.  Also, don't skip deleted terms here, but instead do
	  that in next() - this avoids duplicating code, and the first
	  operation might be skip_to() in which case we can avoid wasting
	  effort.

Thu Jun 07 17:16:12 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Eliminate the QpQuery class and
	  simplify various bits of the code.

Thu Jun 07 14:32:22 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Enhance qp_value_customrange1.

Thu Jun 07 14:31:40 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/index.html,docs/valueranges.rst: Add document
	  describing how to use Xapian::ValueRangeProcessor.

Thu Jun 07 14:16:01 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test of custom ValueRangeProcessor
	  subclass (qp_value_customrange1).

Thu Jun 07 10:01:46 BST 2007  Olly Betts <olly@survex.com>

	* common/serialise.h,tests/harness/testsuite.h: Use XAPIAN_NORETURN()
	  to mark functions which never return.

Thu Jun 07 01:28:00 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update.

Thu Jun 07 01:02:22 BST 2007  Olly Betts <olly@survex.com>

	* examples/simpleexpand.cc: Fix off-by-one error when creating the
	  fake RSet (picked up to 4 documents, not up to 5).

Wed Jun 06 17:17:05 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add documentation comments for
	  ValueRangeProcessor and subclasses (mostly fixes bug#155, but
	  I'd like to add an overview document too).

Wed Jun 06 16:04:08 BST 2007  Olly Betts <olly@survex.com>

	* tests/testdata/flint-0.9.9/: Minimal example of a Flint database
	  from Xapian 0.9.9.
	* tests/api_db.cc: Use a real 0.9.9 flint database instead of faking
	  it by fudging with the "iamflint" file in a current one.
	  flintdatabaseformaterror1 now also checks for opening with the
	  Database ctor as well as with Flint::open().  The writing test from
	  flintdatabaseformaterror1 is now flintdatabaseformaterror2 which
	  additionally tests opening with the WritableDatabase ctor as well as
	  with Flint::open().  The old flintdatabaseformaterror2 is now
	  flintdatabaseformaterror3.

Wed Jun 06 15:44:08 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Don't check for pre-0.6 databases
	  here (since they'll be quartz format anyway - the check is just an
	  overenthusiastic cut-and-paste from quartz).

Wed Jun 06 12:35:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* matcher/valuerangepostlist.cc: Avoid calling db->get_lastdocid()
	  repeatedly in ValueRangePostList::next() - was taking 25% of the
	  time for a particular test case.

Wed Jun 06 12:17:51 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc,tests/harness/unixcmds.h: Add "cp_R()"
	  which does much the same as "cp -R" on Unix.

Wed Jun 06 12:12:50 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/Makefile: New stub makefile for include/xapian.
	* bin/Makefile.mk,examples/Makefile.mk,include/Makefile.mk: Distribute
	  missing stub Makefile and dir_contents files.

Tue Jun 05 16:44:51 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.cc: Back out linger line from r7758.
	  Fix undefined behaviour in cases where a paragraph has <= 2
	  characters.

Mon Jun 04 15:31:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager.cc,tests/harness/index_utils.cc:
	  Revert the recent changes to the indexing code, and also the
	  change from revision r7758 which was intended to fix a problem
	  with eof handling on windows (which is what broke the indexing of
	  etext.txt).  Then, change backendmanager.cc to test "!from.eof()"
	  instead of "from" to check for eof - hopefully this will work on
	  windows - if not, we can investigate further.

Mon Jun 04 13:13:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager.cc: Undo previous patch - only the
	  patch to index_utils.cc was necessary; I mistakenly committed
	  both files I'd been modifying.

Mon Jun 04 09:06:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_db.cc: Add a check to consistency1 that the full mset
	  size is as big as it should be, to make sure that we notice in
	  future if the indexing goes wrong again.

Mon Jun 04 08:59:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager.cc,tests/harness/index_utils.cc:
	  Fix the indexing of the testdata, so that the "etext" example is
	  properly indexed (previously, only the first line was being
	  indexed, due to faulty end-of-file handling).  This only affects
	  the "consistency1" test, which now runs a lot slower (but still
	  passes, fortunately).

Fri Jun 01 23:47:42 BST 2007  Olly Betts <olly@survex.com>

	* examples/simpleexpand.cc: Rewrite based on new simplesearch.cc.

Fri Jun 01 00:50:00 BST 2007  Olly Betts <olly@survex.com>

	* examples/simpleindex.cc: Replacement "simpleindex" example which
	  uses the TermGenerator class, which makes for a much smaller and
	  simpler example.  It's also much more typical of what most users
	  will want to do.

Thu May 31 23:01:47 BST 2007  Olly Betts <olly@survex.com>

	* examples/simplesearch.cc: Replacement "simplesearch" example which
	  uses the QueryParser.  That makes for a simpler example, and it's
	  much more typical of what most users will want to do.

Thu May 31 19:31:40 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update.

Thu May 31 19:18:41 BST 2007  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Relax automake requirement to 1.9.2 to allow
	  RPM building on RHEL 4.
	* HACKING: automake 1.10 seems to work fine with Xapian.

Thu May 31 03:04:42 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
	  Check if the docid counter wraps and if it does throw DatabaseError
	  (fixes bug#152).
	* tests/api_wrdb.cc: Add regression test (nomoredocids1).

Thu May 31 02:01:31 BST 2007  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc,backends/remote/remote-database.cc,
	  common/progclient.h,common/remote-database.h,common/tcpclient.h,
	  net/progclient.cc: Stop a non-writable remote database from calling
	  dtor_called() when it is destroyed, since that causes MSG_FLUSH to
	  be sent to the server (fixes bug#149).

Wed May 30 19:47:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/query.h: New accessor method
	  Xapian::Query::Internal::get_parameter().
	* queryparser/queryparser.lemony: Multiple boolean prefixed terms
	  with the same term prefix are now combined with OR before such
	  groups are combined with AND.  Similarly for multiple value ranges
	  on the same value (fixes bug#157).
	* include/xapian/queryparser.h: Document new handling of multiple
	  boolean prefixed terms.
	* tests/queryparsertest.cc: Testcases for new handling of multiple
	  boolean prefixed terms and value ranges.

Wed May 30 14:45:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Update comment about QueryParserError to
	  point out that you'll need to compile conditionally to work with
	  0.9.x

Wed May 30 14:33:29 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update.  Put all the subheadings in the standard order used
	  for previous releases.

Wed May 30 12:58:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/database.h,api/omdatabase.cc,backends/flint/,
	  backends/inmemory/,backends/quartz/,
	  backends/remote/remote-database.cc,
	  common/database.h,common/remote-database.h,common/remoteprotocol.h,
	  net/remoteserver.cc: Add a prefixed form of allterms_begin() and
	  allterms_end(), which allows efficient iteration over only those
	  terms which begin with the given prefix.  Requires bumping the
	  remote protocol minor version number, but doesn't change any
	  database formats.
	* queryparser/queryparser.lemony: Update the wildcard and partial
	  query routines to use the prefixed form of allterms_begin().
	  This fixes the performance problems noted in bug #153.
	* tests/api_db.cc: Add test_allterms6() to test the prefixed form
	  of allterms iterators.

Wed May 30 12:23:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/remote-database.cc,common/remoteprotocol.h,
	  docs/remote_protocol.html,net/remoteserver.cc: Apply patch from
	  Olly (from bug #153) which implements minor version numbers for
	  the remove protocol.  This will allow us to add new features to
	  the protocol in future without forcing all clients to upgrade to
	  exactly the same version as the servers.  Bump the major version
	  to 30, since this is an incompatible change itself, though.

Wed May 30 12:12:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/query.h: Expand documentation of value range
	  query constructor.

Wed May 30 10:28:39 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Improve entry for QueryParserError.

Wed May 30 01:30:35 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/,bin/xapian-compact.cc: Don't uncompress and
	  recompress tags when compacting a database.  This speeds up
	  xapian-compact rather a lot (by more than 50% in my quick test).

Tue May 29 20:58:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/Makefile.mk: Fix multiple target rule for generating
	  the queryparser source files in parallel builds, as described in
	  HACKING, and as done for the SWIG rules in xapian-bindings.
	* queryparser/: Add queryparser_internal.lock and
	  queryparser_internal.stamp to SVN ignores.

Tue May 29 18:30:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Use TEST_STRINGS_EQUAL when comparing
	  queries against their expected output, since this makes it much
	  easier to see the differences.

Tue May 29 18:13:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Bring up-to-date.

Mon May 28 09:27:43 BST 2007  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Fix to compile with GCC 2.95.

Mon May 28 01:28:23 BST 2007  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc: Rewrite to take advantage of
	  being able to iterate over all the documents in a database.

Sun May 27 12:20:03 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h: Improve documentation comments
	  for TermGenerator class.

Sun May 27 12:15:02 BST 2007  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,bin/,examples/,net/tcpserver.cc,
	  tests/api_db.cc,tests/harness/testsuite.cc,tests/harness/testutils.h,
	  tests/queryparsertest.cc,tests/termgentest.cc: Make use of
	  Xapian::Error::get_description(), which improves error reporting
	  in a number of places.
	* tests/harness/testsuite.cc: If we get an exception with a long
	  message in verbose mode, just report the whole message rather than
	  reporting the truncated message followed by the whole message.
	* tests/queryparsertest.cc: Handle Xapian::QueryParserError specially
	  (as we previously handled all Xapian::Error exceptions).  Other
	  Xapian::Error exceptions now report the description not just the
	  message.

Sun May 27 11:33:11 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc,generate-exceptions.in: Add new API method
	  Xapian::Error::get_description() to allow removal of
	  essentially duplicated code in many places.  Also useful for
	  users for the same reason.

Sun May 27 09:56:21 BST 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Add vim modeline to force perl syntax
	  highlighting.

Sat May 26 22:53:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* NEWS: Bring up-to-date.

Sat May 26 22:49:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Fix typo in deprecation list for the
	  bindings pointed out by Thomas Waldmann.

Sat May 26 09:39:36 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Add note about reasons for avoiding std::pair<> with an STL
	  class as one or both members.

Thu May 24 17:28:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/Makefile.mk: $(top_builddir)/queryparser is only
	  required in include path for maintainer mode, so make it so for
	  neatness.

Tue May 22 11:04:04 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/Makefile.mk: Add $(top_builddir)/queryparser to include
	  path for VPATH builds, to fix a problem with depcomp (triggered
	  when compiling with gcc-2.95).
	* NEWS: Keep up to date.

Mon May 21 13:38:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Reduce the range of the test, so that
	  it passes again, to let the autobuilders work and unbreak HEAD.

Mon May 21 10:26:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Remove FIXME from test_qp_flag_partial1:
	  I've checked that the results look correct.  New test
	  test_qp_value_range3, to test the NumberValueRangeProcessors -
	  currently fails because "10" is considered to be between "1" and
	  "2".
	* include/xapian/query.h: Fix typo in documentation comment.

Mon May 21 10:09:34 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Put quotes around strings when reporting
	  a failure in TEST_STRINGS_EQUAL().

Mon May 21 10:08:18 BST 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: New tests serialiseerror1 which checks that
	  the handling of errno/error_string.
	* common/serialise.h: Make unserialise_error externally visible for
	  new test.

Mon May 21 08:40:06 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Update release checklist.

Fri May 18 02:10:39 BST 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Fix grammatical errors in Error::get_errno()
	  deprecation explanation.

Thu May 17 23:51:17 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc: Need <stdlib.h> for free() to build with GCC 4.3
	  snapshot.

Thu May 17 23:11:53 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Fix line wrapping (ok, isn't wasn't final!)

Thu May 17 22:28:44 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Final update before release.

Thu May 17 19:10:27 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Bump version to 1.0.0 and update LIBRARY_VERSION_INFO.

Thu May 17 19:10:11 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Minor wording tweak.

Thu May 17 19:06:34 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Run rst2html with --strict --verbose options to
	  reject .rst files with problems.
	* docs/deprecation.rst: Add more entries gleaned from the NEWS file.

Thu May 17 18:30:01 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update with fixes from Jenny's proof-reading and a few other
	  tweaks.

Thu May 17 18:27:53 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Update.

Thu May 17 18:25:39 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Updates from the tinderbox.

Thu May 17 18:08:13 BST 2007  Olly Betts <olly@survex.com>

	* common/safesysstat.h: Need the 2 argument mkdir() wrapper for Mingw
	  too.  Define S_ISDIR() and S_ISREG() if they aren't already defined
	  rather than conditional on _MSC_VER.

Thu May 17 17:58:43 BST 2007  Olly Betts <olly@survex.com>

	* docs/admin_notes.rst: "flint-check" -> "xapian-check".

Thu May 17 17:46:36 BST 2007  Olly Betts <olly@survex.com>

	* NEWS: Update for Xapian 1.0.0.

Thu May 17 17:41:15 BST 2007  Olly Betts <olly@survex.com>

	* docs/: Update documentation for 1.0.0; add new document describing
	  new term generation strategy as implemented by TermGenerator class;
	  link in "lost" documents to the index page.

Thu May 17 03:54:36 BST 2007  Olly Betts <olly@survex.com>

	* exception_data.pm: Fix to work with Perl 5.6.

Thu May 17 01:20:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/multi/multi_alltermslist.cc: Check that iterators are
	  not at_end() before calling skip_to() on them.

Thu May 17 00:49:03 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc,
	  backends/quartz/btree.cc,common/Makefile.mk,
	  common/msvc_posix_wrapper.cc,common/msvc_posix_wrapper.h: Use
	  msvc_posix_wrapper.h functions for all __WIN32__ builds, not just
	  for MSVC.

Wed May 16 23:55:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc: Fix return type in debug macro in
	  replace_document().

Wed May 16 23:45:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/apitest.cc: Add collfreq and allterms tests to the tests
	  for the remote and remotetcp backends.  They all pass.

Wed May 16 15:11:00 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Need to try -zdll for mingw as well.

Wed May 16 14:45:23 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add two more testcases.

Wed May 16 14:32:46 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Fix
	  double-free on invalid range query.

Wed May 16 10:08:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Add some more test cases to the value
	  range processor.  These currently fail with a SIGSEGV message.

Wed May 16 02:22:17 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Fix handling of stemming of
	  prefixed terms.
	* tests/termgentest.cc: Fix testcases.

Wed May 16 01:54:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Add a test for parsing of capitalised words
	  with a prefix, which currently fails.

Wed May 16 01:09:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
	  a method to get the current document from the term generator.
	  Helps avoid users having to pass around a structure encapsulating
	  the generator and the document assigned to it.

Wed May 16 00:50:07 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add <xapian/output.h>.

Tue May 15 22:46:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Use resize(0) instead of clear(), for g++2.95

Tue May 15 20:25:07 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Add a comment noting why we test
	  __STDC_SECURE_LIB__ even though its an undocumented macro.

Tue May 15 20:14:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Add several more tests - some converted
	  from the query tests, some more initial tests, and some number
	  tests.

Tue May 15 18:31:21 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Revert previous change - we
	  need to generate Zibm and Zpc from text `I.B.M. P.C.' or else a
	  search for `ibm pc' won't match.

Tue May 15 18:22:44 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Sort out stemming of
	  initials.

Tue May 15 18:04:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/termgentest.cc: Add some more tests, and rework the array
	  of tests so that there's just a single string holding any options
	  we want to set for the following tests.

Tue May 15 16:49:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/Makefile.am,tests/termgentest.cc: Add new test file, for
	  testing the term generator.  Only has a single test so far.

Tue May 15 16:20:20 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Make single parameter ctor explicit.

Tue May 15 16:00:24 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Add special handling for
	  acronyms/initialisms, so I.B.M -> term ibm, etc.

Tue May 15 14:07:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
	  a set_termpos() method, too.

Tue May 15 13:54:34 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Document the issue of the monotonic
	  docid counter wrapping around.

Tue May 15 10:58:37 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/termgenerator.h,queryparser/termgenerator.cc: Add
	  get_termpos() method to get the current value of the termpos.
	  Makes it easier to integrate with different term generators.

Tue May 15 03:44:50 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
	  Include '.', ',', and a few other characters in terms if they are
	  between two decimal digits.
	* queryparser/termgenerator_internal.cc: Don't stem terms which start
	  with a number.
	* tests/queryparsertest.cc: Update results for real world queries to
	  match new results (better in every case but one!)

Tue May 15 01:24:08 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Fix a few typos.  Add "feisty" to the list of debs to
	  build.

Tue May 15 00:51:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Document that the bootstrap script should be run from
	  srcdir, and that the generated configure can be run from a
	  different builddir.  Tidy up a few other lines.

Mon May 14 23:52:33 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
	  Expand check_infix to include some of characters Unicode does.
	* tests/queryparsertest.cc: Update the single test query which now
	  parses differently.

Mon May 14 23:42:53 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: New macro TEST_STRINGS_EQUAL() which
	  displays the strings on separate lines so the differences can
	  be clearly seen.
	* tests/queryparsertest.cc: Use TEST_STRINGS_EQUAL().

Mon May 14 20:14:17 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Make the "uses string sort" warning in
	  the documentation for the methods which enable sorting by value
	  more prominent, and fix several miscellaneous typos.

Mon May 14 19:28:21 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/dir_contents: Update to mention TermGenerator.

Mon May 14 19:12:12 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of WILDCARD_TERM and
	  PARTIAL_TERM for prefixed terms.
	* tests/queryparsertest.cc: Add test coverage for this.

Mon May 14 18:02:22 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add more testcases for wildcarded queries.

Mon May 14 17:39:30 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of partial queries.

Mon May 14 16:49:46 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: closesocket() seems to work equally as
	  well as CloseHandle() but it's what we use elsewhere and Charlie
	  thinks it's a better choice here too so use that instead.  Rename
	  the wrapper call from close_fd_or_handle() to close_fd_or_socket().
	  And mark close_fd_or_socket() as "inline" under UNIX, since it
	  should always be inlined.

Mon May 14 15:30:13 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Add FIXME about moving wildquery1.

Mon May 14 15:21:59 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc: Improve comments.

Mon May 14 11:29:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Deal with invalid parameter exceptions
	  on windows when closing file descriptors or handles.

Mon May 14 05:04:16 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Fix wildquery1 to work with the new term
	  stemming scheme.

Sun May 13 19:15:17 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Count control characters as whitespace
	  (which is certainly what we want for TAB, CR, LF, and FF).

Sun May 13 17:50:19 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Add CONNECTOR_PUNCTUATION to is_wordchar()
	  - this category includes '_' and characters which fulfil similar
	  roles.
	* queryparser/queryparser.lemony,queryparser/termgenerator_internal.cc:
	  No longer need to special case '_'.
	* queryparser/queryparser.lemony: Test for Unicode "whitespace" rather
	  than just ASCII.

Sun May 13 04:43:37 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Normalise Unicode characters used
	  for apostrophe to ASCII apostrophe.

Sun May 13 03:56:17 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,unicode/tclUniData.cc: Update Unicode
	  routines to use Unicode 5.0.0 and support characters outside the BMP
	  (so we now support all Unicode characters in the latest version of
	  the standard).
	* tests/api_unicode.cc: Add test unicode1 which performs some simple
	  tests of the categorisation function, include one which tests for a
	  character added in Unicode 5.0.0.

Sat May 12 06:01:50 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Update comment.

Sat May 12 04:23:01 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Improve description of Term class.

Sat May 12 04:16:47 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Update to implement the new stemming
	  scheme.
	* tests/queryparsertest.cc: Update testcases, and check that the new
	  parses are all reasonable.

Sat May 12 04:03:55 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Xapian::Unicode::get_category() now checks
	  for characters outside the BMP, and assumes they're of category
	  OTHER_LETTER.  Remove BMP check from all functions which use
	  Xapian::Unicode::get_category().

Sat May 12 04:02:52 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix typo in comment.

Fri May 11 05:45:38 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Make "Server is read-only" be of type
	  InvalidOperationError not NetworkError.  This is arguably more
	  appropriate anyway, but in particular it avoids a worrying looking
	  (but harmless) warning when a read-only connection is closed, due
	  dtor_called() calling flush() on a read-only database.

Fri May 11 01:35:31 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Disable more documentation rules if
	  MAINTAINER_NO_DOCS is true.

Thu May 10 23:01:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Remove definition of unused macro
	  XAPIAN_MSVC_INVALID_PARAMETER_HANDLER.

Thu May 10 19:24:23 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Try quoting qualified identifiers in
	  #pragma deprecated.

Thu May 10 15:58:37 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Give full scope in '#pragma deprecated'
	  to try to avoid false positives.

Thu May 10 14:53:08 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Use '#pragma deprecated' to work around
	  MSVC stupidity (you get a warning for deprecating a declaration).

Thu May 10 13:42:49 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Some GCC 3.x versions produce bogus warnings, so only
	  automatically enable -Werror on --enable-maintainer-mode under GCC
	  if we're using GCC >= 4.0.  Most developers will be using GCC 4.x
	  soon if they aren't already anyway.
	* HACKING: Update documentation in line with the above.  Mention that
	  we also enable -Werror for Intel's C++ compiler.

Thu May 10 05:06:22 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Detect __WIN32__ by running the preprocessor so we
	  don't get confused by building mingw in a cygwin environment.

Thu May 10 04:52:21 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Exit with EX_UNAVAILABLE if the mutex tells us
	  xapian-tcpsrv is already running on this port.

Thu May 10 04:44:10 BST 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/safe.cc,common/safeunistd.h: Pulling
	  in safewindows.h from safeunistd.h causes clashes with NEAR
	  in the QueryParser, so use a helper function to call Sleep
	  and just call that from the header.

Thu May 10 04:36:19 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Fix compilation error.

Thu May 10 04:26:31 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: Just pass the mutex to
	  get_listening_socket() by reference to avoid MSVC warnings.

Thu May 10 04:19:13 BST 2007  Olly Betts <olly@survex.com>

	* common/safeunistd.h: Use Sleep() instead of _sleep() as the latter
	  gives deprecation warnings.  Sadly that means that safeunistd.h
	  now has to pull in safewindows.h.

Thu May 10 04:07:53 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: Keep track of the mutex so
	  we can release it right after we close the listening socket.
	  Throw an error if we fail to get the mutex to avoid a possible
	  race condition (we might end up with the socket listening but
	  without the mutex locked).  Always call closesocket() on the
	  listening socket under __WIN32__ to ensure resources are released.

Thu May 10 02:48:31 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Use a mutex under Cygwin and WIN32 to allow use to
	  use Microsoft's broken SO_REUSEADDR on our listening socket, but
	  avoid being able to run two copies of xapian-tcpsrv on the same port
	  at once (tweaked patch from MarkH).
	* net/tcpserver.cc: Don't try to set SO_EXCLUSIVEADDRUSE if a previous
	  setsockopt() call failed as we might stomp on the error code.

Thu May 10 02:15:20 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.mk,configure.ac,docs/Makefile.am,
	  examples/Makefile.mk: Add new Automake conditional
	  "MAINTAINER_NO_DOCS" to allow use to disable references to built
	  documentation in maintainer builds if --disable-documentation is
	  specified.  This allows Mark's buildbot to work without installing
	  so many tools, some of which aren't packaged for Cygwin.

Thu May 10 02:03:44 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am: Build rules for running generate-exceptions should be
	  controlled by MAINTAINER_MODE not DOCUMENTATION_RULES, part II.

Thu May 10 01:49:42 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add Error::get_type().

Thu May 10 01:25:37 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc,generate-exceptions.in: Add new constructors which
	  allow error_string to be set directly, for use by the Xapian::Error
	  unserialising code.
	* generate-exceptions.in: Xapian::Error::get_type() now returns
	  const char * not std::string.
	* backends/quartz/quartz_database.cc: Fix code to handle changed
	  return type of Xapian::Error::get_type().
	* net/serialise.cc: Include error_string in the serialisation.
	* common/remoteprotocol.h,docs/remote_protocol.html: Bump protocol
	  version to 29 because of change in Xapian::Error serialisation.

Wed May 09 14:42:33 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Renaming match_nothing_
	  member of QpQuery to match_nothing.  Comment out unused
	  QpQuery::get_description().  Add FIXME comment about
	  apparently redundant logic (now's not really the time
	  to be fiddling with such things).

Wed May 09 14:27:02 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Update to match new TermGenerator
	  class.  '_' is now a term character, not a phrase generator.  We
	  only keep a suffix which has 3 or fewer characters, and we no longer
	  count '-' as a suffix character.
	* tests/queryparsertest.cc: Update test cases to match new behaviour.
	  In almost every case the new rules give a better result.

Wed May 09 14:15:38 BST 2007  Olly Betts <olly@survex.com>

	* languages/compiler/space.c: Add sanity check to b_to_s(),
	  highlighted by MSVC warning.

Wed May 09 14:06:24 BST 2007  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Return filesize as off_t to avoid MSVC warning
	  about truncating from 64 to 32 bits (the filesize will never be
	  more than a few K here, so this is essentially a cosmetic issue).

Wed May 09 04:04:03 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: Always starting the server in a
	  new thread in "one-shot" mode is trickier than it looked, so revert
	  that change for now.  Always call closesocket() on our sockets under
	  __WIN32__.

Wed May 09 01:53:43 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: Make UNIX signal handling
	  functions and WIN32 CrtlHandler static.  TcpServer::run() is now
	  generic, calling an OS-specific TcpServer::run_once().  Now we
	  always run the server in a new thread in "one-shot" mode, which
	  gives better code coverage in apitest as it runs more like a normal
	  xapian-tcpsrv would.  CtrlHandler now lets the OS handle the event
	  if it doesn't have a socket to close, or if closesocket() fails.

Wed May 09 01:42:33 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: DWORD is unsigned, so received can't be
	  negative - tidy up the ReadFile() loop taking this into account.

Wed May 09 01:28:48 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: ReadFile() doesn't set errno, so remove
	  test for EINTR which is just a hangover from the UNIX code.

Tue May 08 23:50:33 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Treat '_' as a word character
	  which seems to be the correct thing to do in general.  Generate
	  unstemmed terms with positional information for all words without a
	  prefix, and stemmed terms without positional information for
	  non-stopwords with a 'Z' prefix.  This means we can implement exact
	  phrase search, and prefixing stemmed forms (rather than unstemmed
	  as Omega < 1.0 does) means fewer terms with the prefix.  Only
	  stemming non-stopwords cuts a significant amount of the database
	  size in my tests.

Tue May 08 18:22:30 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Fix remaining use of handle_one_request in
	  __WIN32__-specific code.

Tue May 08 18:10:12 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc: Really fix it...

Tue May 08 17:38:04 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc: Fix another paste-o!

Tue May 08 17:28:29 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc: Remove bogus statement in __WIN32__ case left over
	  from cut-and-paste.

Tue May 08 17:10:53 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: Rename
	  TcpServer::handle_one_request() to
	  TcpServer::handle_one_connection() (to make it clearer that it
	  handles a connection rather than a single MSG/REPLY exchange), and
	  use it in UNIX builds too to avoid duplicating its code.  Catch
	  NetworkTimeoutError here and report it if we're in verbose mode.
	* net/remoteserver.cc: If we catch NetworkTimeoutError then try to
	  propagate it only if we can send it right away, then rethrow it
	  to close the connection and let the caller log it.  If we catch
	  any other NetworkError then just rethrow it.

Tue May 08 16:52:50 BST 2007  Olly Betts <olly@survex.com>

	* common/noreturn.h: Add missing '#endif'.

Tue May 08 16:19:05 BST 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/noreturn.h: New header which defines
	  XAPIAN_NORETURN() to allow functions which don't return to be
	  marked as such so the compiler can take this into account when
	  generating code.
	* api/error.cc,tests/harness/backendmanager.cc: Remove any trailing
	  "\r\n" from the output of FormatMessage().

Tue May 08 16:16:55 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/deprecated.h: Use `__attribute__((__deprecated__))'
	  instead of `__attribute__((deprecated))' so we're even robust
	  against some clown doing `#define deprecated foo'.

Tue May 08 16:15:30 BST 2007  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc,tests/harness/backendmanager.cc: In these files
	  we have to disable XAPIAN_DEPRECATED() since we need to be able to
	  use Quartz::open() - move this to the start of the #include block
	  to avoid problems with any intermediate header implicitly including
	  <xapian.h>.

Tue May 08 14:51:37 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Move section on "Configure Options" to a more logical spot
	  just before "Makefile Portability".  Add section on how to use
	  XAPIAN_DEPRECATED() noting the issue with GCC 3.3.5 not allowing
	  it to be used on an inline method definition.
	* include/xapian/deprecated.h: Add pointers to HACKING and
	  docs/deprecated.rst.

Tue May 08 13:57:17 BST 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: We can't use XAPIAN_DEPRECATED() on
	  a function definition with GCC 3.3.5, so use it on a declaration
	  and then define inline but out of the class.

Tue May 08 13:45:48 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: We must call closesocket() (instead of just
	  close()) under __WIN32__ or else the socket remains in the
	  CLOSE_WAIT state.

Tue May 08 12:17:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Add Error::get_errno() to the deprecation
	  list for the bindings, too.

Tue May 08 10:09:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Change the xapian_version functions to be
	  marked for removal in 1.1.0, and also note them in the bindings
	  section.

Tue May 08 04:27:37 BST 2007  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h: The
	  timeout parameter to RemoteDatabase wasn't being used, instead the
	  client would wait indefinitely for the server to respond.

Tue May 08 04:16:45 BST 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Initialise error_string in Xapian::Error
	  ctor.

Tue May 08 03:48:47 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc: Fix compilation when HAVE_HSTRERROR isn't defined.

Tue May 08 02:35:04 BST 2007  Olly Betts <olly@survex.com>

	* api/error.cc,bin/xapian-tcpsrv.cc,examples/delve.cc,
	  generate-exceptions.in,tests/harness/testsuite.cc: Error subclasses
	  now store the error_string in the class, converting it from the
	  error code in my_errno lazily.  Also, get_error_string() now returns
	  const char *.

Tue May 08 01:34:56 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am: Build rules for running generate-exceptions should be
	  controlled by MAINTAINER_MODE not DOCUMENTATION_RULES.

Tue May 08 01:23:22 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc,docs/deprecation.rst,generate-exceptions.in,
	  net/tcpserver.cc,tests/harness/testsuite.cc: Deprecate
	  Error::get_errno() in favour of Error::get_error_string().  We can't
	  pass errno values from remote server to client as they aren't
	  portable and the server and client may be running on entirely
	  different platforms!
	* generate-exceptions.in: Mark as generated with @configure_input@.

Tue May 08 01:20:43 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_lock.h: Make
	  FlintLock's dtor release the lock (if held) which avoids the need
	  for any special handling in FlintDatabase.

Mon May 07 21:15:33 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.cc: Use O_BINARY when opening a file to
	  "touch" it.

Mon May 07 17:28:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc: Add try{}catch(...){} block to
	  ensure that lock is released if an exception occurs in the
	  FlintDatabase() constructor.
	* tests/api_db.cc: Add regression test for releasing lock on error
	  in constructor.

Mon May 07 11:10:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Update section on multiple output rules to detail the
	  workaround described in the automake manual.

Mon May 07 10:03:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/flint/flint_version.cc,backends/quartz/,exception_data.pm,
	  include/xapian/database.h,tests/api_db.cc: Throw
	  DatabaseVersionError instead of DatabaseOpeningError when database
	  version is unsupported.  This is a new error class, which is a
	  subclass of DatabaseOpeningError, so most existing scripts
	  shouldn't need changing, but makes it easy for application
	  writers to determine whether a database needs upgrading or
	  whether the problem is something else.  Should fix #144.

Mon May 07 09:22:01 BST 2007  Olly Betts <olly@survex.com>

	* net/progclient.cc: Under __WIN32__, use byte mode on pipes because
	  message mode fails for message > 256 bytes, and use "overlapped"
	  mode so we don't block waiting for a reply so that timeouts work.
	  (Patch from Mark Hammond).

Mon May 07 03:03:10 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/apitest.cc,tests/harness/: Now
	  TEST_EQUAL_DOUBLE() should work everywhere.  Move the helper
	  function out of the header.  Use TEST_EQUAL_DOUBLE() instead
	  of doubles_are_equal_enough() and weights_are_equal_enough()
	  which do much the same job.

Mon May 07 01:13:29 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Report extra info to try to work out why
	  MSVC build is failing expandweights1.

Mon May 07 00:26:59 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Another tweak to TEST_EQUAL_DOUBLE().

Sun May 06 22:30:26 BST 2007  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Remove reference to DA databases since the
	  muscat36 backend has been removed.  Update to recommend GCC 3.3
	  or later, as we do elsewhere.  Change references to "quartz" to
	  say "flint", or remove them.

Sun May 06 16:02:28 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Set version to mythical 0.9.99.

Sun May 06 15:06:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_db.cc: Add test_flintdatabaseformaterror1() which
	  checks what happens when an old-format flint database is opened.
	  It generates the old-format database by making a fake "iamflint"
	  file containing an old version number.

Sun May 06 04:00:39 BST 2007  Olly Betts <olly@survex.com>

	* expand/ortermlist.cc: Remove incorrect assertion check in
	  OrTermList::next(), replacing it with anexplanatory comment.

Sun May 06 02:42:30 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Fix typo.

Sun May 06 02:39:23 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Aha!  Richard's patch failed to compile
	  because stdlib.h was in "#ifndef __WIN32__" not "#ifdef __WIN32__".

Sun May 06 02:27:18 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Protect _set_invalid_parameter_handler, etc
	  by _MSC_VER >= 1400 (MSVC 2005) and __STDC_SECURE_LIB__ (undocumented
	  but cribbed from the Python sources).  Refactor into a handy class
	  (MSVCIgnoreInvalidParameter) which just needs to be instantiated in
	  the scope where you want to allow invalid parameters to be passed.

Sun May 06 01:42:06 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Rework use of _invalid_parameter_handler to
	  only apply when _MSC_VER is defined, to fix the mingw build.

Sat May 05 22:30:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/remoteconnection.cc: Under __WIN32__, add an invalid
	  parameter handler which ignores the error and use it for the
	  calls to _get_osfhandle() which are sometimes expected to fail.
	  Requires stdlib.h according to msdn, so also #include that.

Sat May 05 20:43:29 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc,common/remoteconnection.h,
	  common/remoteserver.h,common/tcpserver.h,net/remoteserver.cc,
	  net/tcpserver.cc: Open a fresh copy of the database(s) on each
	  connection to a xapian-tcpsrv rather than relying on being able to
	  share a database across fork() or between threads (which we don't
	  promise will work).  Largely based on patch from Mark Hammond.
	  Fixes some of bug#141 and all of bug#142.

Sat May 05 02:19:39 BST 2007  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Use RETURN() not return in methods with debug
	  logging.

Sat May 05 02:19:11 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix typo in comment.

Fri May 04 23:59:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Remove the "u" suffix from
	  FLINT_VERSION as it's confusing in the "wrong format version"
	  error message and doesn't seem needed in the code.

Fri May 04 23:56:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/: Revert patch from revision 8426 (except for the
	  bit which removed the unused prototypes), to avoid the
	  possibility that it introduces bugs into the code just before
	  1.0.0.  The patch is attached to bug #143 for later reference.

Fri May 04 23:50:39 BST 2007  Olly Betts <olly@survex.com>

	* examples/delve.cc: Report the error string if we catch Xapian::Error
	  while trying to open a database.

Fri May 04 22:50:54 BST 2007  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Fix a few typos; elaborate on a few points.

Fri May 04 20:07:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/termgenerator_internal.cc: Fix bug in termgenerator -
	  arguments to add_posting were the wrong way round.

Fri May 04 20:00:40 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/termgenerator_internal.cc: Limit term length, handle
	  infix and suffix characters, and convert apostrophes to ASCII
	  representation.

Fri May 04 19:47:43 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Fill in remaining missing documentation
	  comments.

Fri May 04 19:30:56 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/termgenerator.h: Add convenience version of
	  index_text() and index_text_without_positions() which take a
	  std::string instead of a Utf8Iterator.

Fri May 04 17:11:11 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* unicode/utf8itor.cc: Fix segfault bug in Utf8Iterator::operator*().
	  If this was called when the iterator had reached end, invalid
	  memory was accessed because p was compared to end, p will always
	  be set to NULL when the iterator reaches the end.  No regression
	  test, but the smoketest tests I'm implementing in the bindings
	  will exercise this code.

Fri May 04 16:29:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/unicode.h: Add documentation comments to
	  Utf8Iterator, so I don't have to work out how it works again.

Fri May 04 14:55:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/unicode.h: Add assign() function which takes a
	  string, for symmetry with the constructors.  Also makes
	  implementing the bindings easier.

Fri May 04 13:04:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* include/Makefile.mk: Add termgenerator.h to distribution
	  tarballs.

Fri May 04 03:41:56 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.h: Test against pow(10, -DBL_DIG) rather
	  than DBL_EPSILON.  DBL_EPSILON is a little bit smaller, but we use
	  DBL_DIG for displaying the numbers and it looks stupid to say two
	  numbers which are displayed identically should be nearly the same!

Fri May 04 03:33:51 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Fix reference to --enable-maitainer-mode and documentation
	  rebuilding.

Fri May 04 03:32:57 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix now erroneous references to tools "required in
	  maintainer mode" to "required to build documentation".

Fri May 04 01:49:05 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Document --enable-documentation.

Fri May 04 01:38:44 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.mk,configure.ac,docs/Makefile.am,
	  examples/Makefile.mk: Add new configure option
	  "--enable-documentation" which enables the make rules to rebuild the
	  documentation.  By default this follows the setting of
	  "--enable-maintainer-mode" (so giving much the same behaviour as
	  currently), but the documentation rules can now be controlled
	  independently.  Also, if documentation isn't being built, the
	  configure probes for tools required to rebuild it are no longer run
	  which should shorten configure time a bit for end-users building
	  releases.

Thu May 03 22:07:39 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteserver.h: Remove unused default values for
	  active_timeout_ and idle_timeout_ parameters.  Fix repeated typo
	  in documentation comments ('millisrconds' -> 'milliseconds').

Thu May 03 15:05:24 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian.h,include/xapian/termgenerator.h,queryparser/:
	  Initial cut of TermGenerator class.

Thu May 03 15:04:09 BST 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Hide the internal constructors of generated
	  error classes in the doxygen-generated API docs.

Thu May 03 04:37:51 BST 2007  Olly Betts <olly@survex.com>

	* expand/ortermlist.cc,expand/ortermlist.h: Fix compilation error when
	  --enable-assertions is used.

Thu May 03 03:57:42 BST 2007  Olly Betts <olly@survex.com>

	* common/safeunistd.h: Provide a POSIX-compatible sleep() function.
	* common/utils.h: Remove inferior POSIX-compatible sleep() function.

Thu May 03 03:17:02 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/: Mark all @internal member variables and functions
	  which aren't private with @private so doxygen doesn't document them.

Thu May 03 02:33:09 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/: Mark DocIDWrapper, RefCntBase, RefCntPtr,
	  TermNameWrapper, and TermPosWrapper as "@internal" so that they don't
	  show up in the doxygen-generated API documentation.  In particular,
	  this makes the class collaboration diagrams much more useful.
	* include/xapian/errorhandler.h: Declare the class in namespace Xapian
	  rather than with namespace Xapian:: since the latter seems to
	  confuse doxygen.

Thu May 03 02:31:33 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h: Fix wrapping of comment.

Thu May 03 00:05:23 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/: Remove unused (and unimplemented) declarations
	  of begin_transaction_(), commit_transaction_() and
	  cancel_transaction_() from FlintWritableDatabase class.  Tidy up
	  handling of metainfo (total_length and lastdocid) to avoid
	  repeatedly parsing the special record, and make it easier to
	  store additional metainfo in future.
	  Also, remove code which ensures that there is always a special
	  record - this was added in revision 5459 when the special record
	  was stored in the record table, so that the number of documents
	  in the database could always be calculated by subtracting 1 from
	  the number of entries in the record table.  Now that the special
	  record is stored in the postlist table, this is no longer
	  necessary.

Wed May 02 17:56:39 BST 2007  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc,include/xapian/dbfactory.h:
	  Remote::open_writable() now defaults to no (active) timeout.  The
	  connection timeouts for Remote::open() and Remote::open_writable()
	  now default to 10 seconds rather than defaulting to the same as
	  the active timeout (which defaults to 10 seconds).

Wed May 02 16:00:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/safeunistd.h,tests/harness/backendmanager.cc: Fix
	  compilation on windows - safeunistd.h was undefining ssize_t
	  and thus overriding the definition in config.h, and include
	  safewindows.h for backendmanager.cc

Wed May 02 15:34:33 BST 2007  Olly Betts <olly@survex.com>

	* common/safeunistd.h: Don't define ssize_t here for MSVC - do it in
	  config.h instead.  This avoids pulling in <windows.h> which will
	  hopefully fix another macro redefinition warning under MSVC.

Wed May 02 15:20:56 BST 2007  Olly Betts <olly@survex.com>

	* common/safewindows.h: Define NOGDI before including windows.h to
	  prevent it from defining a macro called "ERROR" which collides with
	  the generated queryparser sources, causing a warning in the MSVC
	  build.

Wed May 02 14:38:33 BST 2007  Olly Betts <olly@survex.com>

	* common/termlist.h: Forward declare ExpandStats as "class" not
	  "struct" for consistency with the actual declaration.

Wed May 02 14:30:41 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Try '-lzlib' for zlib, which mingw reportedly needs.

Wed May 02 14:21:40 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,include/xapian/dbfactory.h,
	  net/remoteserver.cc: A timeout of `0' in the remote backend now
	  means "no timeout" (code patch from Mark Hammond).

Wed May 02 04:17:28 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,api/,backends/alltermslist.cc,backends/flint/,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
	  backends/quartz/,backends/remote/net_termlist.cc,
	  backends/remote/net_termlist.h,backends/remote/remote-database.cc,
	  common/,expand/,matcher/: Split expand functionality out of
	  "matcher" subdirectory into new "expand" subdirectory since it's
	  not really connected to query matching and the matcher subdirectory
	  is one of the largest.  Rewrite OrTermList, eliminating
	  BranchTermList entirely.  Alter expand to pass in an object (of
	  class Xapian::Internal::ExpandWeight) which accumulates statistics
	  instead of returning OmExpandBits objects which we then have to
	  merge (and eliminating the need for LeafTermList entirely).  Query
	  expansion for multiple databases should now give results more like
	  that for a single database with the same documents (if
	  USE_EXACT_TERMFREQ is used, the results should be the same).  Debug
	  logging from expand is now all of type EXPAND (some was of types
	  MATCHER and WTCALC before).

Wed May 02 03:35:17 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add deprecation info for Omega too.

Wed May 02 00:24:13 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Add test expandweights1 as a regression test for
	  the previous commit.
	* tests/harness/testsuite.h: Set the precision for TEST_EQUAL_DOUBLE
	  so we don't claim two numbers to be different yet display them the
	  same!

Tue May 01 23:27:10 BST 2007  Olly Betts <olly@survex.com>

	* backends/remote/net_termlist.cc,backends/remote/remote-database.cc,
	  common/remoteprotocol.h,docs/remote_protocol.html,
	  net/remoteserver.cc: Fix handling of the document length in the
	  termlist for the remote backend.

Tue May 01 23:17:28 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Several tests were marked as "local db only" for
	  historical reasons.  Enable them for remote backends too.
	* backends/remote/net_postlist.cc,tests/api_db.cc: Fix a bug in
	  NetworkPostList::skip_to() which apitest's postlist4 reveals.

Tue May 01 21:00:26 BST 2007  Olly Betts <olly@survex.com>

	* api/omtermlistiterator.cc,api/omvalueiterator.cc,
	  backends/multi/multi_alltermslist.cc: Add explicit
	  `#include "omassert.h"'.
	* backends/multi/multi_alltermslist.cc: Remove all explicit
	  std:: qualifiers and add `using namespace std;'.

Tue May 01 20:56:10 BST 2007  Olly Betts <olly@survex.com>

	* common/multialltermslist.h: Add explicit std:: qualifiers for
	  string, for consistency with std::vector in this header.

Tue May 01 15:19:53 BST 2007  Olly Betts <olly@survex.com>

	* matcher/branchpostlist.h: Don't check for NULL pointer before
	  calling delete.

Tue May 01 02:29:10 BST 2007  Olly Betts <olly@survex.com>

	* common/document.h,common/documentterm.h,common/multialltermslist.h,
	  matcher/rset.cc,queryparser/queryparser.cc: Add some explicit
	  includes for headers which were previously only implicitly included
	  (in preparation for a forthcoming change which removes some of the
	  implicit inclusions).

Tue May 01 01:20:53 BST 2007  Olly Betts <olly@survex.com>

	* backends/database.cc,bin/quartzcheck.cc,docs/deprecation.rst,
	  include/xapian/dbfactory.h,tests/api_db.cc,
	  tests/harness/backendmanager.cc,tests/quartztest.cc: Deprecate
	  the Quartz backend and related functions and utilities.

Fri Apr 27 12:56:13 BST 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Pass '-no-install' when linking test programs,
	  since we don't ever install them.  This means libtool doesn't need
	  to generate shell script wrappers on most platforms.  Also prefer
	  '$(ldflags)' to '@ldflags' as the former allows the user to override
	  when they run 'make' which is sometimes useful.

Fri Apr 27 03:44:15 BST 2007  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Add links for the various researchers mentioned
	  by name.

Thu Apr 26 17:57:10 BST 2007  Olly Betts <olly@survex.com>

	* docs/bm25.html,docs/intro_ir.html: Assorted documentation
	  improvements.

Thu Apr 26 15:43:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Update with changes to Python bindings.

Thu Apr 26 06:01:45 BST 2007  Olly Betts <olly@survex.com>

	* common/expandweight.h,matcher/expandweight.cc: Better handling of
	  expand with multiple databases.

Wed Apr 25 18:35:13 BST 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Delete nonsensical comment.

Wed Apr 25 17:41:58 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Use the collective term "features" rather than
	  overloading the term "functions".  Casual readers may miss the
	  definition altogether, and even dedicated readers will probably
	  already have a strong mental image of what a "function" is in the
	  context of an API.

Wed Apr 25 14:52:11 BST 2007  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Improve the look of the formulae.

Wed Apr 25 03:56:18 BST 2007  Olly Betts <olly@survex.com>

	* common/omqueryinternal.h,languages/generate-allsnowballheaders.in,
	  matcher/msetcmp.h,queryparser/queryparser_internal.h: Add missing
	  multiple inclusion guards.

Wed Apr 25 03:12:50 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser_internal.h: Don't include <config.h> in
	  a header file.

Wed Apr 25 03:05:09 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Initialise `internal' member inline
	  for consistency with other classes.

Tue Apr 24 04:55:45 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Add missing ')' to the error messages when zlib stuff
	  isn't found.

Tue Apr 24 02:56:57 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_database.h: MSVC doesn't handle using
	  properly.

Tue Apr 24 01:25:34 BST 2007  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc,matcher/expandweight.cc: Fix typo in comments:
	  'releveant' -> 'relevant'.

Mon Apr 23 23:00:23 BST 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,docs/deprecation.rst,include/xapian/enquire.h,
	  tests/api_anydb.cc,tests/api_db.cc: Deprecate
	  Enquire::include_query_terms and Enquire::use_exact_termfreq in
	  favour of capitalised versions Enquire::INCLUDE_QUERY_TERMS and
	  Enquire::USE_EXACT_TERMFREQ (for consistency with our other
	  manifest constants, and general C/C++ conventions).

Mon Apr 23 18:14:20 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/quartz/btree.cc: Support for
	  VLAs in C++ is a GCC extension, so eliminate the need for them.

Mon Apr 23 16:32:07 BST 2007  Olly Betts <olly@survex.com>

	* docs/: svn:ignore deprecation.html. svn:ignore apidoc.pdf and
	  sourcedoc.pdf rather than *.pdf.

Mon Apr 23 16:08:53 BST 2007  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Resolve FIXME about MapTermList.

Mon Apr 23 16:06:38 BST 2007  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc,backends/flint/flint_check.cc,
	  backends/flint/flint_table.cc,backends/quartz/btree.cc,
	  backends/quartz/btreecheck.cc,bin/xapian-tcpsrv.cc,examples/,
	  languages/steminternal.h,tests/harness/testsuite.cc,
	  tests/harness/testsuite.h,tests/stemtest.cc: Fix compilation with
	  GCC 4.3 snapshot.

Mon Apr 23 15:20:55 BST 2007  Olly Betts <olly@survex.com>

	* common/safeunistd.h: Comment tweaks.

Mon Apr 23 11:54:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/safeunistd.h: Include <process.h> on windows to get
	  getpid() instead of using a #define.

Mon Apr 23 11:30:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/maptermlist.h: Fix typo in error message.

Mon Apr 23 11:08:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/maptermlist.h: Throw an InvalidOperationError() if
	  MapTermList::get_termfreq() is called, instead of simply having
	  Assert(false): this gets called if a term iterator is accessed
	  for a freshly created Document, and the get_termfreq() method is
	  called on it.  The error message is specific to this situation,
	  since this is the only place in which MapTermList is used.

Mon Apr 23 03:22:54 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_lock.cc,
	  backends/flint/flint_lock.h: Report why we failed to get a write
	  lock on a flint database.

Mon Apr 23 01:44:13 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Update the flint format version
	  since older flint versions can't read compressed tags.

Mon Apr 23 01:25:25 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Probe for zlib.h and -lz.
	* backends/flint/,bin/xapian-compact.cc: Use zlib to compress tags
	  in the record and termlist tables.
	* tests/Makefile.am,tests/runtest.in,tests/valgrind.supp: Add a
	  valgrind suppression for zlib (a known issue - for speed zlib
	  deliberately reads past the end of the buffer in some cases).

Sun Apr 22 04:24:06 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/: Remove documentation for blocksize_ parameters
	  which were removed some time ago.

Sun Apr 22 00:02:13 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Track the minimum weight required to be
	  considered for the MSet separately from the minimum item which
	  could be considered.  Trying to combine the two is causing subtle
	  bugs (fixed bug#86).

Sun Apr 22 00:00:39 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Add notes about the files Omega uses from xapian-core.

Sat Apr 21 23:49:58 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Clear the stoplist when we parse a new
	  query.
	* tests/queryparsertest.cc: Add regression test.

Sat Apr 21 23:27:33 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,common/Makefile.mk,getopt/: Move getopt.cc from getopt/
	  to common/.  Having a whole directory for a single source file
	  is a bit extravagant, and putting it in common/ allows us to share a
	  copy with omega easily.

Sat Apr 21 21:38:20 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_log.cc,common/omdebug.h,common/safeunistd.h,
	  tests/harness/testsuite.cc: safeunistd.h now defines getpid() to
	  GetCurrentProcessId() for MSVC, and we now include this where we
	  want to use getpid() rather than conditionally defining getpid().

Sat Apr 21 04:13:12 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Explicitly set AM_CXXFLAGS to an empty value to start
	  with to avoid issues if it's set in the environment.  Cache the
	  results of the test to see if the C++ compiler actually works, and
	  in the XAPIAN_TEST_LINKER_FLAG macro.
	* configure.ac, include/xapian/visibility.h: Add --disable-visibility
	  option to configure to completely disable use of -fvisibility.
	* INSTALL: Document all --enable-backend-* options explicitly.
	  Document how to disable use of -fvisibility and
	  -Bsymbolic-functions should you want/need to.  Improve wording in
	  a few places.

Fri Apr 20 19:20:23 BST 2007  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Revert to requiring autoconf 2.59 so that the
	  .spec file for building RPMs can run `autoreconf' to work around a
	  libtool bug.

Fri Apr 20 18:12:51 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Document return type of ExpandDecider::Apply()
	  and MatchDecider::Apply() in C# is now bool instead of int.

Fri Apr 20 18:01:18 BST 2007  Olly Betts <olly@survex.com>

	* xapian.spec.in: Package xapian-check and its man page.

Fri Apr 20 14:38:00 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Note changed return type of
	  ExpandDecider::operator() and MatchDecider::operator().

Fri Apr 20 14:28:39 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: MatchDecider::operator() now returns
	  `bool' not `int'.  Remove declaraction of ExpandDecider.
	* include/xapian/expanddecider.h: Move declaration of ExpandDecider
	  to here.  ExpandDecider::operator() now returns `bool' not `int'.
	  ExpandDeciderAnd now names parameters `first' and `second' and
	  documents the order in which they are applied (useful if you have
	  an expensive and a cheap test).  ExpandDeciderAnd can now take
	  parameters by reference instead of pointer.
	* api/Makefile.mk,include/xapian/enquire.h,api/omenquire.cc,
	  api/expanddecider.cc: New home for definitions of virtual methods of
	  ExpandDecider and subclasses.
	* api/omenquire.cc,common/expand.h,matcher/expand.cc: Eliminate
	  internal class ExpandDeciderAlways - just test pointer against NULL
	  instead.
	* tests/api_anydb.cc,tests/api_db.cc: Update for change in return
	  type from MatchDecider::operator() and ExpandDecider::operator().

Fri Apr 20 10:35:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note on rules with multiple targets.

Thu Apr 19 19:02:42 BST 2007  Olly Betts <olly@survex.com>

	* PLATFORMS: Remove reports for 0.7.* and demote reports for 0.8.* to
	  "older reports" status.  All SF compilefarm machines are now "no
	  longer available", so update the symbols and key to reflect this.

Thu Apr 19 13:27:59 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Fix vim magic comment.  Add space after URL to stop
	  '::' getting glued to it.

Thu Apr 19 11:36:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Turn syntax highlighting off, since it's broken for the
	  restructured text in this file anyway.

Thu Apr 19 03:26:28 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_database.h:
	  The trick of importing base class methods with 'using' breaks
	  compilation with GCC 2.95 which doesn't issue the warning we're
	  trying to avoid, so add a preprocessor check,

Thu Apr 19 03:20:31 BST 2007  Olly Betts <olly@survex.com>

	* common/progclient.h,net/progclient.cc: Always use pid_t not int for
	  holding a process id.

Thu Apr 19 01:08:57 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Update '#callable' footnote.

Thu Apr 19 00:07:02 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_database.h: Add using declarations to
	  subclasses of Xapian::Database::Internal which don't override the
	  term forms of delete_document() and replace_document() to prevent
	  compiler warnings about these methods being hidden.

Wed Apr 18 23:22:29 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Remove code which can't actually be
	  reached, which fixes a warning in the mingw build.

Wed Apr 18 23:07:45 BST 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
	  include/xapian/enquire.h,matcher/Makefile.mk,
	  matcher/biaspostlist.h,matcher/multimatch.cc,net/remoteserver.cc:
	  Remove Enquire::set_bias().
	* docs/deprecation.rst: Update wrt Enquire::set_bias().  Fix typo.

Wed Apr 18 18:51:42 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Require autoconf 2.60 or newer.  Drop docdir
	  compatibility hack which is no longer required.
	* HACKING: Document requirement.  Fix typo (or out-of-date info) for
	  automake requirement (we require 1.9.5 not 1.8.5).

Wed Apr 18 18:27:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Note the deprecation of get_description()
	  methods for Python.

Wed Apr 18 14:57:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Minimal changes to make this into valid restructured
	  text.

Wed Apr 18 11:27:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Require autoconf version 2.59c or later:
	  AC_TYPE_SSIZE_T isn't present in earlier versions.

Wed Apr 18 11:08:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Fix table formatting error

Wed Apr 18 01:32:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Update with methods which have been removed
	  from the bindings.

Wed Apr 18 00:24:00 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Move methods which have just been removed
	  from the list of deprecated methods to the list of removed
	  methods.

Tue Apr 17 23:58:53 BST 2007  Olly Betts <olly@survex.com>

	* api/omdocument.cc,api/omenquire.cc,api/omquery.cc,include/xapian/,
	  languages/stem.cc,tests/api_db.cc: Remove methods we're deprecating
	  for 1.0.

Tue Apr 17 23:50:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Note that is_empty() is not deprecated for
	  PHP after all!

Tue Apr 17 22:17:41 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: GCC 2.95 doesn't support
	  std::string::clear(), so use resize(0) instead.
	* HACKING: Document the above issue in a reworked section on C++
	  STL features.  Update the section on safeXXX.h headers.

Tue Apr 17 22:07:39 BST 2007  Olly Betts <olly@survex.com>

	* common/safesysselect.h: Correct typo in #error message.

Tue Apr 17 19:18:00 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Factor out code to test for a linker flag into macro
	  XAPIAN_TEST_LINKER_FLAG.  With g++, use XAPIAN_TEST_LINKER_FLAG to
	  see if -Bsymbolic-functions is supported (it requires a very recent
	  version of ld currently).  This option reduces the size and load
	  time of the shared library by resolving references within the
	  library when it's created.  Currently untested on a box which
	  supports -Bsymbolic-functions.

Tue Apr 17 12:01:46 BST 2007  Olly Betts <olly@survex.com>

	* unicode/utf8itor.cc: Tidy up code layout.

Tue Apr 17 02:06:39 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/unicode.h,unicode/utf8itor.cc: Make nonascii_to_utf8
	  a public method.  Make get_case_type(), get_category(), and
	  get_delta() internal, but provide a public get_category() function
	  which takes a Unicode character value.

Tue Apr 17 02:05:32 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/Makefile.mk: Distribute flint_check.h.

Tue Apr 17 01:47:05 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_posdb.cc: The remote backend now supports all database
	  operations, so merge localpositionaldb_tests into
	  positionaldb_tests.
	* tests/: Remove the trivial separate api_XXXdb.h headers, some of
	  which were out-of-step with their respective .cc sources.  Instead
	  just keep the array external declarations in apitest.h.
	* tests/apitest.h,tests/api_transdb.cc: Move TESTCASE and
	  END_OF_TESTCASES macros into header.
	* tests/api_db.cc: Remove test collapsekey2 - it's only relevant for
	  the Muscat 3.6 backend, so it's unused now that has been removed.
	* tests/: Add unicode tests, adapted from Omega's utftest.

Tue Apr 17 00:14:16 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,include/Makefile.mk,include/xapian.h,
	  include/xapian/unicode.h,queryparser/,unicode/: Expose Unicode and
	  UTF-8 related classes and functions as a public API.

Mon Apr 16 16:06:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Bring document fully up-to-date, listing
	  all the planned deprecations for the bindings.  Also, include the
	  full upgrade notes in the listings, so they can be preserved
	  accessibly for posterity.  I even retrieved the notes for the
	  already-removed QueryParser::set_stemming_options from 0.9.10.

Mon Apr 16 11:36:18 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Call WSAGetLastError() instead of socket_errno()
	  when we want to compare the result against WSAEWOULDBLOCK.

Mon Apr 16 11:19:21 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,common/safewinsock2.h: Need to negate the
	  POSIX error codes we define in terms of winsock ones.

Fri Apr 13 16:24:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/doxygen_api_conf.in: Turn on XML output, so that we can use
	  it to populate docstrings for the python bindings.

Fri Apr 13 11:38:39 BST 2007  Olly Betts <olly@survex.com>

	* backends/Makefile.mk,backends/alltermslist.cc,common/alltermslist.h:
	  Split AllTermsList into header and code.  AllTermsList::get_wdf()
	  now throws InvalidOperationError() rather than asserting in a
	  debug build and returning 0 in a non-debug build.
	* backends/Makefile.mk: Correct list for "how to add a new backend".

Fri Apr 13 10:17:46 BST 2007  Olly Betts <olly@survex.com>

	* api/version.cc: Simpler and cleaner fix - the prototypes for the
	  version functions had moved from xapian/version.h to xapian.h so we
	  were including the wrong header and not seeing the prototypes with
	  visibility markup!

Fri Apr 13 09:29:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/version.cc: Add visibility annotations to definitions of
	  version functions: the annotation apparently needs to be applied
	  to the definition as well as the declaration or it is ignored:
	  possibly the annotation on the declaration is ignored anyway,
	  but it should be kept there for documentation purposes in any
	  case.  Fixes link error with bindings under gcc 4.1.

Fri Apr 13 01:39:57 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteconnection.h,net/progclient.cc,net/remoteconnection.cc:
	  GetLastError() has an unsigned return type, so need to cast to int
	  before negating.

Fri Apr 13 01:39:20 BST 2007  Olly Betts <olly@survex.com>

	* docs/deprecation.rst: Add xapian_version_string() and friends.

Fri Apr 13 01:24:53 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: More 'tout' output.

Fri Apr 13 01:19:20 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/error.cc,bin/xapian-tcpsrv.cc,
	  common/remoteconnection.h,common/safeerrno.h,configure.ac,
	  generate-exceptions.in,net/,tests/harness/testsuite.cc: On
	  MS Windows, if Xapian::Error::my_errno is the result of
	  GetLastError() or WSAGetLastError(), negate it (the error codes can
	  overlap with errno codes).  On UNIX, put h_errno negated in my_errno
	  if a call to gethostbyname() fails.  Add
	  Xapian::Error::get_error_string() method which decodes my_errno
	  in the appropriate way to give a string, and use this instead of
	  strerror(error.get_errno()).

Fri Apr 13 01:17:08 BST 2007  Olly Betts <olly@survex.com>

	* languages/generate-allsnowballheaders.in: win32 makefiles don't keep
	  the snowball header list in sorted order like we do, so fix that
	  here.  Also allow for '\' as path separator.

Fri Apr 13 00:58:09 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Add "tout" debug output to stemlangs1.

Thu Apr 12 21:37:04 BST 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Add support for QUIET= and QUIET=y arguments to
	  "make".

Thu Apr 12 21:35:50 BST 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Use a substitution for RSTHTML (like we do for the
	  snowball generated sources).

Thu Apr 12 20:41:18 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Add validate_query() calls to the "term" and
	  "value range" constructors.

Thu Apr 12 20:00:14 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,include/xapian/query.h: Only validate a
	  Query object when it's either constructed or changed to avoid O(n^2)
	  behaviour in some cases.

Thu Apr 12 19:59:13 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix nasty function casting for argument to
	  qsort - it's (at least technically) not portable.

Thu Apr 12 17:47:47 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix GCC version test to only turn on
	  -fvisibility=hidden for GCC >= 4.

Thu Apr 12 16:47:56 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.h,backends/flint/flint_cursor.h,
	  backends/flint/flint_table.h,backends/quartz/,common/,configure.ac,
	  generate-exceptions.in,include/Makefile.mk,include/xapian.h,
	  include/xapian/: Add visibility annotations to the library, which
	  when using GCC >= 4 reduces the size and load time of the library
	  and increase the runtime speed a little.  Under x86_64, the stripped
	  library is 6.4% smaller (1.5% smaller with debug information).

Thu Apr 12 16:45:57 BST 2007  Olly Betts <olly@survex.com>

	* api/version.cc: Add missing "#include <config.h>".

Thu Apr 12 13:41:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/quartztest.cc: Put removedir() function back for now to fix
	  build.

Thu Apr 12 13:02:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* net/progclient.cc: Some (but not all) versions of MSVC need
	  "#include <io.h>" to get the _open_osfhandle identifier.  Add it.

Thu Apr 12 12:00:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/net_postlist.cc: Include config.h

Thu Apr 12 11:54:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/multi/multi_termlist.cc: Include config.h to get system
	  specific defines.
	* common/safesysstat.h: Change signature of mkdir to take mode_t
	  instead of int, to match unixy definition.

Thu Apr 12 10:19:49 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Probe for mode_t.

Thu Apr 12 01:10:18 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Move BitReader class inside
	  Xapian namespace to avoid namespace pollution.
	* bin/xapian-check.cc: Include BitReader::decode_interpolative()
	  - previously we were relying on using the copy from the library.

Thu Apr 12 01:02:53 BST 2007  Olly Betts <olly@survex.com>

	* common/safesysstat.h: Under __WIN32__, provide a POSIX-like mkdir()
	  wrapper which takes 2 arguments, but ignores the file mode, so we
	  can just call mkdir with a mode argument everywhere.
	* common/utils.h: Remove special case handling of mkdir.
	* bin/xapian-compact.cc: Replace uses of om_tostring() with a call
	  to sprintf.  No longer need to `#include "utils.h"'.

Thu Apr 12 00:44:18 BST 2007  Olly Betts <olly@survex.com>

	* api/,backends/inmemory/inmemory_positionlist.cc,common/,matcher/,
	  net/remoteconnection.cc,net/serialise.cc: omdebug.h only includes
	  omassert.h for the trivial "STRINGIZE" macro, so just duplicate
	  that rather than pulling in an extra header everywhere.  Then fix
	  up the two dozen files which were relying on this implicit
	  inclusion!

Thu Apr 12 00:10:48 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Tweak #ifdef XAPIAN_DEBUG_VERBOSE to
	  include DEBUGLINE() for clarity (no change in behaviour).

Wed Apr 11 23:36:10 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix regression introduced by
	  Richard's change, and restructure to make the handling for each case
	  more obvious.
	* tests/queryparsertest.cc: Add a couple of testcases for the
	  regression.
	* queryparser/queryparser_internal.h: Remove reference to "bool" in
	  comment which no longer applies.

Wed Apr 11 21:25:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser_internal.h: Refactor boolean "flag"
	  member in BoolAndString class into an enum of possible prefix
	  types.  Rename "flag" to "type".  Rename BoolAndString to
	  PrefixInfo.
	* queryparser/queryparser.cc: Change add_prefix() and
	  add_boolean_prefix() to match changes to queryparser_internal.h
	* queryparser/queryparser.lemony: Refactor handling of prefixed
	  terms to match queryparser_internal, and to use a switch()
	  structure: no functional changes, but code is considerably more
	  readable (I hope).

Wed Apr 11 21:13:31 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/quartztest.cc: Rework quartztest's "open1"
	  into API level tests for quartz and flint in apitest.

Wed Apr 11 14:01:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/deprecation.rst: Remove documentation of the "#define
	  XAPIAN_DEPRECATED(D) D" hack, and clarify documentation on how
	  long we support deprecated functions.

Wed Apr 11 09:25:55 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am,docs/deprecation.rst: Add initial draft of
	  deprecation policy document, with list of all API items currently
	  marked for deprecation.
	* HACKING: Add note about keeping deprecation.rst up-to-date when
	  making a release.

Tue Apr 10 19:07:24 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: --enable-quiet now uses AS_HELP_STRING.

Tue Apr 10 18:53:32 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.cc: Return the empty document we already
	  have rather than constructing another.

Tue Apr 10 17:45:11 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Fix typo in comment.

Tue Apr 10 17:35:57 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Fix "if" to "is" typo in 3
	  comments.

Tue Apr 10 16:46:09 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Define XAPIAN_TCPSRV and
	  XAPIAN_PROGSRV under UNIX too, and use them everywhere.

Tue Apr 10 16:33:48 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.h: Remove "BackendManager::" from
	  method declaration.

Tue Apr 10 15:35:50 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Define HAVE_SOCKETPAIR if we have socketpair().

Tue Apr 10 15:29:49 BST 2007  Olly Betts <olly@survex.com>

	* net/progclient.cc: Fix #endif placement so it compiles on UNIX.

Tue Apr 10 14:18:06 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Remove debugging code.

Tue Apr 10 12:57:51 BST 2007  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc,common/progclient.h,net/progclient.cc,
	  net/remoteconnection.cc,tests/api_db.cc,tests/apitest.cc,
	  tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
	  Add support for the "prog" variant of the remote backend (patch
	  started by me, finished by Mark Hammond).

Tue Apr 10 12:23:46 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/inmemory/inmemory_database.cc,
	  backends/quartz/quartz_alldocspostlist.cc,matcher/localmatch.cc,
	  matcher/multimatch.cc,tests/harness/testutils.cc: Prefer
	  `CONTAINER.empty()' to `CONTAINER.size() == 0'.

Tue Apr 10 12:09:45 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Tighten up an assertion.

Mon Apr 09 20:56:23 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac,tests/harness/backendmanager.cc,tests/runsrv.in,
	  tests/runtest.in: Run the remote backend server using new "runsrv"
	  script instead of "runtest".  This doesn't echo anything to stdout,
	  and if valgrind is in use, runs the remote server under
	  "--tool=none" which is much quicker than using valgrind's default
	  memcheck tool (we need to run the remote server under valgrind
	  because valgrind's emulation of excess FP precision isn't exact and
	  otherwise we get tests failing because of these differences).

Mon Apr 09 20:24:30 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_nodb.cc: Move test poscollapse2 to the
	  "no database" category, since it doesn't require a database!

Mon Apr 09 18:04:40 BST 2007  Olly Betts <olly@survex.com>

	* docs/remote_protocol.html: Correct documentation - MSG_REOPEN gives
	  a response of REPLY_UPDATE.

Mon Apr 09 15:08:44 BST 2007  Olly Betts <olly@survex.com>

	* ./: svn:eol-style not svn:eolstyle.

Mon Apr 09 15:00:30 BST 2007  Olly Betts <olly@survex.com>

	* ./: Set svn:eolstyle to native for most text files.

Mon Apr 09 14:50:40 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Delete the corresponding entry
	  (if any) from doclens in delete_document().  Add assertion to
	  add_document_() that the corresponding entry in doclens isn't
	  already set, but in a non-debug build overwrite any existing
	  entry as that's more likely to be correct.
	* backends/quartz/quartz_database.cc: Ditto.

Mon Apr 09 14:08:55 BST 2007  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Just assign to doclens[did].

Mon Apr 09 14:06:58 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Just assign to doclens[did].

Mon Apr 09 11:29:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/quartz_database.cc: Apply same change to quartz.

Mon Apr 09 11:24:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_database.cc: Fix bug with document lengths
	  in replace document.  Was using doclens.insert() to set the new
	  document length, but this has no effect if the entry already
	  exists.  This fixes replacedoc3 for flint (and thus for remote
	  databases), but the same change is needed for quartz.
	* backends/flint/flint_postlist.cc: Add some debugging lines.

Mon Apr 09 01:43:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/: Add some more debugging messages to help track
	  down the problem with document lengths shown up by previous
	  change.

Mon Apr 09 01:40:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Add asserts to check that the value of
	  get_doclength() on the database and on the posting list are
	  correct.  Currently fails with the value from the posting list
	  for the document which has been replaced (or sooner if assertions
	  are turned on).

Sun Apr 08 23:24:20 BST 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac: `./configure --enable-quiet' allows you to
	  specify at configure time to pass `--quiet' to libtool.  Now you can
	  override this at make-time by using `make QUIET=' (to turn off
	  `--quiet') or `make QUIET=y' (to turn on `--quiet').

Sun Apr 08 23:23:50 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Mention AssertEqParanoid and AssertNeParanoid.

Sun Apr 08 22:45:45 BST 2007  Olly Betts <olly@survex.com>

	* common/omassert.h: Add AssertEqParanoid and AssertNeParanoid macros.
	* backends/flint/flint_table.cc,backends/inmemory/inmemory_database.cc,
	  backends/multi/multi_postlist.cc,backends/quartz/btree.cc: Use them.
	* backends/multi/multi_postlist.cc: Add extra assertions to
	  MultiPostList::get_doclength().

Sun Apr 08 22:16:11 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix typos: `AC_CHECK_SSIZE_T' -> `AC_TYPE_SSIZE_T';
	  `AC_CHECK_PID_T' -> `AC_TYPE_PID_T'.

Sun Apr 08 22:04:54 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Snapshots and releases are now generated with autoconf 2.61.

Sun Apr 08 21:42:03 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Use AC_CHECK_SSIZE_T instead of our own test.  Add
	  AC_CHECK_PID_T for any platforms which don't have `pid_t'.
	* net/tcpserver.cc: Use `pid_t' instead of `int'.
	* common/progclient.h,net/progclient.cc: Cleaner rewritten version of
	  progclient.h.

Sun Apr 08 19:59:43 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: If kill() fails, don't bother calling
	  waitpid().

Sun Apr 08 19:41:11 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Don't explicitly pass "0" for errno.

Sun Apr 08 16:58:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lt: Fix warnings in debugging builds on
	  gcc 4.1 due to comparison of signed and unsigned types.  Also,
	  use the ParseTokenName function instead of explicitly doing a
	  range check each time an entry is looked up in yyTokenName, and
	  add a ParseRuleName function for looking up things in yyRuleName,
	  and use it similarly.

Sun Apr 08 15:55:42 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix lingering references to enable_debug.

Sun Apr 08 15:48:13 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_wrdb.cc: Remove hacks to automatically
	  SKIP tests which failed because of lack of support for some features
	  by the remote backend.

Sun Apr 08 15:14:11 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser.lt: More
	  tweaks.

Sun Apr 08 15:04:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lt: Always include "omdebug.h", and put
	  one of the pieces of debugging code in #ifdef
	  XAPIAN_DEBUG_VERBOSE, to fix non-logging message builds.

Sun Apr 08 14:23:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/remote_protocol.html: Update for protocol version 27 by
	  adding documentation for MSG_POSTLIST and replies.  Also, fix a
	  typo.

Sun Apr 08 13:50:20 BST 2007  Olly Betts <olly@survex.com>

	* common/omdebug.h,queryparser/queryparser.lemony,
	  queryparser/queryparser.lt: Hook the debug tracing in the lemon
	  generated parser into Xapian's debug logging framework.

Sun Apr 08 12:35:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/,common/remote-database.h,common/remoteprotocol.h,
	  common/remoteserver.h,net/remoteserver.cc: Implement postlists
	  for the remote database.  Increases
	  XAPIAN_REMOTE_PROTOCOL_VERSION to 27.

Sun Apr 08 12:33:02 BST 2007  Olly Betts <olly@survex.com>

	* HACKING,INSTALL,configure.ac: Rename --enable-debug* - conflating the
	  options to "turn on assertions" and "turn on logging" still confuses
	  me to the extent I need to read the documentation every time I use
	  them.  `--enable-debug[=partial]' become `--enable-assertions';
	  `--enable-debug-verbose' becomes `--enable-log' and
	  `--enable-debug=full' becomes `--enable-assertions --enable-log'.
	  For now the old options give an error telling you the new
	  equivalent.

Sun Apr 08 10:45:40 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Eliminate use_quiet - just use enable_quiet instead.

Fri Apr 06 19:06:07 BST 2007  Olly Betts <olly@survex.com>

	* net/progclient.cc: Close stderr of the spawned backend program.

Fri Apr 06 18:59:24 BST 2007  Olly Betts <olly@survex.com>

	* net/progclient.cc: msecs_timeout_ -> msecs_timeout.

Fri Apr 06 18:12:36 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Fix comment grammar.

Fri Apr 06 18:10:31 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Deal with the exceptional case first.

Fri Apr 06 17:51:20 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Use string::append(ptr, size) in preference
	  to string::append(ptr, ptr + size).

Fri Apr 06 11:45:39 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/flint/flint_database.cc,
	  backends/flint/flint_database.h,backends/flint/flint_postlist.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
	  backends/quartz/quartz_postlist.cc,
	  backends/remote/remote-database.cc,common/database.h,
	  common/remote-database.h: Refactor to eliminate do_open_post_list
	  and any unnecessary call to term_exists().

Fri Apr 06 11:44:25 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Just use TEST on a boolean value rather than
	  TEST_EQUAL against true/false.

Fri Apr 06 08:53:46 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteserver.cc: Remove "N" which we calculate but never use!

Fri Apr 06 08:17:00 BST 2007  Olly Betts <olly@survex.com>

	* backends/flint/Makefile.mk,backends/flint/flint_check.cc,
	  backends/flint/flint_check.h,bin/Makefile.mk,bin/xapian-check.cc:
	  Fix xapian-check not to use libquartzcheck.la.

Fri Apr 06 07:20:47 BST 2007  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,bin/xapian-check.cc: Add new "xapian-check" program
	  which performs consistency checks on a flint database.

Fri Apr 06 06:25:36 BST 2007  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Test if this is a quartz database by looking at
	  "meta" not "record_DB".  If "record_DB" is >= 2GB and we don't have
	  a LFS aware stat function then stat can fail even though the file is
	  there.  Also open the database explicitly as a Quartz database for
	  extra robustness.

Fri Apr 06 06:23:33 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Thank Daniel Ménard.

Thu Apr 05 18:20:53 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: No need to explicitly initialise
	  std::string to ""; not doing so results in a smaller object
	  file.

Thu Apr 05 18:20:12 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteprotocol.h: Note other changes in protocol version 26.

Thu Apr 05 17:34:10 BST 2007  Olly Betts <olly@survex.com>

	* tests/runtest.in: Pass "--leak-resolution=high" to valgrind to
	  prevent unrelated leak reports related to STL classes from being
	  combined.

Thu Apr 05 17:26:39 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Remove stray line left over from debugging.

Thu Apr 05 16:47:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/internaltest.cc: Fix test_serialiselength2: implementation
	  was correct, but test was failing.  Needed special casing for n=0
	  and 1, and was using arguments to string::append(size_type,
	  charT) the wrong way round (stupid C++ API).  Also, make it check
	  the return value of decode_length(), since we know what the
	  answer ought to be.

Thu Apr 05 14:26:30 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/remote/remote-database.cc,
	  common/serialise.h,net/remoteserver.cc,net/serialise.cc,
	  tests/internaltest.cc: Add a flag parameter to decode_length()
	  to indicate if the decoded value indicates the length of a
	  string in the protocol stream, and if it does, check it against
	  p_end - p after the length has been decoded (fixes bug#117).

Thu Apr 05 14:08:02 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: In test uniqueterm1, check the document length
	  after every delete or replace for better coverage.

Thu Apr 05 12:41:04 BST 2007  Olly Betts <olly@survex.com>

	* net/serialise.cc: Encode deltas between docids (rather than the
	  docids themselves) in the RSet serialisation which reduces the
	  size of the encoding if a lot of large docids with small gaps
	  between them are present.
	* backends/remote/remote-database.cc,net/remoteserver.cc: Encode
	  deltas between termpositions in REPLY_POSITIONLIST, for similar
	  reasons.  No need to encode the term length for
	  MSG_DELETEDOCUMENTTERM as it's the last (indeed only) item, and more
	  consistent not to.
	* common/remoteprotocol.h: Bump protocol version to 26.
	* docs/remote_protocol.html: Document the new messages
	  MSG_DELETEDOCUMENTTERM and MSG_REPLACEDOCUMENTTERM.  Correct
	  reference to REPLY_DOCUMENT to REPLY_DOCDATA.  Fix documentation for
	  MSG_QUERY to include the serialised Weight and RSet objects.  Fix
	  "copy and paste" error in the description of Flush (should of course
	  be MSG_FLUSH not MSG_CANCEL).  Update for changes above.

Thu Apr 05 12:18:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/database.cc: Keep a RefCntPtr to the LeafPostList used
	  in implementations of delete_document and replace_document with a
	  unique term, so that the postlist isn't leaked.

Thu Apr 05 11:56:57 BST 2007  Olly Betts <olly@survex.com>

	* backends/database.cc: Database::Internal can't call the
	  PostingIterator(PostingIterator::Internal*) ctor (at least under
	  g++ 3.3.5) because it isn't a friend (only class Database is).
	  Can't seem to forward define Database::Internal to make
	  Database::Internal a friend so just use LeafPostList directly
	  as that seems less bad than pulling in the whole of database.h
	  or making PostingIterator::internal public.

Thu Apr 05 08:27:26 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Need to run svn-tag-release on ixion.

Thu Apr 05 01:50:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/remote/remote-database.cc,common/remote-database.h,
	  common/remoteprotocol.h,common/remoteserver.h,net/remoteserver.cc:
	  Implement unique term variants of delete and replace document for
	  the remote database.  Involves adding two new message types to the
	  protocol (and therefore bumping the protocol version to 25), and
	  overriding the standard implementations of delete_document(term)
	  and replace_document(term) in RemoteDatabase.
	* tests/api_wrdb.cc: Correct text in SKIP_TEST() message.

Thu Apr 05 01:04:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* api/omdatabase.cc,backends/database.cc,common/database.h: Move
	  implementation of delete_document and replace_document with a
	  unique_term from WritableDatabase to Xapian::Database::Internal.
	  This will allow it to be overridden for databases which need a
	  special implementation (such as the remote database).

Tue Apr 03 14:30:45 BST 2007  Olly Betts <olly@survex.com>

	* common/remote-database.h: Remove unused and undefined method
	  RemoteDatabase::get_spawned_socket().

Tue Apr 03 09:18:51 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Under __WIN32__, launch
	  xapian-tcpsrv as a child process communicating via a pipe and handle
	  the port being already in use by trying the next port up (as we do
	  under UNIX).

Tue Apr 03 06:50:48 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: For __WIN32__ and __CYGWIN__, use
	  SO_EXCLUSIVEADDRUSE (if available) on on listening sockets for
	  xapian-tcpsrv.

Tue Apr 03 04:37:02 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/positioniterator.h,include/xapian/postingiterator.h:
	  Fix mangled comment start in (C) headers.

Tue Apr 03 03:27:12 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/,generate-exceptions.in: Mark the following
	  constructors 'explicit': DocIDWrapper(docid), TermPosWrapper(const
	  std::string &), Query::Internal(const std::string &), Database(const
	  std::string &), all Error subclass constructors taking const
	  std::string &.  Only the Database and Error subclass changes should
	  be able to affect user code at all.
	* include/xapian/,api/omenquire.cc: Make the following methods
	  'const': RSet::contains(MSetIterator), Enquire::get_query().  This
	  shouldn't affect the validity of any user code.

Mon Apr 02 11:44:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note on "Building from SVN on Windows with MSVC"

Mon Apr 02 11:32:51 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix assertion to allow for OP_VALUE_RANGE.

Mon Apr 02 11:14:10 BST 2007  Olly Betts <olly@survex.com>

	* autoconf/rjb_find_stlport.m4: Fix check that the user didn't say
	  `./configure --with-stlport-compiler' (without `=gcc' or similar
	  after it).

Mon Apr 02 10:38:35 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/apitest.cc: Under __WIN32__ disable tests
	  which require the prog variant of the remote backend.

Mon Apr 02 09:44:13 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Don't use SO_REUSEADDR under __CYGWIN__ or
	  __WIN32__ as it has incorrect semantics.

Mon Apr 02 09:37:14 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Pull `1239' out as `DEFAULT_PORT'.
	  On Windows, cycle through 10 ports starting at DEFAULT_PORT so that
	  we can have multiple databases open at once.  Add a monotonic count
	  to the name of the log file created from the output of each
	  xapian-tcpsrv to avoid failures because the log file is already
	  open.

Mon Apr 02 07:41:57 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Avoid having the same database open twice at
	  once.  Xapian itself copes, but the BackendManager class in the test
	  harness struggles in the remotetcp case under mingw.

Mon Apr 02 07:14:13 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Make Enquire constructor explicit since
	  it can take a single parameter (of type Database).

Mon Apr 02 02:32:23 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Add "#error" if neither HAVE_FORK nor __WIN32__
	  is defined (otherwise we'd failed with a rather obscure link error
	  much later!)

Mon Apr 02 01:54:20 BST 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Remove unused variable left over from
	  recent change.

Mon Apr 02 01:22:56 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Actually remove SOCKOPT_OPTIONS_TYPE.

Mon Apr 02 01:16:03 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpclient.cc,net/tcpserver.cc: Pass the 4th parameter of
	  setsockopt() as char* which works whether the function actually
	  takes char* or void* (since C++ allows implicit conversion from
	  char* to void*).  Only call socket_errno() after gethostbyname()
	  under __WIN32__ - on UNIX the error code is in h_errno (with
	  incompatible values to errno) and we don't want to confuse things by
	  reporting some random value of errno.

Mon Apr 02 00:44:56 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Factor out localhost address into
	  LOCALHOST.  Use new xapian-tcpsrv --interface option to only listen
	  for connections on localhost.  Run xapian-tcpsrv with "start /B" on
	  MS Windows (this stops the "flickbook of console windows" effect).

Mon Apr 02 00:41:31 BST 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/safesyssocket.h: Oops, I checked
	  in safesysselect.h as safesyssocket.h!

Mon Apr 02 00:30:54 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix SimpleStopper::add to take
	  `const std::string &' not `const std::string'.

Mon Apr 02 00:20:45 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc,net/tcpserver.cc: Add "--interface" option to
	  allow the hostname or address of the interface to listen on to be
	  specified (default is the previous behaviour of listening on all
	  interfaces).
	* net/remoteconnection.cc,net/tcpclient.cc,common/safesysselect.h:
	  Factor out portability code for sys/select.h.
	* common/Makefile.mk: Ship common/safesysselect.h.
	* net/tcpserver.cc: Rename parameter of run_thread from "_param" to
	  "param_" (identifiers with leading underscores are reserved for the
	  compiler).
	* common/tcpclient.h,net/tcpclient.cc,common/tcpserver.h: Rewrite
	  headers with comments which are actually accurate and up-to-date!
	  TcpClient ctor is small so put inline in the header.  Pass
	  std::string by const reference.
	* common/tcpclient.h,common/tcpserver.h: TcpClient and TcpServer
	  classes now inherit from WinsockInitializer under __WIN32__ (as
	  a mixin class) instead of having a member of type WinsockInitializer
	  (the member is initialised too late, at least under mingw).

Sun Apr 01 19:14:11 BST 2007  Olly Betts <olly@survex.com>

	* common/omdebug.cc: Fix retrying of write to retry the part of
	  the string not already written!

Sun Apr 01 18:37:15 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteconnection.h: Note in comments about use as a "mixin"
	  class.

Sun Apr 01 17:42:19 BST 2007  Olly Betts <olly@survex.com>

	* tests,examples,bin: Add .exe versions of built executables to
	  svn:ignore.

Sun Apr 01 16:28:26 BST 2007  Olly Betts <olly@survex.com>

	* common/omdebug.cc: Remove unused '#include <stdio.h>' - we switched
	  to using unbuffered I/O for logging long ago!

Sun Apr 01 15:21:04 BST 2007  Olly Betts <olly@survex.com>

	* common/safewinsock2.h: No, don't typedef socklen_t here - we use
	  SOCKLEN_T everywhere and have `#define SOCKLEN_T int' in
	  config.h.win32.

Sun Apr 01 13:32:21 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/omdebug.cc: Include necessary headers to get O_CREAT and
	  friends defined (according to documentation in linux manpage),
	  to fix compile error.  Also, don't ignore the return value of
	  write() to fix compile warning (and to ensure that the whole
	  output gets written if possible).

Sun Apr 01 13:19:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.cc: Fix Assert() on a RefCountPtr to
	  check the value of the pointer, to fix compile with asserts
	  turned on.

Sun Apr 01 12:57:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/safewinsock2.h: Define socklen_t under MS compiler (since
	  Olly reported build success with mingw, presumably it's not
	  needed there).

Sun Apr 01 06:42:14 BST 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: $(snowball_algorithms:.sbl=.cc) is portable
	  according to the automake list so use that so we only need to list
	  the .sbl sources.

Sun Apr 01 05:53:29 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpserver.h,net/tcpserver.cc: TcpServer's port member
	  variable is set but never used so remove it.

Sun Apr 01 03:27:30 BST 2007  Olly Betts <olly@survex.com>

	* bin/Makefile.mk,examples/Makefile.mk: Add $(EXEEXT) to dependency on
	  binaries in man page generation rules so they work on Windows.

Sat Mar 31 22:17:55 BST 2007  Olly Betts <olly@survex.com>

	* common/multimatch.h,matcher/multimatch.cc: When using a MatchDecider
	  with remote database(s), don't rerun the MatchDecider on documents
	  which a remote server has already checked.

Sat Mar 31 10:44:26 BST 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Sort out path to xapian-tcpsrv
	  under mingw.  If neither HAVE_FORK nor __WIN32__ is defined,
	  make compilation fail with a suitable #error.

Sat Mar 31 10:17:06 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile,backends/Makefile,backends/flint/Makefile,
	  backends/inmemory/Makefile,backends/multi/Makefile,
	  backends/quartz/Makefile,backends/remote/Makefile,bin/Makefile,
	  common/Makefile,examples/Makefile,getopt/Makefile,include/Makefile,
	  languages/Makefile,matcher/Makefile,net/Makefile,
	  queryparser/Makefile,tests/harness/Makefile: Don't pass $(MAKEFLAGS)
	  on the command line to $(MAKE) when invoking the top level Makefile
	  from a static Makefile.  It's passed automatically anyway, and also
	  $(MAKEFLAGS) doesn't have a leading '-' so "make -s" tries to do
	  "make s" at the top level.

Sat Mar 31 09:28:06 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Fix end of loop handling.

Sat Mar 31 09:03:26 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Fix to compile.

Sat Mar 31 07:53:25 BST 2007  Olly Betts <olly@survex.com>

	* common/safewindows.h,common/safewinsock2.h: safewindows.h is
	  included by a lot of files so we want to keep it lightweight
	  so split winsock2.h related stuff into safewinsock2.h.
	* common/remoteconnection.h: Move WinsockInitializer here.
	* common/safeerrno.h: #include "safewinsock2.h" not <winsock2.h>.

Sat Mar 31 07:19:06 BST 2007  Olly Betts <olly@survex.com>

	* common/remoteserver.h: Stop trying to include "remoteserver.h"
	  because that's the SAME HEADER!

Sat Mar 31 07:16:23 BST 2007  Olly Betts <olly@survex.com>

	* common/tcpclient.h,common/tcpserver.h: Fix comments - the class is
	  called WinsockInitializer not WinsockInitialiser.

Sat Mar 31 06:54:22 BST 2007  Olly Betts <olly@survex.com>

	* net/progclient.cc: Don't compile any code from this file if
	  __WIN32__ is defined (for mingw).

Sat Mar 31 06:52:27 BST 2007  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Simplify code in test_stemlangs1().

Sat Mar 31 06:22:26 BST 2007  Olly Betts <olly@survex.com>

	* net/remoteconnection.cc: Use const_cast to avoid GCC warning
	  about casting away const.  Use string::data() rather than
	  string::c_str() since we don't need a terminating zero byte.

Sat Mar 31 06:20:07 BST 2007  Olly Betts <olly@survex.com>

	* backends/dbfactory_remote.cc: Suppress "unused parameter" warnings.

Sat Mar 31 06:17:35 BST 2007  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Make global variable and function used only in
	  this file static.  Don't call delete on a void* (that's undefined
	  behaviour) - delete the cast version of the pointer instead.

Sat Mar 31 06:17:20 BST 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Add a number of bug reporters I missed before.

Sat Mar 31 04:49:27 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Clean up handling of --enable-backend-* options.  Let
	  mingw try to build the remote backend.

Sat Mar 31 03:47:49 BST 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Don't compile test_serialisequery1
	  if the remote backend is disabled to avoid an "unused
	  function" warning (we were already disabling the use of
	  it).

Fri Mar 30 22:43:27 BST 2007  Olly Betts <olly@survex.com>

	* HACKING: Correct several inaccuracies: --enable-debug and
	  --enable-debug=partial don't cause the build system to compile in
	  debugging symbols (configure defaults to adding "-g" for GCC, while
	  for other compilers you must enable them by hand).  Also,
	  --enable-debug doesn't "produce warnings", but causes
	  Xapian::AssertionError to be thrown.  Add explanation for why
	  --enable-debug=partial" exists.  CC_FOR_BUILD is now needed for
	  snowball as well as lemon.

Fri Mar 30 19:53:05 BST 2007  Olly Betts <olly@survex.com>

	* common/utils.cc: Avoid GCC warning on format string "%I64d".

Fri Mar 30 16:48:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/tcpserver.h,net/tcpserver.cc: Patch from Mark Hammond:
	  implement for windows.

Fri Mar 30 16:21:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/tcpclient.h,net/tcpclient.cc: Patch from Mark Hammond:
	  implement for windows.

Fri Mar 30 15:52:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/backendmanager.cc: Patch from Mark Hammond:
	  implement launcher for tcpserver, so that remotetcp tests can run
	  on windows.

Fri Mar 30 15:42:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/safewindows.h: Include xapian/error.h so
	  WinsockInitialiser can throw an exception.

Fri Mar 30 14:59:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* More code from Mark Hammond's patch
	* common/remoteconnection.h: Add explicit destructor and (for
	  windows compiles) a declare a helper method to calculate the
	  number of milliseconds until a timeout.
	* net/remoteconnection.cc: Implement windows versions for functions
	  which need it: constructor and destructor now do create and close
	  the overlapped IO stuff, read_at_least() and send_message() have
	  windows specific implementations.

Fri Mar 30 13:05:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* More code adapted from Mark Hammond's patch
	* common/safewindows.h: When remote databases are compiled in,
	  include the winsock stuff, and define some useful bits and pieces
	  for using it.
	* common/remoteconnection.h: Add a member to RemoteConnection on
	  windows to hold an overlapped IO structure.
	* net/progclient.cc: Don't include winsock stuff directly (it's now
	  brought in by "safewindows.h"), and don't include <sys/wait.h> on
	  windows.
	* net/remoteserver.cc: Ignore more SIGPIPE stuff on windows.

Fri Mar 30 12:37:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Patch from Mark Hammond
	* backends/dbfactory_remote.cc: Ignore code to handle SIGPIPE on
	  windows, where it doesn't exist.
	* backends/remote/remote-database.cc: Raise UnimplementedError on
	  windows if a progclient backend is requested.

Fri Mar 30 12:11:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/testsuite.cc: Fix srcdir guessing on windows -
	  search for windows style directory separators, and remove .exe
	  suffix from executable name.  Adapted from Mark Hammond's patch.

Thu Mar 29 18:32:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Changes related to Mark Hammond's patch:
	* common/safeerrno.h: Define a new inline function "socket_errno()"
	  which returns an error number relating to the last error caused
	  by a socket function on platforms which make such a distinction,
	  and the value of errno on other platforms.
	* net/tcpclient.cc,net/tcpserver.cc: Use the socket_errno()
	  function instead of checking the value of errno.  Also, check for
	  WSAEWOULDBLOCK instead of EINPROGRESS on windows.

Thu Mar 29 15:36:45 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* bin/xapian-tcpsrv.cc,tests/harness/testsuite.cc: First of many
	  parts of a large patch from Mark Hammond working towards enabling
	  remote databases on windows.  When displaying errors which might
	  be socket errors, display the error number as well as the output
	  of strerror - on windows, strerror doesn't display useful
	  information for socket errors.
	* AUTHORS: Add Mark Hammond

Thu Mar 29 06:07:35 BST 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Unserialisation shouldn't reject a
	  serialised query which ends after a termname.
	* tests/internaltest.cc: Add regression test.

Wed Mar 28 17:17:42 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add feature tests for "prefer_mdy" and
	  "epoch" arguments of DateValueRangeProcessor.

Wed Mar 28 04:52:34 BST 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add more test cases for parsing of value
	  ranges.

Wed Mar 28 04:18:14 BST 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c,languages/compiler/header.h,
	  languages/steminternal.cc,languages/steminternal.h: For among with
	  functions (only used by finnish and lovins stemmers currently),
	  change to generating an array of unsigned byte offsets into an array
	  of function pointers rather than just an array of function pointers
	  - this generally requires a lot less space.

Wed Mar 28 03:28:37 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix parsing of `hello a..b'.
	* tests/queryparsertest.cc: Add regression test for above.  Refactor
	  qp_value_range1 to use a table of queries.

Wed Mar 28 00:35:50 BST 2007  Olly Betts <olly@survex.com>

	* languages: Update svn:ignore for recent romanian changes.

Wed Mar 28 00:08:11 BST 2007  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc: Need #include <stdio.h> for snprintf or
	  sprintf.

Tue Mar 27 23:53:18 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix infinite loop in value range
	  processing.  Fix value range to work as a filter when used with a
	  probabilistic query.
	* tests/queryparsertest.cc: Add regression tests for the above two
	  issues.  Refactor qp_value_range2 to use a table of queries.

Tue Mar 27 22:09:57 BST 2007  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc: Assume that the start date is before the
	  end date to help decide ambiguous cases.

Tue Mar 27 21:49:15 BST 2007  Olly Betts <olly@survex.com>

	* api/valuerangeproc.cc: Refactor to simplify and reduce duplication.

Tue Mar 27 21:41:38 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: datarootdir is new in 2.60 too, so use datadir when
	  setting docdir for 2.59.

Tue Mar 27 18:39:11 BST 2007  Olly Betts <olly@survex.com>

	* api/Makefile.mk,api/valuerangeproc.cc,include/xapian/queryparser.h:
	  Move NumberValueRangeProcessor::operator()() out of the header as
	  it's too complex for sane inlining.  Implement handling of dmy and
	  mdy dates and epochs for 2 digit years.
	* tests/queryparsertest.cc: Add tests.

Tue Mar 27 11:57:53 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* languages/romanian.sbl: Add Martin Porter's new romanian stemming
	  algorithm.
	* languages/romanian1.sbl,languages/romanian2.sbl: Remove old
	  romanian stemming algorithms.
	* languages/Makefile.mk: Replace romanian1 and romanian2 by
	  romanian.
	* languages/stem.cc: Use romanian stemmer when asked for "ro" or
	  "romanian".  No longer give a stemmer for "romanian1" or
	  "romanian2".

Tue Mar 27 04:50:36 BST 2007  Olly Betts <olly@survex.com>

	* languages/german2.sbl: Copy over "hop 3" in utf-8 case from
	  snowball's latest version.

Tue Mar 27 04:44:52 BST 2007  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Remove lower casing of dictionary words before
	  stemming - instead we'll make sure the dictionary is already the
	  right case.

Tue Mar 27 04:28:10 BST 2007  Olly Betts <olly@survex.com>

	* languages/compiler/analyser.c,languages/compiler/generator.c,
	  languages/compiler/header.h,languages/steminternal.cc,
	  languages/steminternal.h: Add handling of among with functions.
	  We use a "shim" functions for each method we want to call in
	  this way.  The shim function is passed the "this" pointer and
	  calls a particular method on this.  Split the functions into
	  an optional separate array, since they're not used by most of
	  the stemming algorithms.
	* languages/Makefile.mk,languages/stem.cc: Enable the finnish
	  and lovins stemmers.

Tue Mar 27 04:24:37 BST 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc: Fix typo bug in slice_to - if we needed
	  to increase the capacity of a snowball string variable, we trashed
	  the variable with p (bug discovered while trying to enable the
	  finnish stemmer).

Tue Mar 27 02:55:51 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Implement handling of ISO format dates
	  in DateValueRangeProcessor.
	* tests/queryparsertest.cc: Add feature tests.

Tue Mar 27 01:47:36 BST 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Implement prefix and suffix handling
	  for NumberValueRangeProcessor.
	* tests/queryparsertest.cc: Add feature tests.

Mon Mar 26 22:26:48 BST 2007  Olly Betts <olly@survex.com>

	* queryparser/utf8itor.h: Add is_currency() predicate function.
	* queryparser/queryparser.lemony: Rejig parsing of RANGE_START to
	  allow all characters which are likely to be required.
	* tests/queryparsertest.cc: Test RANGE_START can contain "/".
	* queryparser/queryparser.lemony: Set "syntax=yacc" for vim, which
	  give fairly decent syntax highlighting.

Mon Mar 26 15:43:50 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Use m4 comments not shell (dnl not #).

Mon Mar 26 15:41:41 BST 2007  Olly Betts <olly@survex.com>

	* configure.ac: Add code to ensure that docdir is set for autoconf
	  2.59 (starting from 2.60, it is defined as standard).
	* docs/Makefile.am: Use docdir for installing docs.

Sun Mar 25 15:41:16 BST 2007  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Prune unused docids off the start of each
	  source database's range of docid.

Sat Mar 24 23:07:42 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/base.h: Add a note explaining why it's OK that
	  RefCntBase doesn't have a virtual destructor.

Sat Mar 24 01:30:17 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING,configure.ac: Bump the automake required version to 1.9.5.
	  It was in Debian sarge, so any modern Linux distro should include
	  packages, and we've actually been bootstrapping with 1.9.6 for ages.

Thu Mar 22 00:53:35 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Disable probes for f77 more completely by preventing
	  the probe code from even appearing in configure.  Similarly
	  eliminate the code for gcj and rc probes - in total these changes
	  reduce the size of configure by 209KB (~25%).

Fri Mar 09 14:28:01 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* Makefile.am: Add include/xapian/error.h to list of headers to
	  install.

Thu Mar 08 17:16:08 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* generate-exceptions.in,exception_data.pm: Split definitions of
	  the exception hierarchy into a separate file, so it can be reused
	  elsewhere.
	* Makefile.am: Add exception_data.pm as a dependency for generating
	  error.h, and add it to EXTRA_DIST.

Fri Mar 09 06:42:40 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.cc,backends/flint/flint_cursor.h: We
	  always ignore the return value from FlintCursor::get_key() because
	  we only call it when it shouldn't fail, so restructure the code so
	  it can't fail and change the return value to void.

Fri Mar 09 06:33:09 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Suppress another aCC warning.

Thu Mar 08 20:39:46 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Allow
	  arbitrary characters in a range end (anything except whitespace
	  and ')').

Thu Mar 08 19:46:46 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,languages/Makefile.mk: Depend on the autoconf
	  substituted version of a script, not the template version.  The
	  only thing we substitute is @PERL@, but configure won't update
	  a substituted file which hasn't changed so it's better to put
	  the dependency on the script itself where it belongs.

Thu Mar 08 17:09:21 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Keep any
	  non-whitespace, non-term prefix for a term in case it turns out
	  to be the start of a range, so "$50..100" works.

Thu Mar 08 16:21:14 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: Add my "create docs/GNUmakefile" trick to avoid doxygen
	  delays.

Thu Mar 08 16:13:39 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: A few more coding guidelines.

Thu Mar 08 14:26:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Adjust wording to indicate that the build system is
	  indended not to break after SVN updates.

Thu Mar 08 07:34:22 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,tests/queryparsertest.cc: Add simple
	  implementations of DateValueRangeProcessor and
	  NumberValueRangeProcessor and add qp_value_range2 to check that
	  chaining ValueRangeProcessor subclasses works as intended.

Thu Mar 08 06:06:15 GMT 2007  Olly Betts <olly@survex.com>

	* docs/overview.html: Fix links to error classes in generated API
	  documentation.

Thu Mar 08 05:37:13 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
	  tests/queryparsertest.cc: Add the ability to parse "value ranges"
	  to the QueryParser (e.g. "10..50") which translate into a Query
	  with operator OP_VALUE_RANGE.

Thu Mar 08 04:27:54 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc: Remove
	  QueryParser::set_stemming_options() which has been deprecated
	  since 0.9.0.

Thu Mar 08 03:37:07 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: Handle write failing to send a single
	  byte down down the pipe to tell the parent we've got the lock (a
	  potential bug noticed by _FORTIFY_SOURCE!)  Handle read() failing
	  with an unexpected error on the parent side by failing the lock
	  attempt rather than risking an infinite loop.

Thu Mar 08 02:52:26 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/types.h: Rewritten, with more accurate documentation
	  comments.  Add constant Xapian::BAD_VALUENO which is -1 cast to
	  Xapian::valueno.
	* api/omenquire.cc,include/xapian/enquire.h,matcher/multimatch.cc: Use
	  Xapian::BAD_VALUENO instead of Xapian::valueno(-1).

Thu Mar 08 01:47:08 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Try putting apidoc/html in EXTRA_DIST instead of
	  using dist-hook.

Wed Mar 07 23:16:52 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Stop shipping docs/apidoc/latex/* in the
	  xapian-core tarballs since it's just useless bloat.  Removing it
	  more than halves the size of the tarball (55% reduction!)

Wed Mar 07 22:07:31 GMT 2007  Olly Betts <olly@survex.com>

	* tests/runtest.in: If we aren't using valgrind, turn on
	  MALLOC_CHECK_ and MALLOC_PERTURB_ for glibc.

Wed Mar 07 20:02:31 GMT 2007  Olly Betts <olly@survex.com>

	* INSTALL: CVS -> SVN.

Wed Mar 07 20:00:37 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Define _FORTIFY_SOURCE in config.h if GCC is in use
	  and it's not already set.  That way the user can easily override.
	* INSTALL: Document this.

Wed Mar 07 19:53:15 GMT 2007  Olly Betts <olly@survex.com>

	* INSTALL: Remove reference to muscat36 backend.

Wed Mar 07 17:37:07 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Note GCC and glibc versions needed for _FORTIFY_SOURCE
	  support.

Wed Mar 07 16:29:02 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Increase the length allowed for the filename
	  in an error message, as it was being truncated which makes for a
	  confusing error message and stops editors jumping to the line with
	  the error in.

Wed Mar 07 15:57:15 GMT 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk: Ship common/msvc_posix_wrapper.h and
	  common/msvc_posix_wrapper.cc.

Wed Mar 07 10:01:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Add -D_FORTIFY_SOURCE to AM_CXXFLAGS for GCC
	  builds.  According to glibc CVS support for this was added in
	  October 2004, but it doesn't seem to be documented very well,
	  other than in features.h.  This adds some extra checking for
	  array bounds, partially at compile time, but doesn't currently
	  find any problems (or cause any noticeable slowdown).

Wed Mar 07 04:49:01 GMT 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Include str_parameter in swap() and the copy
	  constructor.
	* tests/api_anydb.cc: get_mset(0, 20) not get_mset(1, 20)!  Also check
	  that we didn't miss any documents which should match the filter, not
	  just that we didn't get any documents which shouldn't.

Wed Mar 07 03:07:49 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/unixcmds.h: Fixed reverse sense include guard test.
	* tests/api_db.cc: Still need #include "utils.h".
	* tests/harness/backendmanager.cc: Update for rmdir.h -> unixcmds.h
	  and rmdir() -> rm_rf().

Wed Mar 07 02:22:30 GMT 2007  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_log.cc,common/utils.h,net/remoteconnection.cc,
	  net/tcpclient.cc,tests/api_db.cc,tests/btreetest.cc,tests/harness/,
	  tests/quartztest.cc: Rename rmdir() to rm_rf() since it does the
	  same as "rm -rf" not "rmdir".  The "touch()" function is only used
	  in the testsuite so move it from common/utils.h into
	  tests/harness/rmdir.cc and rename rmdir.cc to unixcmds.cc.
	  common/utils.h no longer include safefcntl.h, so add explicit
	  includes to the files which were previous relying on utils.h pulling
	  it in.

Wed Mar 07 02:21:18 GMT 2007  Olly Betts <olly@survex.com>

	* xapian.spec.in: Include ChangeLog.examples.

Wed Mar 07 02:17:59 GMT 2007  Olly Betts <olly@survex.com>

	* docs/index.html,docs/internals.html: Create a separate index page
	  for the "internal" documentation.

Tue Mar 06 23:47:58 GMT 2007  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Remove map_string_to_value() which
	  is no longer used.
	* common/utils.h: Remove prototype for rmdir() which I failed to
	  remove with the earlier commit.

Tue Mar 06 22:51:51 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/rmdir.cc: Fix rmdir() on Unix to not be O(n^2) in the
	  worst case.

Tue Mar 06 22:46:30 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Use the "inline test || echo" idiom to merge the
	  VPATH and non-VPATH cases for distributing and installing the HTML
	  apidocs.

Tue Mar 06 22:13:03 GMT 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix Query::get_description() on an
	  OP_VALUE_RANGE query.

Tue Mar 06 09:03:33 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Note on running preautoreconf and autoreconf to keep SVN
	  builds working.
	* PLATFORMS: Update with success reports for windows builds.

Tue Mar 06 01:57:23 GMT 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Comment out the "unsigned long long" testcase
	  in tostring1 since the library doesn't currently have (or need) the
	  utility function for that case.

Tue Mar 06 01:49:55 GMT 2007  Olly Betts <olly@survex.com>

	* common/utils.cc,tests/btreetest.cc,tests/harness/,
	  tests/quartztest.cc: rmdir() is only used in the test suite, and not
	  in the library code, so move it into the testsuite.  Also, bow out
	  early if the pathname passed is empty, and on Unix protect against
	  filenames which start with "-".

Mon Mar 05 02:52:49 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Suppress more unhelpful aCC warnings.

Mon Mar 05 02:15:29 GMT 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Add testcase autoptr1 which tests that an
	  autoptr correctly handles self-assignment.

Mon Mar 05 02:05:53 GMT 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Rename "omtostring1" to "tostring1" (we don't
	  want to perpetuate references to "om"!)  Add more test cases to this
	  test.

Mon Mar 05 01:18:17 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Update in line with 0.9.10.

Sun Mar 04 23:58:29 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS: Add reporters of bugs fixed in 0.9.10 to the "thanks" list.

Sun Mar 04 00:44:17 GMT 2007  Olly Betts <olly@survex.com>

	* api/errorhandler.cc,include/xapian/errorhandler.h: Move virtual
	  dtor for ErrorHandler out of the header.  Same reasons as previous
	  commit.

Sun Mar 04 00:40:44 GMT 2007  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h,matcher/Makefile.mk,
	  matcher/weight.cc: Move virtual method definitions out of headers
	  for MatchDecider, ExpandDecider, Weight, BoolWeight.  This fixes
	  warnings from aCC, and it's rare that the compiler would be able
	  to inline a virtual method anyway.

Sat Mar 03 21:40:43 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: For HP's aCC, we no longer need to suppress warning
	  #336 (empty translation unit) since dummy.cc is history.  But we
	  do want to suppress a couple of frequently reported "remarks" which
	  are unavoidable and don't indicate a problem.  Experimentally, add
	  "+wlint" for "link-like" warnings.

Sat Mar 03 21:38:52 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian.h,include/xapian/version_h.cc: Move function
	  prototypes into a non-generated header.
	* configure.ac,msvc/version.h.in: Generate version.h suitable for use
	  with MSVC.
	* Makefile.am: Distribute msvc/version.h.

Sat Mar 03 19:49:11 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Rework how we start and handle
	  xapian-tcpsrv - it's now started by exec from a child process.
	  This means that the mechanism to try higher port numbers works
	  reliably, and we no longer leak file descriptors (which was causing
	  tests to fail on some platforms).

Sat Mar 03 19:46:03 GMT 2007  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: Put "e.get_errno()" in a variable for clearer
	  code.

Sat Mar 03 16:01:17 GMT 2007  Olly Betts <olly@survex.com>

	* common/msvc_posix_wrapper.cc: Change `#include <fcntl.h>' to
	  `#include "safefcntl.h"' (currently makes no difference on
	  Windows, but it's more consistent to always use the safeXXX
	  headers).
	* common/msvc_posix_wrapper.cc: Merge two ECHILD cases.
	* common/msvc_posix_wrapper.cc: Make sure dwCreationDisposition
	  is initialised even if flags has a bogus value.
	* common/msvc_posix_wrapper.cc: Be consistent and always use O_CREAT,
	  etc, instead of sometimes using the MS alternative forms _O_CREAT,
	  etc.

Sat Mar 03 03:25:05 GMT 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: The GCC visibility docs aren't clear whether
	  you need to make *thrown* exception types visible, or also *caught*
	  exception types.  But I've just been having odd problems catching
	  Xapian::DocNotFoundError with "const Xapian::Error &", so let's mark
	  the exception virtual baseclass Xapian::Error as visible too.

Fri Mar 02 22:34:04 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk,languages/generate-allsnowballheaders.in:
	  Convert unreadable make rule for generating allsnowballheaders.h
	  to a perl script.
	* configure.ac: Substitute languages/allsnowballheaders.

Fri Mar 02 14:31:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/internaltest.cc: Add a test for om_tostring(), mainly
	  aimed at 64 bit types on windows platforms.  Mingw builds report
	  a warning in this code, which merits further investigation - see
	  Bug #112 for details.

Fri Mar 02 14:15:44 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_posix_wrapper.cc: Improve accuracy of emulation of
	  posix open, and fix a bug which caused it to misinterpret the
	  "flags" argument - files were always being opened for writing:
	  O_RDONLY is 0, so the old test (flags & O_RDONLY) always
	  failed.

Fri Mar 02 12:44:33 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_posix_wrapper.cc: Fix whitespace issues.

Fri Mar 02 12:18:42 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* HACKING: Add note about how to generate ChangeLog timestamps
	  using the unix date command - and I've started generating them in
	  the same format as Olly is. (I hope.)

Fri Mar  2 11:49:11 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/msvc_posix_wrapper.h,common/safeerrno.h,
	  common/msvc_posix_wrapper.cc,backends/quartz/btree.cc,
	  backends/flint/flint_table.cc,backends/flint/flint_btreebase.cc:
	  Move MSVC specific code for opening files into
	  msvc_posix_wrapper.cc, and just leave a few conditional includes
	  and function calls elsewhere.

Thu Mar 01 22:51:42 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Add casts to U_isupper(), etc to
	  suppress warnings from aCC.
	* queryparser/queryparser.lemony: Use U_isdigit() instead of
	  C_isdigit(), etc - the truncation to a char can cause false
	  positives.
	* tests/queryparsertest.cc: Add a (rather contrived) regression test
	  for the above change.

Thu Mar 01 21:49:37 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/utf8itor.h: Add cast to suppress warning from aCC.

Thu Mar  1 15:27:09 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.c,common/utils.h: For windows, add an om_tostring()
	  function for 64 bit integers: time() and GetProcessId() return
	  these, and without this, backends/quartz/quartz_log.cc reports
	  an error.

Thu Mar  1 13:48:46 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Fix handling of hated wildcards
	  which don't expand to any terms.

Thu Mar  1 13:45:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/queryparsertest.cc: Fix last two test cases for hated
	  wildcards to check for exactly what should be returned.

Thu Mar  1 12:02:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* common/safeerrno.h: Some of Microsoft's C++ compiler versions
	  earlier than 2005 do not have _set_errno, so #define it in this
	  case.

Thu Mar 01 04:28:23 GMT 2007  Olly Betts <olly@survex.com>

	* backends/quartz/btree.h: Correct comment ("read" -> "write").

Thu Mar 01 04:21:52 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.h: Correct comment ("read" -> "write").

Thu Mar 01 01:30:02 GMT 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add some test cases for hated wildcards
	  which don't expand to any terms.

Thu Mar 01 01:21:42 GMT 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Complete truncated comment.  Prefer
	  preincrement to postincrement.

Wed Feb 28 20:13:35 GMT 2007  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Really tweak OmDocumentTerm::add_position() so
	  that adding position 0 to an empty termlist takes the shortcut.

Wed Feb 28 15:04:25 GMT 2007  Olly Betts <olly@survex.com>

	* common/safeerrno.h: Correct <safeerrno.h> to "safeerrno.h" in
	  message in #error directive.

Wed Feb 28 14:59:29 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Removed documentation comment for
	  Xapian::Query::Internal which is no longer relevant (Query objects
	  are now immutable once constructed, so parameters can no longer be
	  set separately).

Wed Feb 28 02:42:31 GMT 2007  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Add support for serialising OP_VALUE_RANGE
	  queries.  Add support for OP_VALUE_RANGE queries to
	  Query::get_description().  If an OP_VALUE_RANGE query has a start
	  bound strictly greater than its end bound, simplify it by knowing
	  that it can't match anything.
	* common/remoteprotocol.h,docs/remote_protocol.html: Bump remote
	  protocol version to 24.

Wed Feb 28 01:15:00 GMT 2007  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
	  matcher/: Add new Query operator OP_VALUE_RANGE which allows
	  a query to be filtered by checking if a value lies between
	  two limits.
	* tests/api_anydb.cc: Add feature test valuerange1.

Wed Feb 28 01:07:53 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Only hook the testsuite into valgrind if
	  env var XAPIAN_TESTSUITE_VALGRIND is set, to make it simple to run a
	  test program under valgrind normally.
	* tests/runtest.in: Set XAPIAN_TESTSUITE_VALGRIND if automatically
	  running a test program under valgrind.

Tue Feb 27 23:51:34 GMT 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Turn subdir-objects back on here so that the
	  harness objects end up in the harness subdirectory.

Tue Feb 27 22:45:04 GMT 2007  Olly Betts <olly@survex.com>

	* examples/delve.cc: Rename "-k" to "-V" since "keys" were renamed to
	  "values" long ago.  Keep "-k" as an alias for now, but don't
	  advertise it.  Add handling so "-V3" shows value #3 for every
	  document in the database.

Tue Feb 27 21:35:35 GMT 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am,tests/remotetest.cc: Get rid of remotetest since
	  it no longer does anything.

Tue Feb 27 21:28:28 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/remotetest.cc: Move netstats1 from remotetest
	  to apitest.  It will now run for "remotetcp" as well as "remote".

Tue Feb 27 21:27:17 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
	  Inline trivial getter and setter methods in the header.  Make
	  getter method const.

Tue Feb 27 20:22:58 GMT 2007  Olly Betts <olly@survex.com>

	* examples/delve.cc: Change to not stem terms by default.  Add
	  "-s/--stemmer" option to allow a stemmer to be specified.

Tue Feb 27 17:50:13 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Test revision_supplied rather than
	  revision_ so that behaviour matches comments.

Tue Feb 27 16:58:56 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.cc: Enhance crashrecovery1 to check that the
	  readers reference a database with the expected number of
	  documents.  This checks that the base files which were removed
	  were the correct ones to leave the current database valid.

Tue Feb 27 16:54:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/quartz_database.cc: Apply fix for opening
	  databases while under heavy modification to quartz, using Olly's
	  attachment to bug #108:
	  http://www.xapian.org/cgi-bin/bugzilla/attachment.cgi?id=43
	  Verified with loadtest that this resolves the issue.

Tue Feb 27 13:12:31 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.h: Add get_dbtype() method to allow the
	  current backend type to be read.
	* tests/apitest.cc,tests/apitest.h: Add get_dbtype() function to allow
	  BackendManager::get_dbtype() to be called by tests.
	* tests/api_wrdb.cc: Add new test crashrecovery1 to verify that the
	  backend can recover from the latest revision missing some of the
	  base files.

Tue Feb 27 12:45:00 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Fix how we start xapian-progsrv
	  when running under valgrind.

Tue Feb 27 11:34:22 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Remove the old throw for
	  DatabaseOpeningError so the new throw for DatabaseModifiedError will
	  actually be used.

Tue Feb 27 09:22:52 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* flint_table.cc,flint_table.h,flint_database.cc: If a database is
	  being frequently modified (ie, transactions committed extremely
	  frequently), flint can fail open all the tables at a consistent
	  revision on the first attempt.  The code to handle this in
	  flint_database.cc was not firing because flint_table.cc was
	  reporting all failures to open a table for reading by throwing an
	  exception.  This commit changes flint_table.cc to report failure
	  to open at a specific revision by returning false.

	  In addition, there was a bug in flint_database.cc which caused
	  the attempts to re-try opening a database in this situation to
	  fail.  This is now fixed.

	  Finally, flint_database.cc now throws a DatabaseModified error if
	  100 attempts to reopen the database fail because of continual
	  modifications - previously, it would have thrown a
	  DatabaseOpening error.

	  There is no easy regression test - but my "loadtest.cc" program
	  attached to bug #108 shows the problem (if you comment out the
	  code which ignores DatabaseOpeningErrors).

Tue Feb 27 01:25:00 GMT 2007  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/doxygen_full_conf.in: Need to
	  define DOXYGEN so that the previous change to the generated
	  errordispatch.h works.  Remove obsolete macros from
	  EXPAND_AS_DEFINED and PREDEFINED.
	* docs/doxygen_full_conf.in: Increase MAX_DOT_GRAPH_WIDTH from
	  800 to 1024 to match doxygen_api_conf.in.

Tue Feb 27 00:41:47 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix warning with SGI's CC.

Tue Feb 27 00:35:06 GMT 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Wrap errordispatch.h in "#ifndef DOXYGEN"
	  and "#endif" because doxygen gets confused by a header full of
	  code.

Mon Feb 26 21:53:41 GMT 2007  Olly Betts <olly@survex.com>

	* tests/findheaders.pl: Remove long unused perl script.

Mon Feb 26 19:23:50 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_wrdb.c: test_emptyterm2 used to delete a writable
	  database whilst the database was open.  Unfortunately, this
	  doesn't work on windows (and it doesn't seem to be easy to make
	  it work), so this patch changes the test to close each database
	  before opening the next writable database at the same path.
	  Fortunately, this seems to be the only test which behaves like
	  this.  Also, added a note to the win32 README file to document
	  this restriction.

Mon Feb 26 19:19:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am: touch apidoc/html/index.html after apidoc.pdf
	  is created so that make doesn't attempt to regenerate it due to
	  the dependency of apidoc/html/index.html on apidoc.pdf.
	  Similarly for sourcedoc/html/index.html.

Mon Feb 26 18:36:22 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: Indent with tabs not spaces.
	* tests/harness/index_utils.cc: Add missing space after "if";
	  prefer "X.empty()" to "X.size() == 0".

Mon Feb 26 16:10:31 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* tests/harness/index_utils.cc,tests/harness/backendmanager.cc:
	  Fix for windows: windows file handling seems to have a bug
	  causing end of file conditions in ifstream to be missed.  As a
	  result, an empty string was being returned from the get_paragraph
	  function in the test harness, resulting in an out-of-bounds error
	  when generating a value from the paragraph.  Add a check that the
	  paragraph returned isn't empty, and return an empty document if
	  it is.  Then, check for empty documents (ie, contain some terms)
	  before adding them to the test database.

Mon Feb 26 16:05:07 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/btree_base.cc,backends/flint/flint_btreebase.cc:
	  Fix for windows: string append method with a pointer and length
	  causes a segfault-type error on windows if the pointer is NULL,
	  even if the length is also 0.  Check for this case when appending
	  the bitmap to the base block, since a NULL pointer is passed for
	  an empty bitmap when a new database is being created.

	  Also, initialise the bit_map0 and bitmap members to 0 in the
	  FlintTable_base constructor which takes a string and a char
	  argument - they had been omitted from this and were only being
	  initialised by the constructor which takes no argument.  This
	  didn't seem to be having any negative effect, but doing it makes
	  the code neater.

Sun Feb 25 23:21:11 GMT 2007  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Create the RefCntPtr to this
	  as an explicit variable to make the code more readable.

Sun Feb 25 19:20:33 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix inconsistent ordering between pages with
	  set_sort_by_value_then_relevance (fixes bug#110).
	* tests/api_wrdb.cc: Enabled test consistency2.

Sun Feb 25 17:28:09 GMT 2007  Olly Betts <olly@survex.com>

	* matcher/: Also apply the "decreasing weights with remote database"
	  optimisations which we use in the sort_by_relevance case in the
	  sort_by_relevance_then_value case.

Sat Feb 24 19:35:41 GMT 2007  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: If replace_document is used
	  to set the docid of a newly added document which has previously
	  existed, then we need to mark that document as valid (caught by
	  existing test replacedoc4 in a debug build).

Sat Feb 24 17:11:22 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Add regression test consistency2 for bug#110
	  (currently skipped since the bug isn't fixed yet).

Thu Feb 22 15:18:53 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Add proper detection for SGI's C++ (check stderr
	  output of "CC -v").  Automatically pass -ptused in CXXFLAGS for
	  xapian-core and any applications using xapian-config --cxxflags
	  since it seems to be required to avoid template linking errors.

Thu Feb 22 09:04:30 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Ship generated RSTHTML files.

Wed Feb 21 19:01:06 GMT 2007  Olly Betts <olly@survex.com>

	* languages/turkish.sbl: Make some simplifications to the code of the
	  turkish stemmer.

Wed Feb 21 19:00:11 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk,languages/stem.cc,languages/turkish.sbl:
	  Add turkish stemmer.

Wed Feb 21 18:55:03 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Number m_test and c_test variables
	  to avoid variable shadowing warnings.

Wed Feb 21 18:07:50 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Remove duplicate copy of function
	  resulting from ham-fisted reverting and applying of patches.

Wed Feb 21 18:03:12 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c,languages/compiler/header.h: Number
	  mlimit variables to avoid variable shadowing warnings.
	* languages/compiler/generator.c: Use "if (foo() == -1) return -1;"
	  which avoids a temporary variable (improving readability of
	  generated code) and producing very slightly faster code.
	* languages/compiler/header.h: Use "#ifdef DISABLE_JAVA" around Java
	  generator specific struct members and prototypes.

Wed Feb 21 17:47:13 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Add "~C" comments to generated
	  source for more operations.

Tue Feb 20 20:24:30 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/quartz/btree.cc: Ensure
	  both_bases is set to false if we don't have both bases when
	  opening a table using an existing object.

Tue Feb 20 15:57:05 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Fix to handle generating dependencies on generated
	  objects, at least for the "checked out tree from SVN" case.  Fixing
	  this fully is trickier, but currently this is stopped snapshots
	  from bootstrapping.

Tue Feb 20 14:28:02 GMT 2007  Charlie Hull

	* backends/flint/flint_btreebase.cc,backends/flint/flint_table.cc,
	  backends/quartz/btree.cc: Use MS Windows API calls to delete
	  files and open files we might want to delete while they are
	  still open (i.e. the flint and quartz btree base files).  This
	  fixes a problem when a writer can't discard an old revision at the
	  exact moment a reader is opening it (bug #108).

Tue Feb 20 14:13:43 GMT 2007  Richard Boulton <richard@tartarus.org>

	* .: Add generate-exceptions to svn:ignore property.

Tue Feb 20 13:36:27 GMT 2007  Olly Betts <olly@survex.com>

	* generate-exceptions.in: Add missing '}' to close 'namespace Xapian'
	  in generated header 'xapian/error.h'.

Tue Feb 20 13:26:19 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am: Put generated exception headers in BUILT_SOURCES.

Tue Feb 20 12:10:18 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,generate-exceptions.in,include/Makefile.mk,
	  include/xapian/error.h,include/xapian/errortypes.h,net/serialise.cc:
	  Replace macro gymnastics with errortypes.h by a perl script which
	  generates the headers we require.  It's more flexible, and easier to
	  get doxygen to generate documentation from.
	* queryparser/queryparser.cc,tests/queryparsertest.cc: Throw new
	  Error subclass QueryParserError instead of throwing const char *
	  (fixes bug#101).

Tue Feb 20 10:37:54 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc: p is never NULL once the class is
	  successfully constructed, so just use Assert() to confirm this.

Tue Feb 20 10:29:25 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/lemon.c: Fix compiler warnings.

Mon Feb 19 18:50:12 GMT 2007  Olly Betts <olly@survex.com>

	* common/serialise-double.cc,net/remoteconnection.cc: Throw
	  NetworkError rather than InternalError for invalid data received
	  over the remote protocol.

Mon Feb 19 18:12:21 GMT 2007  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Just disable serialisequery1 if the remote
	  backend is disabled, like we do for serialiselength1 and
	  serialisedoc1 rather than assuming InternalError is due to the
	  code being disabled.

Mon Feb 19 09:48:02 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/XapianAdminNotes.txt,docs/admin_notes.rst:
	  Generated file "XapianAdminNotes.html" doesn't fit the naming
	  conventions of other files at all, so renamed to "admin_notes.html".
	  Rename the source to ".rst" so we can use an implicit rule for
	  the conversion, in anticipation of other documentation in ReST
	  format.

Mon Feb 19 09:10:48 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Fix typos which stopped parallel make from working
	  correctly in "docs" subdirectory.

Sun Feb 18 22:36:46 GMT 2007  Olly Betts <olly@survex.com>

	* common/Makefile.mk,common/omstringstream.h,common/output.h,
	  include/Makefile.mk,include/xapian/output.h: Move
	  "<xapian/output.h>" to being an internal header in "common/" since
	  it hasn't been included by "<xapian.h>" since 0.7.0.

Sun Feb 18 22:18:33 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/dbfactory.h: Add documentation comment for the "prog"
	  form of Remote::open_writable().

Sun Feb 18 19:31:20 GMT 2007  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test for "associative NEAR".

Sun Feb 18 18:27:40 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc,tests/harness/backendmanager.h:
	  Merge BackendManager::change_names_to_paths() into
	  index_files_to_database() and make the latter a method of
	  class BackendManager.
	* tests/harness/backendmanager.cc: Remove mention of muscat36 backends
	  from error message listing valid backends.
	* tests/harness/backendmanager.h: Comment out prototypes for currently
	  disabled methods getdb_inmemoryerr, getwritedb_inmemory, etc.

Sat Feb 17 15:38:05 GMT 2007  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: new throws if allocation fails
	  so we don't need to check the return value.

Sat Feb 17 02:08:22 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_table.cc: Fix memory double-frees if
	  FlintTable::close() is called twice on a table (without an open()
	  being called in between).  This was happening after a transaction
	  failed when the table was next opened.
	* backends/quartz/btree.cc: Fix double-frees, similarly.

Fri Feb 16 20:11:13 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Add missing "~Z" for compatibility
	  with C code generation (which we don't use for Xapian).

Fri Feb 16 19:51:26 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/tclUniData.h,queryparser/utf8itor.h: The tcl unicode
	  routines only have tables for characters in the BMP.  For other
	  characters, assume they're word characters, but can't be forced to
	  lowercase.

Fri Feb 16 19:26:00 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/utf8itor.cc: Fix bug in decoding of 4 byte utf-8
	  sequences - the returned value was 0x400000 too large!

Thu Feb 15 19:37:26 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Keep
	  embedded apostrophe's in terms rather than generating a phrase
	  search for them.

Thu Feb 15 18:42:49 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c,languages/steminternal.cc,
	  languages/steminternal.h: Tweak the "grouping" functions to allow
	  skipping past multiple occurrences and use this to implement "goto"
	  or "gopast" followed by a grouping or "non" grouping more
	  efficiently.

Thu Feb 15 17:57:43 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c,languages/steminternal.cc,
	  languages/steminternal.h: Inline lose_s().  Since lose_s()
	  checks if p is NULL, remove checks prior to calling lose_s().
	* languages/steminternal.h: Cast from symbol * to int * via
	  void * to try to suppress over-eager warnings about alignment.

Thu Feb 15 12:43:04 GMT 2007  Olly Betts <olly@survex.com>

	* languages/stem.cc: Add support for two letter ISO 639 codes.

Thu Feb 15 10:40:40 GMT 2007  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Don't try to ship mkdoc.pl.

Thu Feb 15 09:58:48 GMT 2007  Olly Betts <olly@survex.com>

	* docs/gen_codestructure_doc.in: Fix to work in a VPATH build.

Thu Feb 15 09:54:55 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Fix Stem::get_description() to
	  return the right string.

Thu Feb 15 09:44:54 GMT 2007  Olly Betts <olly@survex.com>

	* docs/gen_codestructure_doc.in: Add links to viewvcs on
	  svn.xapian.org.

Thu Feb 15 09:26:07 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac,docs/Makefile.am,docs/gen_codestructure_doc.in,
	  docs/mkdoc.pl,preautoreconf: Rework how code_structure.html
	  is generated.  Nicer output, and the html document is now
	  regenerated if any of the dir_contents files change.

Thu Feb 15 07:43:39 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.mk,configure.ac,examples/Makefile.mk,
	  makemanpage.in: Add "makemanpage" script which takes care of all
	  the magic needed to generate a man page using help2man.  This
	  script is written in perl, but so is help2man, and they're both
	  only used in maintainer-mode.

Thu Feb 15 06:33:41 GMT 2007  Olly Betts <olly@survex.com>

	* bin/Makefile.mk: Fix typos in man page generation rules.

Thu Feb 15 06:30:54 GMT 2007  Olly Betts <olly@survex.com>

	* examples/Makefile.mk: Fix typos in previous commit.

Thu Feb 15 06:03:35 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,examples/Makefile,examples/Makefile.am,
	  examples/Makefile.mk: Convert examples subdirectory to use
	  non-recursive make.  Fixes wishlist bug#97.

Thu Feb 15 05:48:38 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile,bin/Makefile.am,bin/Makefile.mk,
	  configure.ac: Convert bin subdirectory to use non-recursive make.

Wed Feb 14 19:08:49 GMT 2007  Olly Betts <olly@survex.com>

	* tests/Makefile.am: There's no longer a need to remove the temporary
	  directories for muscat36 backend tests, since we've removed the
	  muscat36 backend code.

Wed Feb 14 18:58:31 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Move adjusting of INCLUDES to the top of the
	  file.
	* queryparser/Makefile.mk: Adjust INCLUDES for a VPATH build.

Wed Feb 14 18:38:16 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Need -Ilanguages for VPATH builds from SVN.

Wed Feb 14 18:37:54 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc,languages/steminternal.h: Add
	  SET_CAPACITY() macro.

Wed Feb 14 17:39:50 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.h: Don't cast away const.

Wed Feb 14 17:14:14 GMT 2007  Olly Betts <olly@survex.com>

	* include/Makefile: Add stub makefile.

Wed Feb 14 17:12:41 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: ac_abs_srcdir, etc aren't available in configure
	  itself, so we have to do the work ourselves.

Wed Feb 14 12:54:26 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Fix typo in last commit.

Wed Feb 14 12:19:18 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,languages/Makefile.mk: Define automake
	  conditional VPATH_BUILD so we can only add extra entries to
	  INCLUDES in VPATH builds.

Wed Feb 14 11:59:02 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Ick, we need $(top_srcdir)/languages in
	  INCLUDES as the generated sources need to find non-generated
	  headers.

Wed Feb 14 11:46:43 GMT 2007  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/remote/remote-database.cc,
	  common/database.h,common/remote-database.h,common/remoteprotocol.h,
	  docs/remote_protocol.html,net/remoteserver.cc: Support
	  get_lastdocid() on remote databases.

Wed Feb 14 11:20:33 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,include/Makefile.am,include/Makefile.mk:
	  Convert include subdirectory to use non-recursive make.

Wed Feb 14 11:05:00 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.am,configure.ac,examples/Makefile.am,
	  getopt/Makefile,getopt/Makefile.am,getopt/Makefile.mk,
	  tests/Makefile.am: Convert getopt subdirectory to use non-recursive
	  make.

Wed Feb 14 10:56:15 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/Makefile.am: Remove as no longer used.

Wed Feb 14 10:38:27 GMT 2007  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.mk,bin/Makefile.am,tests/Makefile.am: Move
	  backends/quartz/libbtreecheck.la to libquartzcheck.la.
	* getopt/Makefile.am: Distribute getopt/dir_contents.

Wed Feb 14 10:20:14 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Handle variables set with "+=" and ":=".

Wed Feb 14 10:16:29 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Add documentation comments for DB_*
	  constants.

Wed Feb 14 10:11:37 GMT 2007  Olly Betts <olly@survex.com>

	* examples/.cvsignore: Remove lingering relic of CVS days.

Wed Feb 14 10:07:14 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,net/Makefile,net/Makefile.am,
	  net/Makefile.mk: Convert net subdirectory to use non-recursive make.
	  Now libxapian.la is built completely non-recursively.
	* docs/Makefile.am,docs/mkdoc.pl: Fix mkdoc.pl to handle directories
	  which use non-recursive make.

Wed Feb 14 09:10:27 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,backends/Makefile,backends/Makefile.am,
	  backends/Makefile.mk,backends/flint/Makefile,
	  backends/flint/Makefile.am,backends/flint/Makefile.mk,
	  backends/inmemory/Makefile,backends/inmemory/Makefile.am,
	  backends/inmemory/Makefile.mk,backends/multi/Makefile,
	  backends/multi/Makefile.am,backends/multi/Makefile.mk,
	  backends/quartz/Makefile,backends/quartz/Makefile.am,
	  backends/quartz/Makefile.mk,backends/remote/Makefile,
	  backends/remote/Makefile.am,backends/remote/Makefile.mk,
	  configure.ac: Convert backends subdirectory (and subdirectories
	  thereof) to non-recursive make.

Wed Feb 14 08:49:02 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Fix handling of backslash at the end of a line in
	  included files.
	* preautoreconf: Our handling of which directory a nested include is
	  sought from is consistent with automake, so remove the FIXME comment
	  about it.

Wed Feb 14 08:07:07 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,matcher/Makefile,matcher/Makefile.am,
	  matcher/Makefile.mk: Convert matcher subdirectory to non-recursive
	  make.

Wed Feb 14 07:50:19 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,api/Makefile,api/Makefile.am,api/Makefile.mk,
	  configure.ac: Convert api subdirectory to non-recursive make.

Wed Feb 14 07:48:45 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: No need to `chdir' to the current directory.
	* preautoreconf: Don't bother looking at the file we generate
	  when considering included files.
	* preautoreconf: Add included files to the dependency list.

Wed Feb 14 07:38:19 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Generate dummy rules for the files which
	  preautoreconf depends on, so that "make" still works if one
	  of them is removed (by build system restructuring).

Wed Feb 14 07:24:07 GMT 2007  Olly Betts <olly@survex.com>

	* common,languages,tests/harness: svn:ignore: We do need to ignore
	  .dirstamp files after all.

Wed Feb 14 07:22:29 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,common/Makefile,common/Makefile.am,common/Makefile.mk,
	  configure.ac: Convert common subdirectory to non-recursive make.

Wed Feb 14 07:03:27 GMT 2007  Olly Betts <olly@survex.com>

	* .: svn:ignore: Ignore all vim swapfiles.  No need to ignore .deps
	  now that dummy.cc is history.

Wed Feb 14 06:34:44 GMT 2007  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Force ASCII capitals in sample vocabulary to
	  lower case before stemming.

Wed Feb 14 06:14:42 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,queryparser/Makefile,
	  queryparser/Makefile.am,queryparser/Makefile.mk:
	  Convert queryparser subdirectory to non-recursive make.
	* Makefile.am: Enable automake option "subdir-objects" so
	  that built objects for a non-recursively made directory
	  go into that directory.

Wed Feb 14 06:12:29 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness: svn:ignore: remove .dirstamp and depcomp.

Wed Feb 14 06:10:44 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: In maintainer-mode, remove snowball and
	  generated allsnowballheaders.h on "make clean".  When not in
	  maintainer-mode, remove them on "make maintainer-clean".
	* languages/: svn:ignore all vim swap files.

Wed Feb 14 05:54:32 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Distribute the stub languages/Makefile.
	* tests/harness/Makefile.mk: No need to explicitly distribute
	  harness/Makefile.mk.

Wed Feb 14 05:52:08 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Distribute languages/dir_contents.

Wed Feb 14 05:44:10 GMT 2007  Olly Betts <olly@survex.com>

	* api/Makefile.am,api/vectortermlist.h,common/Makefile.am,
	  queryparser/Makefile.am: We use vectortermlist.h from the
	  queryparser directory, so move it from api to common.

Wed Feb 14 05:27:13 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk,languages/stem.cc: Disable finnish and lovins
	  temporarily, until I sort out merging the support for among with
	  functions properly.

Wed Feb 14 05:24:36 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc,languages/steminternal.h: Temporarily
	  back out the changes to handling of among with functions.

Tue Feb 13 19:11:57 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: If a test throws an unknwon exception,
	  say so in the test failure message.  If it throws std::string,
	  report the first 40 character (or first line) of the string.

Tue Feb 13 17:48:11 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc: Fix decoding of 3 byte utf-8 sequences.

Tue Feb 13 17:47:22 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk: Fix dependency of generated
	  languages/allsnowballheaders.h to be on languages/Makefile.mk.

Tue Feb 13 17:46:42 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: Fix missing ";" in generated
	  code.

Tue Feb 13 15:40:15 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk,languages/compiler/driver.c,
	  languages/compiler/generator.c,languages/compiler/header.h:
	  Changes towards getting C++ generation working.

Tue Feb 13 15:39:23 GMT 2007  Olly Betts <olly@survex.com>

	* languages/steminternal.cc,languages/steminternal.h: Revert to match
	  currently generated code.

Tue Feb 13 14:09:31 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/: Sync with current snowball SVN + submitted
	  patches.

Tue Feb 13 10:53:34 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/backendmanager.cc: If we fail to start
	  xapian-tcpsrv, report why (give errno or the error output).

Tue Feb 13 10:28:43 GMT 2007  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: Prune test cases which are redundant now that
	  apitest tests remote and remotetcp: apitest's simplequery1 performs
	  a superset of what netmatch1 and tcpmatch1 do; apitest's multidb1
	  performs a superset of what netmatch2 does; and the coverage given
	  by our netexpand1 is provided by various apitest tests.

Mon Feb 12 06:36:58 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/generator.c: In backward mode, among
	  can't match if there are fewer characters before the current
	  position than the minimum length string in the among.

Mon Feb 12 05:56:31 GMT 2007  Olly Betts <olly@survex.com>

	* configure.ac: Make sure that the languages subdirectory exists in
	  case this is a fresh SVN checkout and srcdir != builddir.

Mon Feb 12 05:46:49 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile.mk,languages/compiler/driver.c: -DDISABLE_JAVA
	  to not compile in Java support (inline with Richard's patch to
	  the upstream snowball sources).
	* languages/Makefile.mk: Remove inaccurate comment about processing
	  with automake.  Fix -n option we pass (remove directory name).
	  Use "" instead of <> in generated file allsnowballheaders.h.  Remove
	  snowball compiler and generated files on "make maintainer-clean".

Mon Feb 12 01:08:50 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* languages/compiler/header.h: Remove commented out header for
	  sort() prototype, to match snowball sources.

Sun Feb 11 19:28:50 GMT 2007  Olly Betts <olly@survex.com>

	* languages/api.h,languages/header.h: Remove headers which are no
	  longer used.

Sun Feb 11 19:26:50 GMT 2007  Olly Betts <olly@survex.com>

	* languages/api.cc,languages/utilities.cc: Remove sources which are
	  no longer used.

Sun Feb 11 16:22:16 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/driver.c: Use #ifdef instead of #if.

Sun Feb 11 16:20:44 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/driver.c: Disable java support, since we don't
	  use it and it means one less source file.

Sun Feb 11 16:08:49 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/analyser.c,languages/compiler/header.h: Use qsort
	  instead the snowball's own sort implementation to reduce the number
	  of source files we need for the snowball compiler.

Sun Feb 11 16:04:19 GMT 2007  Olly Betts <olly@survex.com>

	* languages/Makefile: Add stub Makefile to allow "make", "make check",
	  and "make clean" from the languages subdirectory.

Sun Feb 11 16:00:51 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/analyser.c: Cast the arguments, not the function
	  pointer as ISO C allows `void*' and `struct amongvec*' to have
	  different representations.

Sun Feb 11 15:43:49 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/space.c: Fix a typo of a function name in a
	  comment.

Sun Feb 11 15:23:51 GMT 2007  Olly Betts <olly@survex.com>

	* languages/compiler/header.h,languages/compiler/tokeniser.c: Give
	  syswords and syswords2 .h extensions for clarity.

Sun Feb 11 15:17:28 GMT 2007  Olly Betts <olly@survex.com>

	* Makefile.am,api/Makefile.am,api/omstem.cc,configure.ac,dummy.cc,
	  languages/Makefile.am,languages/Makefile.mk,languages/compiler/,
	  languages/: Update the stemmers to use utf-8 and the latest snowball
	  version (based on r421 from snowball SVN).  Further patches are
	  required to generate C++ classes from snowball, I'm checking in the
	  vanilla compiler first to help us track the patches.

Sun Feb 11 14:16:35 GMT 2007  Olly Betts <olly@survex.com>

	* api/omstem.cc: Add definition for Xapian::Stem::stem_word().

Sun Feb 11 13:15:11 GMT 2007  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_db.cc,tests/api_posdb.cc: Prefer
	  Xapian::Stem::operator() to Xapian::Stem::stem_word().

Sat Feb 10 19:10:31 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Prefer Xapian::Stem::operator() to
	  Xapian::Stem::stem_word().

Sat Feb 10 18:34:41 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/stem.h: Make Xapian::Stem::Internal as @internal for
	  doxygen.  Mark Xapian::Stem::stem_word() as deprecated.

Sat Feb 10 18:34:05 GMT 2007  Olly Betts <olly@survex.com>

	* HACKING: Add brief note about coding style.

Sat Feb 10 18:24:28 GMT 2007  Olly Betts <olly@survex.com>

	* preautoreconf: Add licence and copyright notice.  Add support for
	  automake include directives.  Warn about unknown variables.

Sat Feb 10 18:19:26 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Conditionalise all the valgrind specific
	  code on RUNNING_ON_VALGRIND to minimise the overhead if valgrind
	  is installed but we aren't running tests under it.

Sat Feb 10 17:42:05 GMT 2007  Olly Betts <olly@survex.com>

	* tests/harness/index_utils.cc,tests/stemtest.cc: Prefer
	  Xapian::Stem::operator() to Xapian::Stem::stem_word().

Sat Feb 10 17:27:27 GMT 2007  Olly Betts <olly@survex.com>

	* examples/delve.cc,examples/simpleindex.cc,examples/simplesearch.cc:
	  Prefer Xapian::Stem::operator() to Xapian::Stem::stem_word().

Wed Feb 07 04:23:09 GMT 2007  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser.lt: Use
	  new/delete instead of malloc/free to allocate struct yyParser
	  and pass it around as "yyParser *" instead of "void *".

Wed Feb 07 03:44:16 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc,
	  queryparser/queryparser.lemony,queryparser/queryparser_internal.h,
	  tests/queryparsertest.cc: Allow the default prefix to be specified
	  so you can use QueryParser to parse a text entry box for "author"
	  etc.
	* configure.ac: Note API change for LIBRARY_VERSION_INFO updating.

Wed Feb 07 01:14:37 GMT 2007  Olly Betts <olly@survex.com>

	* common/safeunistd.h: Add '#include <sys/types.h>' so that we've seen
	  a typedef for off_t before we hide it behind a #define to avoid a
	  compilation error if <sys/types.h> or <wchar.h> is included after
	  we are.

Tue Feb 06 06:26:24 GMT 2007  Olly Betts <olly@survex.com>

	* INSTALL: Mention MSVC makefiles.  Note that we still test build with
	  GCC 2.95.4 even though we recommend using a newer version.

Tue Feb 06 06:13:48 GMT 2007  Olly Betts <olly@survex.com>

	* AUTHORS,HACKING,backends/flint/,backends/quartz/btree.cc,
	  backends/quartz/quartz_database.cc,bin/quartzcompact.cc,
	  bin/xapian-compact.cc,common/,tests/btreetest.cc,
	  tests/harness/backendmanager.cc,tests/harness/testsuite.cc,
	  tests/quartztest.cc: Support large files in stat() and fstat()
	  when building with MSVC.  Factor MSVC specific header magic
	  into new replacement headers "safeunistd.h" and "safesysstat.h".
	* AUTHORS: Thanks to Charlie Hull for the original patch to support
	  stat() on large files with MSVC (and past MSVC related stuff!)

Sat Jan 13 02:06:15 GMT 2007  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Add pointer from
	  WritableDatabase::add_document() to replace_document() in case the
	  user wants to specify the docid themselves.  Also improve the
	  wording of the warning about changes not being committed to disk
	  right away.

Tue Jan  2 15:49:43 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/btree.cc,backends/flint/flint_io.h: Patches from
	  Charlie Hull to allow 2GB+ index files work when compiled using
	  Visual C++.

Sat Dec 30 13:48:54 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony,include/xapian/queryparser.h:
	  Add support for partially entered queries, to better support
	  incremental searching.  Also fix a typo in a comment.
	* docs/queryparser.html: Document the new partial query option, and
	  what it's useful for.
	* tests/queryparsertest.cc: Test partial queries.

Wed Dec 20 16:42:24 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with success reports from debian buildds.

Wed Dec 20 00:53:19 GMT 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix "unused parameter" warning when building
	  with the remote backend disabled.  Also update a comment - the query
	  serialisation isn't really one line of text since we now store term
	  names with the length prefixed, and they can contain arbitrary
	  characters including linefeeds.

Tue Dec 19 20:40:27 GMT 2006  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Need libgetopt.la for test programs which
	  use the test harness for platforms where GNU getopt isn't in
	  the standard C library.

Tue Dec 19 20:34:16 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/utf8itor.h: Need <string.h> for strlen.

Tue Dec 19 16:35:58 GMT 2006  Olly Betts <olly@survex.com>

	* common/omstringstream.h: Fix "warning: comparison between signed and
	  unsigned".

Tue Dec 19 15:33:19 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Turn the second (and
	  potentially slightly deeper) recursion in encode_interpolative
	  and decode_interpolative into explicit iteration in case the
	  compiler fails to optimise the tail recursion.

Mon Dec 18 03:39:41 GMT 2006  Olly Betts <olly@survex.com>

	* matcher/: Add ExactPhrasePostList to handle the common special case
	  where the window size of OP_PHRASE is equal to the number of terms
	  in the phrase.

Mon Dec 18 02:21:32 GMT 2006  Olly Betts <olly@survex.com>

	* tests/harness/testsuite.cc: Remove accidentally committed "NO
	  PROBLEM" message when running under valgrind.

Wed Dec 13 21:15:57 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/document.h: Another tweak to the documentation
	  comment.

Wed Dec 13 18:07:51 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/document.h: Improve documentation comment for
	  Document::get_value().

Wed Dec 13 03:38:37 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: In the description of the TradWeight
	  class, replace reference to "Muscat 3.6" (meaningless to most
	  people) with a generally useful explanation.

Wed Dec 13 03:27:14 GMT 2006  Olly Betts <olly@survex.com>

	* docs/: svn:ignore XapianAdminNotes.html.

Wed Dec 13 03:16:44 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Yet more valgrind test improvements!  Give up testing
	  valgrind features if VALGRIND_COUNT_LEAKS isn't supported.  Fix the
	  common shortcut case to not try logging to /dev/null.<pid> so it
	  can actually get used.  Also don't use /dev/null in the --logfile
	  case either as it will probably cause problems there too (though I
	  don't have an old enough valgrind handy to verify this).  Also report
	  results of valgrind tests in a couple more places.

Wed Dec 13 00:31:04 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* docs/Makefile.am: New rules for generating XapianAdminNotes.html
	  from XapianAdminNotes.txt
	* configure.ac: Check for rst2html, and require it in maintainer
	  mode.
	* HACKING: document rst2html as a requirement.

Tue Dec 12 23:58:13 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* docs/XapianAdminNotes.txt: Add new document giving an
	  introduction to Xapian concepts for system administrators.

Tue Dec 12 21:33:38 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* docs/quartzdesign.html: Fix an unmatched bracket.

Tue Dec 12 21:18:54 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* backends/quartz/quartz_alldocspostlist.cc: Fix memory leak
	  discovered by valgrind in QuartzAllDocsPostList constructor: was
	  failing to delete the Bcursor.

Tue Dec 12 21:05:47 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* queryparser/queryparser.lemony: Fix parsing of queries of the
	  form "+foo* bar", where no terms in the database match the
	  wildcard "foo*", but bar does exist in the database.  Previously,
	  such queries would be equivalent to "bar".  Now, they will match
	  no documents.  This required using a new "QpQuery" object
	  internally so we can distinguish between deliberately "match
	  nothing" queries, and empty lists of queries.
	* tests/api_anydb.cc,tests/queryparsertest.cc: Test above fix, and
	  general parsing of wildcard queries with +terms, and test
	  performing a match with a query resulting from a wildcard query
	  which matches nothing.

Tue Dec 12 21:05:15 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* tests/api_nodb.cc,api/omqueryinternal.cc,api/omquery.cc: Fix some
	  copyright assertions I missed.

Tue Dec 12 19:38:39 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/query.h,api/omqueryinternal.cc,api/omquery.cc: Add
	  two static Query objects: Xapian::Query::MatchAll and
	  Xapian::Query::MatchNothing, which match all documents and no
	  documents in the database, respectively.  (Equivalent to
	  Query("") and Query()).  Allow empty queries such as MatchNothing
	  to be combined with other queries.  Change methods of
	  Xapian::Query::Internal to use pointers to query internals
	  instead of references, so they can handle the NULL pointer
	  internals of an empty query.
	* tests/api_nodb.cc: Test combining of MatchNothing queries with
	  other queries with OP_AND and OP_OR.

Tue Dec 12 20:01:58 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Fix valgrind better: --log-file-exactly isn't what
	  is wanted, because it messes up if multiple processes are traced.
	  Instead, use a temporary file instead of /dev/null, so we don't
	  get the permission denied error.

Tue Dec 12 19:15:20 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* configure.ac: Fix detection of valgrind for newer valgrind.  My
	  version of valgrind (valgrind-3.2.1-Debian, from ubuntu feisty)
	  treats the parameter supplied to --log-file as a base path, and
	  appends a process ID. This caused the test for the log-file
	  option to fail with permission denied errors due to trying to
	  write to files of the form '/dev/null.16098'.  Solution - test
	  for the --log-file-exactly option, and use that.  Also, change
	  configure.ac to display the result of the tests for valgrind; was
	  displaying that it had found it, but not mentioning that it
	  couldn't make it work.

Tue Dec 05 21:12:12 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* include/xapian/query.h,api/omqueryinternal.cc: Fix query
	  serialisation bug.  Was failing to propagate "curpos" parameter
	  across subqueries, resulting in incorrect serialisation of
	  termpositions.
	* tests/internaltest.cc: Regression test for this bug.

Tue Dec 05 01:34:07 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Clarify how XAPIAN_DEBUG_FLAGS works.

Tue Dec 05 01:23:12 GMT 2006  Olly Betts <olly@survex.com>

	* examples/quest.cc: Add "--stemmer" option to allow stemming language
	  to be set, or stemming to be disabled.

Sun Dec 03 00:34:27 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Add entries
	  to the "unstem" map for prefixed boolean filters (e.g. type:html).
	  Also don't corrupt non-ASCII characters in a prefixed boolean
	  filter.

Sat Nov 25 04:17:23 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_version.cc:
	  The "my_fls()" change actually results in a different interpolative
	  encoding in a few cases - the old encoding could vary between
	  architectures so we have to change it.  So bump the FLINT_VERSION
	  and change the "flicklock" file to be "flintlock" as it should have
	  been all along!

Wed Nov 22 18:55:42 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Improve --version output so that help2man produces
	  a better man page.

Mon Nov 20 07:21:07 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Fix another off-by-one
	  error (> should be >=).

Mon Nov 20 07:12:11 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Fix off-by-one error in code
	  which calls my_fls().

Sat Nov 18 08:32:08 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: "const static" -> "static
	  const".

Sat Nov 18 08:05:17 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Make decode_interpolative
	  a member function of BitReader.

Sat Nov 18 07:45:19 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Add highly optimised fls()
	  implementation and make use of it.

Thu Nov 16 04:22:36 GMT 2006  Olly Betts <olly@survex.com>

	* m4/xapian.m4: If XAPIAN_CONFIG wasn't specified and xapian-config
	  wasn't found, see if the library seems to be present - if so give
	  a different error message which suggests the user needs to install
	  a -dev or -devel package.

Thu Nov 16 02:11:34 GMT 2006  Olly Betts <olly@survex.com>

	* docs/install.html: omega tarball is now xapian-omega.

Tue Nov 14 22:42:05 GMT 2006  Olly Betts <olly@survex.com>

	* tests/harness/Makefile: Add static Makefile so you can make all,
	  check, and clean from the subdirectory.
	* tests/harness/Makefile.mk: Ship Makefile.mk and Makefile.

Tue Nov 14 21:53:45 GMT 2006  Olly Betts <olly@survex.com>

	* tests/: Remove muscat36 temporary directories from svn:ignore
	  property.

Tue Nov 14 19:47:30 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac,tests/Makefile.am,tests/harness/Makefile.mk: Use
	  non-recursive make to build the test harness, so it only gets
	  built if "make check" is run.

Tue Nov 14 19:43:48 GMT 2006  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Removed unused static function unlink_table.

Tue Nov 14 17:41:26 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.lemony,
	  tests/queryparsertest.cc: Add QueryParser::FLAG_PURE_NOT to allow
	  pure NOT queries to be enabled (they are now disabled by default).

Tue Nov 14 04:19:40 GMT 2006  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/flint/dir_contents,
	  backends/quartz/dir_contents,docs/overview.html,
	  docs/quartzdesign.html,docs/scalability.html: Make flint the default
	  backend.

Tue Nov 14 03:25:19 GMT 2006  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Xapian::Query("") now builds a query which
	  matches all documents rather than throwing InvalidArgumentError
	  so fix emptyquery1 test.

Tue Nov 14 02:03:29 GMT 2006  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Tweak OmDocumentTerm::add_position() so that
	  adding position 0 to an empty termlist takes the shortcut.

Mon Nov 13 05:46:15 GMT 2006  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Document the new pure NOT feature.

Mon Nov 13 05:24:30 GMT 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,queryparser/queryparser.lemony,
	  tests/queryparsertest.cc: Allow "pure NOT" queries - e.g.
	  "NOT apples".  Fixes bug #99.

Mon Nov 13 04:54:04 GMT 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Undo changes accidentally committed in last
	  check-in.

Mon Nov 13 04:47:57 GMT 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/Makefile.am,backends/database.cc,
	  backends/muscat36/,configure.ac,docs/overview.html,
	  docs/quartzdesign.html,docs/tests.html,include/xapian/dbfactory.h,
	  include/xapian/version_h.cc,tests/api_anydb.cc,tests/apitest.cc,
	  tests/harness/backendmanager.cc,tests/harness/backendmanager.h,
	  tests/harness/index_utils.cc: Remove support for the old Muscat 3.6
	  backends.

Mon Nov 13 04:02:27 GMT 2006  Richard Boulton <richard@lemurconsulting.com>

	* common/database.h,api/omdatabase.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/Makefile.am,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_alldocspostlist.h,
	  backends/quartz/quartz_alldocspostlist.cc,
	  backends/flint/Makefile.am,backends/flint/flint_database.cc,
	  backends/flint/flint_alldocspostlist.cc,
	  backends/flint/flint_alldocspostlist.h:
	  Implement posting lists which return a list of all documents in
	  the database.  Such a posting list is obtained by calling
	  Xapian::Database::postlist_begin() with an empty term (ie, "").
	  Also, all Xapian::Database methods which take a termname now
	  accept an empty term, and return appropriate values (ie,
	  get_termfreq("") and get_collection_freq("") return the number of
	  documents in the database, and term_exists("") returns true
	  unless the database is empty).  Fixes Bug #47.
	* docs/quartzdesign.html: Document the inefficiency of all-document
	  postlists for Quartz.
	* tests/api_anydb.cc,tests/api_db.cc,tests/api_wrdb.cc: Add tests for
	  all-document postlists, and for passing an empty term to all the
	  applicable database methods.  This defines the new tests
	  allpostlist1, allpostlist2, emptyterm1, and emptyterm2.  These
	  tests currently skip for the remote backend where postlist_begin()
	  isn't yet implemented.

Mon Nov 13 02:06:03 GMT 2006  Olly Betts <olly@survex.com>

	* Merge in utf8 branch:

	Thu Sep 14 23:49:48 BST 2006  Olly Betts <olly@survex.com>

		* queryparser/,tests/queryparsertest.cc: Update to work with
		  UTF-8.  Stop normalising accents - the general sentiment
		  seems to be firmly against it, and where it is still
		  appropriate we should get the stemmers to do it.

Sun Nov 12 22:38:56 GMT 2006  Olly Betts <olly@survex.com>

	* NEWS: Update from ChangeLog file in preparation for branching and
	  merging.

Sun Nov 12 19:32:01 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_database.cc: Fix replace_document() not to
	  lose positional information for a document if it is replaced with
	  itself with unmodified postings.
	* tests/api_wrdb.cc: Add testcase replace_document5 as regression test
	  for the replace_document bug.
	* backends/remote/remote-database.cc: Fix
	  RemoteDatabase::has_positions() to refetch the cached value if it
	  might be out of date.

Sun Nov 12 17:07:00 GMT 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Need to increase pool_size further still to build
	  sourcedoc.pdf (2000000 now).

Sun Nov 12 16:24:15 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Add "update ReleaseNotes on wiki" to release checklist.

Sun Nov 12 16:23:19 GMT 2006  Olly Betts <olly@survex.com>

	* xapian.spec.in: Remove "." from end of "Summary:".  Package
	  new man page for xapian-progsrv.

Sun Nov 12 00:43:36 GMT 2006  Olly Betts <olly@survex.com>

	* docs/stemming.html: Update another "CVS" reference to say "SVN".

Sun Nov 12 00:42:22 GMT 2006  Olly Betts <olly@survex.com>

	* docs/install.html: Update reference to "CVS" to say "SVN".

Thu Nov 09 01:11:52 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Reorder the release checklist a little.  I've fixed
	  update_website.sh to get the latest version from version.php, so
	  now only version.php needs updating.

Thu Nov 09 00:17:35 GMT 2006  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Update for 0.9.9.

Wed Nov 08 20:54:31 GMT 2006  Olly Betts <olly@survex.com>

	* xapian.spec.in: Apply changes from Neal Becker to run "autoreconf
	  --force" so that we don't set rpath for /usr/lib64, and add "libs"
	  to %post and %postun.
	* AUTHORS: Thank Neal Becker.

Wed Nov 08 04:27:17 GMT 2006  Olly Betts <olly@survex.com>

	* docs/tests.html: Update for "testsuite" -> "tests/harness".  Mark
	  paths and programs with <code>...</code>.  Improve wording in a few
	  places.

Wed Nov 08 03:10:37 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: Need '#include "safeerrno.h"' for EADDRINUSE.

Wed Nov 08 02:36:59 GMT 2006  Olly Betts <olly@survex.com>

	* bin/Makefile.am,bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc:
	  xapian-progsrv now uses getopt for option processing, and we can
	  now generate a man page using help2man.  Fixes Bug #98.

Wed Nov 08 01:47:19 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: If the port requested is in use, exit with
	  code 69 (EX_UNAVAILABLE) which is useful if you're trying to
	  automate launching of xapian-tcpsrv instances.
	* tests/harness/backendmanager.cc: If we can't start xapian-tcpsrv
	  because the port is in use, try higher numbered ports.
	* tests/harness/testsuite.cc: Catch and report std::string exceptions.

Tue Nov 07 22:40:58 GMT 2006  Olly Betts <olly@survex.com>

	* net/tcpclient.cc: Turn on TCP_NODELAY for the client too.

Tue Nov 07 21:46:39 GMT 2006  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Turn on TCP_NODELAY for xapian-tcpsrv which
	  increases throughput for the remote backend over tcp.

Tue Nov 07 21:08:57 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc: Add missing '#include'-s.

Tue Nov 07 17:57:22 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/btree_base.cc: Add missing '#include'-s.

Tue Nov 07 05:12:40 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.h,backends/flint/flint_table.cc,
	  backends/quartz/btree.cc: Add missing '#include <vector>' which
	  "utils.h" was implicitly pulling in.
	* common/utils.h: Move '#include "safefcntl.h"' to more logical place.

Tue Nov 07 04:18:27 GMT 2006  Olly Betts <olly@survex.com>

	* common/safefcntl.h: Actually add the new file to SVN.

Tue Nov 07 03:36:59 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING,backends/flint/flint_io.h,backends/flint/flint_lock.cc,
	  backends/flint/flint_lock.h,backends/muscat36/io_system.cc,common/,
	  net/tcpserver.cc,tests/harness/backendmanager.cc,
	  tests/harness/testsuite.cc: Create "safefcntl.h" as a replacement
	  for <fcntl.h> instead of using "utils.h" for this purpose, since
	  "utils.h" pulls in many other things we often don't want.
	* common/utils.cc,common/utils.h,net/progclient.cc: Move split_words
	  to progclient.cc which is the only user of it.  Rewrite it to not
	  modified the string being split which risks being O(n^2).
	* net/progclient.cc,common/progclient.h: Pass std::string by const
	  reference.
	* configure.ac: Fix DJGPP build (fork is present but always fails).

Tue Nov 07 03:21:24 GMT 2006  Olly Betts <olly@survex.com>

	* matcher/biaspostlist.h: Don't need '#include "utils.h"'.

Tue Nov 07 01:15:14 GMT 2006  Olly Betts <olly@survex.com>

	* common/c_strtod.cc: Remove file which was checked in but is unused!

Mon Nov 06 15:24:02 GMT 2006  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Disable serialiselength1 and serialisedoc1
	  when the remote backend is disabled.

Mon Nov 06 15:23:40 GMT 2006  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Fix typo in recent check-in.

Mon Nov 06 01:43:37 GMT 2006  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Need "harness" in "$(srcdir)" for VPATH builds to
	  work.

Sun Nov 05 19:55:26 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am: Remove explicit dependency of
	  libbtreecheck.la on libxapian.la.  We always link in libxapian.la
	  and the explicit dependency makes it hard to build things in a
	  sane order.

Sun Nov 05 19:29:17 GMT 2006  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Don't define on_SIGCHLD() unless we'll use it.
	* tests/harness/backendmanager.cc: Use a proper signal handler for
	  SIGCHLD if we have waitpid() - POSIX leaves the semantics of
	  SIG_IGN on SIGCHLD unspecified.

Sun Nov 05 19:11:36 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am,backends/quartz/btreecheck.cc,
	  backends/quartz/btreecheck.h,bin/Makefile.am,tests/Makefile.am,
	  tests/harness/: Use _exit(0) instead of exit(0) in the child
	  process which closes the pipe to xapian-tcpsrv in BackendManager
	  since we don't want to call atexit functions from the child.  Move
	  btreecheck stuff into backends/quartz.

Sun Nov 05 17:12:05 GMT 2006  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.am,configure.ac,tests/Makefile.am,
	  tests/harness/Makefile.am,tests/harness/dir_contents,testsuite/:
	  Move the testsuite harness from "testsuite/" to "tests/harness/".

Sun Nov 05 16:36:56 GMT 2006  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc,testsuite/backendmanager.h: Now needs
	  <stdio.h>.  Set SIG_IGN for SIG_CHLD so we don't get zombie child
	  processes.

Sun Nov 05 03:53:24 GMT 2006  Olly Betts <olly@survex.com>

	* tests/apitest.cc: Make backendmanager static.

Sun Nov 05 03:51:36 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: Output "Listening..." once the socket is
	  open and read for connections.
	* testsuite/backendmanager.cc: Use popen() to run xapian-tcpsrv
	  and wait for "Listening..." before returning rather than just
	  sleeping for 1 second and hoping that's enough.

Sun Nov 05 02:54:23 GMT 2006  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Remove unnecessary inclusion of backendmanager.h.

Fri Nov 03 02:09:26 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Update debian packaging checklist.

Fri Nov 03 00:57:35 GMT 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Building sourcedoc.pdf needs a larger pool_size
	  now.

Thu Nov 02 19:12:34 GMT 2006  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Thu Nov 02 15:41:46 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING,NEWS,configure.ac: Update for 0.9.8.

Thu Nov 02 15:20:05 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Update from tinderbox.

Thu Nov 02 11:53:53 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: GCC's -Wendif-labels is enabled by default on versions
	  which support it, which simplifies our tests.

Thu Nov 02 00:22:44 GMT 2006  Olly Betts <olly@survex.com>

	* backends/remote/dir_contents: Update.

Wed Nov 01 15:33:12 GMT 2006  Olly Betts <olly@survex.com>

	* common/omstringstream.h: Fix our implementation of om_ostringstream
	  to work with OmTime.

Wed Nov 01 03:27:36 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Don't
	  require a prefixed boolean term to start with an alphanumeric
	  - allow the same set of characters as we do for the second and
	  subsequent characters.

Sat Oct 28 04:12:13 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Add catch for unknown exceptions.

Sat Oct 28 03:49:19 BST 2006  Olly Betts <olly@survex.com>

	* HACKING,configure.ac,docs/Makefile.am,docs/doxygen_api_conf.in,
	  docs/doxygen_full_conf.in: Produce a PDF for apidoc rather than
	  PostScript, since the PDF is smaller, and easier to view for most
	  users.  Use pdflatex to generate the PDF directly rather than
	  going via a DVI file.  This also avoids problems on some Linux
	  distros where latex is a symlink to pdfelatex (bug#81, bug#95).

Thu Oct 26 22:12:20 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* bin/quartzcheck.cc: Catch (and display) any exceptions which are
	  of type "const char *error".  btreecheck.cc raises an exception
	  of this type if a btree error is found, and this avoids
	  quartzcheck dying quite so horribly in this case.

Wed Oct 25 23:30:26 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: -Wendif-labels is new in GCC 3.3.
	* configure.ac: Revert accidental change which turned on -Werror in
	  non-maintainer builds.
	* configure.ac: Avoid non-portable use of double quotes in
	  double-quoted backticks.

Wed Oct 25 01:19:24 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Redhat's GCC 2.96 doesn't support -Wundef even
	  though real GCC version before and after it do!  Also, use
	  -Wshadow and -Wendif-labels even when not in maintainer mode.

Tue Oct 24 04:17:58 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc,bin/quartzcheck.cc: Eliminate
	  a couple of variables whose value is never used.

Tue Oct 24 00:31:25 BST 2006  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Only force a flush on
	  WritableDatabase::allterms_begin() if there are actually pending
	  changes.

Mon Oct 23 23:49:52 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Only force a flush on
	  WritableDatabase::allterms_begin() if there are actually pending
	  changes.

Mon Oct 23 02:24:12 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: When checking if we need -lm, don't use a constant
	  argument to log as the compiler might simply evaluate the whole
	  expression at compile time.

Sat Oct 21 20:42:52 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Mention automake 1.10 is out but we've not tested it yet.

Sat Oct 21 20:39:57 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Add entries to release checklist: make sure new API methods
	  are wrapped by the bindings, and that bug submitters are thanked.

Fri Oct 20 13:56:50 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* backends/flint/flint_io.cc: Fix compilation on windows (needs to
	  #include "safewindows.h" to get definition of SSIZE_T).

Tue Oct 17 02:16:37 BST 2006  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Fix compilation when valgrind is
	  detected by configure.

Thu Oct 12 13:30:05 BST 2006  Olly Betts <olly@survex.com>

	* xapian.spec.in: Package xapian-progsrv.

Thu Oct 12 00:49:47 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Note that on Debian, tetex-extra is needed for
	  fancyhdr.sty.
	* HACKING: Note that dch can be used to update debian/changelog.

Wed Oct 11 23:35:08 BST 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: If running latex on refman.ps fails, cat
	  refman.log since that is likely to show what failed.

Tue Oct 10 17:24:00 BST 2006  Olly Betts <olly@survex.com>

	* NEWS: Bump release date.

Sun Oct 08 21:41:04 BST 2006  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Update for 0.9.7.

Sun Oct 08 10:06:51 BST 2006  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Use lseek() to skip existing valgrind output
	  instead of repeated calls to read.  Handle the old valgrind naming
	  convention for log files.

Sun Oct 08 09:35:59 BST 2006  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix a couple of typos in comments.

Sun Oct 08 05:36:36 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Disable probing and short-cut tests for a FORTRAN
	  compiler.  We don't use one, but current libtool versions always
	  check for it regardless.

Sat Oct 07 21:19:35 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac,tests/runtest.in,testsuite/backendmanager.cc,
	  testsuite/testsuite.cc: Fix testsuite harness to show valgrind
	  output when a test fails (when running under valgrind in verbose
	  mode).  This probably stopped working due to changes in valgrind 3.
	* testsuite/backendmanager.cc: Run xapian-tcpsrv under valgrind if
	  apitest is.

Fri Oct  6 18:27:13 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* tests/runtest.in: export $LIBTOOL, $VALGRIND and $VG_LOG_FD.
	* testsuite/backendmanager.cc: If $LIBTOOL, $VALGRIND and
	  $VG_LOG_FD are set, run progsrv under valgrind.  Fixes
	  Bug #94.
	* net/remoteserver.cc: Use an AutoPtr to hold the unserialised
	  query, so it gets deleted if an exception is thrown.
	* api/omqueryinternal.cc: Use AutoPtr in one place, and a try-catch
	  in another, to ensure that partially unserialised queries get
	  deleted if exceptions are thrown.
	* tests/internaltest.cc: Add copyright notices to file for recent
	  change.
	* AUTHORS: Add myself as a current developer, now that I've started
	  committing to the core again.

Fri Oct 06 17:44:21 BST 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix memory leak in query unserialisation.

Fri Oct  6 17:34:59 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* tests/runtest.in: Cache result of test for $VG_LOG_FD if we
	  find the new option.  Saves 2 seconds for each invocation on my
	  machine, which is half the time when running just a single simple
	  test.

Fri Oct  6 16:35:46 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* tests/internaltest.cc: Check serialisation and unserialisation of
	  Query objects.  Currently fails under valgrind due to a memory
	  leak somewhere in the unserialisation code.

Thu Oct 05 14:13:55 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/error.h: Only enable the SWIG visibility hook when
	  using GCC 4 or later.

Wed Oct 04 20:32:43 BST 2006  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Remove overquoting.

Wed Oct  4 13:28:09 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* common/utils.h: MSVC seems to #define open.  However, the
	  workaround for this problem implemented for old versions of
	  solaris doesn't work for windows, so avoid applying the fix for
	  windows, and just #undef open.  (Windows seems to define some
	  open() functions, as well as #defining open!)

Wed Oct  4 13:26:18 BST 2006  Richard Boulton <richard@lemurconsulting.com>

	* net/serialise.cc: Use "unsigned char" instead of "char" when
	  serialising lengths, to avoid problems on platforms where char is
	  signed (eg, windows).

Wed Oct 04 12:25:51 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Remove "100" from start of file so
	  it actually compiles.

Mon Oct 02 13:57:56 BST 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Fix typo - "@libdir" should be "@libdir@".
	  This would lead to -L/usr/lib not being pruned, which is really
	  just a cosmetic problem (the typo was introduced in 0.9.3).

Thu Sep 28 02:00:05 BST 2006  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Reserve the right number of entries in the
	  subrsets vector.

Fri Sep 22 07:48:32 BST 2006  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Fix warning with aCC.

Fri Sep 22 04:43:06 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Expand note on _GLIBCXX_DEBUG;  Now using autoconf 2.60 for
	  snapshots and releases;  Now using a libtool patch which improves
	  support for -library=stlport4 with Sun's C++;  Give URL to Alexandre
	  Duret-Lutz's autotools tutorial, which is much more up-to-date than
	  the "goat book".

Fri Sep 22 04:42:08 BST 2006  Olly Betts <olly@survex.com>

	* common/serialise-double.cc: Fix a few compiler warnings.

Fri Sep 22 04:29:18 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: Retry on EINTR from fcntl or waitpid.

Fri Sep 22 03:39:12 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Only check _GLIBCXX_DEBUG for GCC 3.4
	  and later (which are the versions which support it).

Fri Sep 22 03:37:02 BST 2006  Olly Betts <olly@survex.com>

	* bin/xapian-tcpsrv.cc: Report errno if we catch a Xapian::Error which
	  has it set.

Fri Sep 22 03:30:25 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Turn on -Wportability to help ensure our Makefile.am's
	  are written in a portable way.

Fri Sep 22 03:29:25 BST 2006  Olly Betts <olly@survex.com>

	* tests/runtest.in: Turn on GLIBCXX_FORCE_NEW when running tests under
	  valgrind.

Tue Sep 19 06:28:47 BST 2006  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Check that the the destructor on a temporary
	  object gets called at the correct time (Sun C++ deliberately gets
	  this wrong by default).

Tue Sep 19 04:32:04 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Revert change to Xapian::Weight's copy
	  constructor because it prevents Omega from compiling.

Tue Sep 19 04:01:14 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Make the argument of log() a double to avoid
	  potential compiler warnings.

Mon Sep 18 22:58:19 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Xapian::Weight's copy constructor should
	  be private not protected (direct copying isn't allowed).

Mon Sep 18 07:03:51 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: We reportedly need "-lm" to get maths functions on
	  some versions of Sun's C++ compiler.

Sat Sep 16 12:08:25 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Sun's C++ compiler implements non-standards-conforming
	  lifetimes for temporary objects (for "backwards compatibility" with
	  old Sun C++ specific code).  We don't care about such code, so
	  always pass "-features=tmplife" for Sun C++.

Sat Sep 16 03:04:57 BST 2006  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc: Oops, fix compilation error.

Sat Sep 16 02:13:22 BST 2006  Olly Betts <olly@survex.com>

	* bin/xapian-progsrv.cc: Fix messages send by xapian-progsrv if an
	  exception is thrown while opening the database.

Fri Sep 15 06:29:55 BST 2006  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: 1/DBL_MAX may be less than DBL_MIN but on
	  platforms like x86 which hold results in registers with extra
	  precision, this is still representable, but not reliably so
	  the test sometimes fails.

Fri Sep 15 02:40:52 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc: Avoid copying beyond the end of
	  the bitmap block.

Thu Sep 14 02:01:58 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc: Fix warning from GCC 4.1.0.

Wed Sep 13 18:12:43 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_io.cc,backends/flint/flint_io.h,
	  backends/flint/flint_version.cc: Fix compiler warnings.

Wed Sep 13 06:09:40 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_version.cc,backends/flint/flint_version.h:
	  Actually commit the new files!

Wed Sep 13 05:21:04 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/,common/utils.h: Rewrite some of flint's low level IO
	  functions, and the "iamflint" handling class.

Tue Sep 12 20:22:57 BST 2006  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc: Fix to compile.

Tue Sep 12 18:56:16 BST 2006  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h:
	  Fix bug in remote backend which incorrectly returned an empty MSet
	  under certain circumstances!

Tue Sep 12 11:51:31 BST 2006  Olly Betts <olly@survex.com>

	* matcher/msetcmp.cc: "static inline" -> "inline" since the static is
	  superfluous and Sun's C++ warns.

Mon Sep 11 23:42:28 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Check $CXX not $CC to identify which C++ compiler we
	  have.

Mon Sep 11 16:32:37 BST 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/vectortermlist.h,
	  backends/flint/flint_positionlist.cc,configure.ac,
	  net/remoteconnection.cc,net/tcpclient.cc,
	  queryparser/queryparser.lemony,tests/api_anydb.cc,tests/api_db.cc,
	  tests/api_nodb.cc: I've discovered that -library=stlport4 puts
	  Sun's compiler into an "ANSI C++ compliant" mode, so do that
	  automatically in configure and throw away all the annoying special
	  bits of alternative code we'd accumulated just for this one
	  compiler.

Mon Sep 11 16:01:20 BST 2006  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Speed up deldoc4 when run in verbose mode
	  - some stringstream implementations are very inefficient when
	  the string grows long.

Mon Sep 11 05:30:29 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Add some advice regarding debugging using -D_GLIBCXX_DEBUG,
	  valgrind, and gdb.

Sun Sep 10 02:24:47 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix last check-in to actually work.

Sat Sep 09 04:19:44 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Ensure that if _GLIBCXX_DEBUG has been specified that
	  it also passed when generating version.h.

Sat Sep 09 04:01:40 BST 2006  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Give more useful output should the double
	  serialisation test fail.

Sat Sep 09 03:19:20 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Add a check that _GLIBCXX_DEBUG is
	  set compatibly if we're compiling with GNU C++.

Sat Sep 09 02:55:38 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_modifiedpostlist.cc: Fix potential access to
	  iterator which has already reached its end.

Fri Sep 08 04:05:28 BST 2006  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/,matcher/bm25weight.cc,
	  matcher/tradweight.cc,net/,tests/internaltest.cc: Split the double
	  serialisation code off into its own file - it is used by BM25Weight
	  and TradWeight, so it needs to be compiled in even when the remote
	  backend is disabled.

Thu Sep 07 00:09:41 BST 2006  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Discard stderr from xapian-tcpsrv
	  so we don't get "write error" messages appearing in the testsuite
	  output when we've just closed the connection at the client side.

Tue Sep 05 21:07:40 BST 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fix warning when remote backend
	  is disabled.

Tue Sep 05 20:58:52 BST 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Add extra dependencies so that parallel make
	  doesn't try to run latex twice simultaneously.

Tue Sep 05 20:58:13 BST 2006  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Tue Sep 05 20:56:50 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am: Fix typo.

Tue Sep 05 03:23:14 BST 2006  Olly Betts <olly@survex.com>

	* docs/queryparser.html,queryparser/queryparser.lemony,
	  tests/queryparsertest.cc: Implement "ADJ" operator - like
	  "NEAR" except the terms must appear in matching documents in the
	  same order as in the query.

Tue Sep 05 03:19:12 BST 2006  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/,docs/remote_protocol.html,
	  matcher/bm25weight.cc,matcher/tradweight.cc,net/remoteserver.cc,
	  net/serialise.cc,tests/internaltest.cc: Change how doubles are
	  serialised by TradWeight, BM25Weight, and in the remote backend
	  protocol.  The new encoding allows us to transfer any double
	  value which can be represented by both machines precisely and
	  compactly.

Tue Sep 05 02:27:36 BST 2006  Olly Betts <olly@survex.com>

	* docs/queryparser.html,queryparser/queryparser.lemony,
	  tests/queryparsertest.cc: Allow a distance to be specified
	  for NEAR - e.g. "cats NEAR/3 dogs" (bug#92).

Fri Sep 01 00:29:10 BST 2006  Olly Betts <olly@survex.com>

	* backends/remote/remote-database.cc,common/remote-database.h:
	  Fix RemoteDatabase::reopen() to not be const so it actually
	  overrides the virtual method it is supposed to.

Thu Aug 31 21:40:53 BST 2006  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.h: Remove unneeded BackendManager::
	  qualifications.

Thu Aug 31 17:08:16 BST 2006  Olly Betts <olly@survex.com>

	* matcher/msetpostlist.cc,matcher/msetpostlist.h: Move #include
	  "omenquireinternal.h" into the header to fix compilation error
	  with older versions of GCC.

Thu Aug 31 16:38:33 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for Nexenta (alpha 5).

Wed Aug 30 23:41:08 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix generation of version.h to work with Solaris sed.

Sat Aug 26 15:28:22 BST 2006  Olly Betts <olly@survex.com>

	* docs/index.html: Add links to the wiki.

Sun Jul 16 03:48:26 BST 2006  Olly Betts <olly@survex.com>

	* common/Makefile.am: Ship remoteprotocol.h.

Sun Jul 16 02:23:54 BST 2006  Olly Betts <olly@survex.com>

	* common/remote-database.h: Add new file I missed in the previous
	  commit.

Sun Jul 16 01:58:25 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,api/,backends/Makefile.am,backends/database.cc,
	  backends/dbfactory_remote.cc,backends/flint/flint_database.cc,
	  backends/flint/flint_termlist.cc,backends/flint/flint_termlist.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
	  backends/net/,backends/quartz/quartz_termlist.cc,
	  backends/quartz/quartz_termlist.h,backends/remote/,bin/Makefile.am,
	  bin/xapian-progsrv.cc,bin/xapian-tcpsrv.cc,common/,configure.ac,
	  docs/remote_protocol.html,include/xapian/,matcher/,net/,tests/,
	  testsuite/backendmanager.cc,testsuite/backendmanager.h: Rewrite
	  most of the remote backend.  It now supports most operations
	  which a local database does (including writing!), the protocol
	  used is more compact, and a number of layers of classes have
	  been eliminated and the sequences of method calls simplified, so the
	  code should be easier to understand and maintain despite doing more.
	  A number of bugs have been fixed in the process.

Sat Jul 15 05:10:38 BST 2006  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Doesn't need <iostream>.

Sat Jul 15 01:06:27 BST 2006  Olly Betts <olly@survex.com>

	* README: Add link to the wiki.  Tweak wording.

Fri Jul 14 15:21:39 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Note in error message that dot is in graphviz.

Fri Jul 14 15:17:36 BST 2006  Olly Betts <olly@survex.com>

	* docs/overview.html: Add discussion of uses of terms vs values.

Fri Jul 14 15:01:04 BST 2006  Olly Betts <olly@survex.com>

	* docs/overview.html: Rewrite the section on Xapian::Document to
	  remove some very out-of-date information and make it clearer.

Tue Jul 11 18:41:07 BST 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix problem I believe was introduced
	  by previous fix.
	* tests/queryparsertest.cc: Add regression test and some additional
	  related test cases.

Tue Jul 11 03:32:48 BST 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix bug in how we handle prefixed
	  quoted phrases and prefixed brackets.
	* tests/queryparsertest.cc: Add regression tests.

Mon Jul 10 23:17:58 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Note that automatically allocated
	  document IDs don't reuse IDs from deleted document.

Wed Jul 05 01:06:35 BST 2006  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Tweak whitespace.

Mon Jun 26 23:56:02 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success reports for MSVC and sparc linux.

Sat Jun 17 02:01:35 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,tests/Makefile.am: Tweak new check-* rules to be more
	  portable and robust.

Sun Jun 11 23:29:48 BST 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Fix parsing
	  of loved and hated prefixed phrases and bracketted expressions.  Fix
	  handling of stopwords in boolean expressions.  Don't ignore a
	  stopword if it's the only query term.  Add regression tests for all
	  these cases.

Fri Jun 09 15:21:07 BST 2006  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Add pointer to set_database when describing
	  FLAG_WILDCARD.

Fri Jun 09 13:51:03 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Add note that FLAG_WILDCARD requires
	  you to call set_database.

Fri Jun 09 13:49:34 BST 2006  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Don't compile query serialisation if the
	  remote backend is disabled.

Fri Jun 09 01:48:25 BST 2006  Olly Betts <olly@survex.com>

	* api/omdocument.cc,tests/api_nodb.cc: add_value failed to replace an
	  existing value with the same number, contrary to what the
	  documentation says (bug #82).

Thu Jun 08 21:36:54 BST 2006  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Don't fetch the document data when fetching
	  the value to sort on.  Simple benchmarking showed this to speed
	  up sort by value by a factor of between 3 and 9!

Sun Jun 04 17:36:01 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/: Remove forced flush when iterating the posting list
	  of a term which has modified posting pending.

Sat Jun 03 21:38:43 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_termlist.cc,
	  backends/quartz/quartz_database.cc,tests/api_wrdb.cc: We can't flush
	  during a transaction, which means that we can't use flush to avoid
	  having to handle corner cases (like deleting a document right after
	  adding it before it's been flushed) so handle corner cases properly
	  (except for postlist_begin() and allterms_begin() which are
	  harder - these now throw UnimplementedError at least...)
	* backends/flint/flint_database.cc,backends/quartz/quartz_database.cc:
	  replace_document(did, doc) was double-incrementing the "changes"
	  counter when document did didn't exist - fixed.

Sat Jun 03 17:53:41 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Document "make check-flint" and "make check-quartz".

Sat Jun 03 17:49:25 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,tests/Makefile.am: Added make targets "check-flint" and
	  "check-quartz" which run the subset of tests which test the flint
	  and quartz backends respectively.

Sat Jun 03 04:03:00 BST 2006  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/quartz/dir_contents,
	  backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
	  common/database.h,include/xapian/database.h,tests/apitest.cc:
	  Rework transactions to support "unflushed" transactions, and so
	  they work with quartz as well as with flint.

Sat Jun 03 03:18:22 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Document "make check-remote".

Sat Jun 03 00:23:46 BST 2006  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/flint/dir_contents,
	  backends/flint/flint_database.cc,backends/flint/flint_database.h,
	  backends/quartz/dir_contents,common/database.h,
	  include/xapian/database.h,tests/: Implement transactions for
	  flint.

Sat Jun 03 00:14:37 BST 2006  Olly Betts <olly@survex.com>

	* tests/apitest.cc: Run tests on flint if flint is enabled, rather
	  than if quartz is enabled.

Sun May 28 23:01:45 BST 2006  Olly Betts <olly@survex.com>

	* common/omtime.h: Add operator+ and operator+= with argument of
	  type Xapian::timeout.

Sun May 28 22:02:30 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/errorhandler.h: Fix typos in private assignment
	  operator and copy ctor (Error -> ErrorHandler!)

Sun May 28 21:54:05 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,tests/Makefile.am: Add "check-remote" target which runs
	  the subset of tests which test the remote backend.

Thu May 25 16:06:06 BST 2006  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,common/database.h:
	  Merge Xapian::Internal::open_database() into the Xapian::Database
	  ctor which calls it; merge Xapian::Internal::open_writable_database()
	  into the Xapian::WritableDatabase ctor which calls it.

Wed May 24 08:28:40 BST 2006  Olly Betts <olly@survex.com>

	* net/socketserver.cc: OmLineBuf -> OmSocketLineBuf.

Wed May 24 08:27:22 BST 2006  Olly Betts <olly@survex.com>

	* common/socketserver.h: OmLineBuf -> OmSocketLineBuf.

Wed May 24 07:50:51 BST 2006  Olly Betts <olly@survex.com>

	* common/Makefile.am,common/omlinebuf.h,common/socketcommon.h,
	  net/Makefile.am,net/omlinebuf.cc,net/socketcommon.cc:
	  Merge OmLineBuf into OmSocketLineBuf.
	* common/Makefile.am: Fix netutils.cc to be conditionally included
	  when the remote backend is enabled, not the quartz backend!

Tue May 23 18:59:09 BST 2006  Olly Betts <olly@survex.com>

	* api/Makefile.am,api/errorhandler.cc,api/omerror.cc,
	  include/xapian/error.h,include/xapian/errorhandler.h:
	  Redo the Xapian::Error and Xapian::ErrorHandler classes.
	  The new versions have better, clearer documentation comments
	  and are cleaner internally.
	* include/xapian/error.h: Add hook to allow SWIG bindings to
	  be built using GCC's visibility support.

Tue May 23 10:08:02 BST 2006  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Remove superfluous '#include <autoptr.h>'.

Tue May 23 09:42:52 BST 2006  Olly Betts <olly@survex.com>

	* backends/Makefile.am,backends/database.cc,
	  backends/dbfactory_remote.cc,backends/net/net_database.cc,
	  backends/net/net_termlist.cc,backends/net/net_termlist.h,common/,
	  include/xapian/dbfactory.h,matcher/,net/socketclient.cc,
	  net/socketcommon.cc: Eliminate the NetClient class by merging
	  it into NetDatabase.

Mon May 22 08:51:16 BST 2006  Olly Betts <olly@survex.com>

	* common/omtime.h: Fix OmTime::operator> which failed to return false
	  if the seconds were strictly less but the microsecond fraction was
	  more.

Sun May 21 11:53:29 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.am,docs/Makefile.am,examples/Makefile.am:
	  Make use of the dist_ prefix to avoid having to list files in
	  EXTRA_DIST as well as in *_DATA and man_MANS.

Sun May 21 05:55:00 BST 2006  Olly Betts <olly@survex.com>

	* api/dir_contents,getopt/dir_contents,queryparser/dir_contents:
	  Add missing dir_contents files.

Sun May 21 05:45:44 BST 2006  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: Remove unnecessary "#include <sys/wait.h>".

Sat May 20 11:02:43 BST 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: doxygen_api_conf and doxygen_full_conf are
	  generated, so aren't in srcdir!

Sat May 20 10:14:52 BST 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am: automake adds suitable rules for rebuilding
	  doxygen_api_conf and doxygen_source_conf, so remove our less
	  accurate versions.

Fri May 19 14:43:47 BST 2006  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/doxygen_api_conf.in,docs/doxygen_full_conf.in:
	  Remove "XAPIAN_DEPRECATED" from generated documentation.
	* docs/Makefile.am: Fix dependencies for regenerating the doxygen
	  documentation.

Fri May 19 08:12:51 BST 2006  Olly Betts <olly@survex.com>

	* docs/scalability.html: quartzcompact and xapian-compact now allow
	  you to set the blocksize, so there's no need to use copydatabase
	  if you want to migrate a database to a larger blocksize.  Mention
	  gmane.  Other minor tweaks.

Fri May 19 07:52:23 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Add --blocksize option to allow the blocksize
	  to be set (default is 8K as before.)

Fri May 19 07:47:13 BST 2006  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Add --blocksize option to allow the blocksize
	  to be set (default is 8K as before.)

Thu May 18 11:24:17 BST 2006  Olly Betts <olly@survex.com>

	* api/vectortermlist.h: Whitespace tweak.

Tue May 16 10:09:53 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Update details of the debian stable backport version
	  numbering scheme.

Tue May 16 06:55:14 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Remove unused variable from snprintf testing code.

Tue May 16 04:32:34 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Expand on the debian package building checklist.

Tue May 16 04:32:07 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Note that "set_sort_by_relevance" is the
	  default setting.

Mon May 15 06:59:01 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Update debian package building checklist.

Mon May 15 03:53:53 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Update one more result before the actual release.

Mon May 15 02:15:18 BST 2006  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Updated for 0.9.6.

Mon May 15 01:35:33 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated in preparation for the next release.

Sun May 14 19:05:37 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.h: Added workaround for newlib header bug.

Sat May 13 07:04:14 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix snprintf tests.

Sat May 13 04:52:53 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Tweak version.h generation to cope with CXXCPP putting
	  carriage returns into its output as can happen on cygwin.

Fri May 12 21:49:33 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Update with the libtool patches we're now using.

Fri May 12 21:43:02 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Trim trailing whitespace.

Fri May 12 20:43:47 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version_h.cc: Replace @@ with " instead
	  of @, so we can write @deprecated.  Fix more compilation problems.

Fri May 12 19:00:08 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/version_h.cc: Fix compilation problem.

Fri May 12 01:19:14 BST 2006  Olly Betts <olly@survex.com>

	* api/version.cc,include/xapian/version_h.cc: Rename
	  Xapian::xapian_version_string() and companions to
	  Xapian::version_string().  Keep the old functions as aliases
	  which are marked as deprecated.

Wed May 10 18:25:59 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Remove bogus documentation for a
	  parameter which doesn't exist.

Tue May 09 19:17:23 BST 2006  Olly Betts <olly@survex.com>

	* bin/Makefile.am: Remove trailing whitespace.
	* bin/xapian-compact.cc: Fix renaming of "iamflint.tmp" for MS Windows
	  where you can't rename an open file.

Tue May 09 15:57:26 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix reversed conditional in test for snprintf (which
	  affects cygwin).

Mon May 01 21:49:46 BST 2006  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add another prefix testcase to improve
	  coverage.

Sat Apr 29 20:16:46 BST 2006  Olly Betts <olly@survex.com>

	* docs/remote_protocol.html: Document keep-alive messages.

Thu Apr 13 14:49:48 BST 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Add rules
	  to handle a boolean filter with a "+" in front (such as
	  +site:xapian.org).

Wed Apr 12 18:42:31 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: More updates for 0.9.5.

Tue Apr 11 19:56:16 BST 2006  Olly Betts <olly@survex.com>

	* matcher/Makefile.am: Need to add "-I${top_builddir}/include" to
	  INCLUDES so that xapian/version.h is found.

Tue Apr 11 19:24:59 BST 2006  Olly Betts <olly@survex.com>

	* backends/database.cc,configure.ac,include/xapian/version_h.cc,
	  matcher/multimatch.cc,matcher/stats.cc,tests/apitest.cc,
	  testsuite/backendmanager.cc,testsuite/backendmanager.h:
	  Eliminate XAPIAN_BUILD_BACKEND_* from config.h and just use
	  XAPIAN_HAS_*_BACKEND from xapian/version.h instead.

Tue Apr 11 18:32:52 BST 2006  Olly Betts <olly@survex.com>

	* include/Makefile.am: Add xapian/version.h.timestamp as a dependency
	  on all-local so that xapian/version.h actually gets regenerated
	  when required.

Tue Apr 11 17:52:24 BST 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,backends/flint/flint_btreebase.cc,
	  backends/quartz/btree_base.cc,common/utils.h,configure.ac:
	  Disable MSVC warning 4800 (on int to bool conversions) in config.h
	  and then we can remove the "fixes" elsewhere.

Tue Apr 11 16:28:01 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: Simpler check for VALGRIND being set to empty value.

Tue Apr 11 01:04:32 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Add a summary.

Tue Apr 11 00:45:55 BST 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updates from boxes which were down when I did the
	  release.

Mon Apr 10 17:06:46 BST 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,backends/flint/flint_btreebase.cc,
	  backends/flint/flint_utils.h,backends/quartz/btree_base.cc,
	  backends/quartz/quartz_utils.h,common/omassert.h:
	  Fix more MSVC7 warnings (I spoke too soon).

Mon Apr 10 15:56:52 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Another MSVC7 warning fix.  Should be free
	  of warnings now.

Mon Apr 10 14:46:34 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_utils.h,
	  backends/quartz/quartz_utils.h,bin/quartzcompact.cc,
	  bin/xapian-compact.cc,common/omdebug.h,common/utils.h,
	  include/xapian/query.h,languages/header.h,matcher/multimatch.cc:
	  Fix assorted MSVC7 warnings.

Sun Apr 09 04:56:09 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: Expand on details of what's required when changing Xapian
	  (discuss documentation requirements, expand on why feature tests
	  are vital).
	* HACKING: Update section on building debian packages.

Sat Apr 08 20:02:19 BST 2006  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Updated for 0.9.5.

Fri Apr 07 23:53:08 BST 2006  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_db.cc,tests/btreetest.cc: Correct
	  spelling of "existant" to "existent".

Fri Apr 07 19:13:24 BST 2006  Olly Betts <olly@survex.com>

	* configure.ac: We don't use strcasecmp, so don't probe for it.

Fri Apr 07 18:30:40 BST 2006  Olly Betts <olly@survex.com>

	* common/utils.h: Fixes for MSVC7 compilation.

Fri Apr 07 17:19:43 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc,backends/quartz/btree.cc: Fixes for
	  MSVC compilation.

Fri Apr 07 16:04:08 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_cursor.h: Fix incorrect example code in
	  documentation comment.
	* backends/flint/flint_table.cc,backends/flint/flint_table.h:
	  Remove unused method FlintTable::find_key().

Fri Apr 07 16:02:40 BST 2006  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Fri Apr 07 15:58:31 BST 2006  Olly Betts <olly@survex.com>

	* debian/control.in: copydatabase and xapian-compact are packaged
	  in xapian-tools, so add them to the documented list of tools
	  included.

Fri Apr 07 15:12:43 BST 2006  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Set xapian-tcpsrv to allow 5 connections in the
	  listen queue instead of just one.

Fri Apr 07 13:28:15 BST 2006  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: Check mset size in tcpmatch1.

Fri Apr 07 01:26:03 BST 2006  Olly Betts <olly@survex.com>

	* xapian.spec.in: Man pages may be gzipped.

Thu Apr 06 14:41:29 BST 2006  Olly Betts <olly@survex.com>

	* HACKING: aclocal is part of automake, not autoconf.

Thu Apr 06 01:29:21 BST 2006  Olly Betts <olly@survex.com>

	* bin/,examples/copydatabase.cc,examples/delve.cc,examples/quest.cc:
	  In the "--help" output, add "Options:" before the list of options.

Thu Apr 06 01:11:31 BST 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Tweak to improve help2man output.

Wed Apr 05 16:26:15 BST 2006  Fabrice Colin

	* xapian.spec.in: Package man pages.

Wed Apr 05 16:23:49 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am,bin/Makefile.am,examples/Makefile.am: Include generated
	  man pages in the distribution tarball.

Wed Apr 05 02:48:27 BST 2006  Olly Betts <olly@survex.com>

	* debian/TODO: Updated.

Wed Apr 05 02:44:15 BST 2006  Olly Betts <olly@survex.com>

	* ./,examples: svn:ignore man pages.

Wed Apr 05 02:43:08 BST 2006  Olly Betts <olly@survex.com>

	* bin/Makefile.am,examples/Makefile.am: No need to make man pages
	  depend on config.h, since the binaries will already.

Wed Apr 05 02:42:42 BST 2006  Olly Betts <olly@survex.com>

	* Makefile.am: Generate man page for xapian-config.

Wed Apr 05 00:59:53 BST 2006  Olly Betts <olly@survex.com>

	* examples/Makefile.am: Use help2man to generate manpages for the
	  installed binaries in examples.

Wed Apr 05 00:56:11 BST 2006  Olly Betts <olly@survex.com>

	* bin/omtcpsrv.cc: Rename to bin/xapian-tcpsrv.cc.
	* bin/omprogsrv.cc: Rename to bin/xapian-progsrv.cc.
	* HACKING,bin/Makefile.am,configure.ac: Use help2man to generate
	  manpages for the installed binaries in bin.

Tue Apr 04 16:44:54 BST 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Note example of BM25Weight parameters
	  which make set_sort_by_relevance_then_value useful.

Tue Apr 04 16:35:58 BST 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h,matcher/,tests/api_db.cc:
	  Implement Enquire::set_sort_by_relevance_then_value().

Tue Apr 04 01:05:41 BST 2006  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: sort_key no longer needs to be mutable
	  now that MSetSortCmp has been removed.

Mon Apr 03 02:03:12 BST 2006  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Removed dead code (class MSetSortCmp).

Sun Apr 02 16:37:38 BST 2006  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Don't perform a name lookup on the IP address
	  which an incoming connection is from as that could easily slow
	  down the search response - instead just print the IP address itself
	  if output is verbose.

Sun Apr 02 13:28:31 BST 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/,docs/remote_protocol.html,
	  matcher/multimatch.cc,matcher/networkmatch.cc,matcher/networkmatch.h,
	  net/socketclient.cc,net/socketserver.cc: Change bool
	  sort_by_relevance to enum sort_by in preparation for adding
	  "sort_by_relevance_then_value".

Fri Mar 31 22:32:16 BST 2006  Olly Betts <olly@survex.com>

	* examples/copydatabase.cc,examples/quest.cc: Add --help and --version
	  options.
	* examples/delve.cc: Tidy up output from --help and --version options.

Fri Mar 31 19:01:25 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Fix SEGV when run with no arguments (introduced
	  by last change).

Fri Mar 31 17:57:27 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Add --version option.  Tidy up output from
	  --help.

Fri Mar 31 17:43:25 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Include --help and --version in --help output.
	* bin/quartzdump.cc: Add --help and --version options.  Terminate list
	  of long options so that "quartzdump --foo" no longer segfaults.

Fri Mar 31 17:27:09 BST 2006  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Tweak --help and --version output for
	  consistency with other binaries.  Terminate list of long options so
	  that "quartzcompact --foo" no longer segfaults.

Fri Mar 31 16:47:02 BST 2006  Olly Betts <olly@survex.com>

	* bin/omtcpsrv.cc: Make OPT_HELP and OPT_VERSION positive numbers.
	  Only give synopsis line for --help, not for syntax error.
	* bin/xapian-compact.cc: List --help and --version in --help output.
	  Terminate list of long options so that "xapian-compact --foo" no
	  longer segfaults.

Fri Mar 31 16:20:24 BST 2006  Olly Betts <olly@survex.com>

	* bin/omtcpsrv.cc: Added --help and --version options.

Thu Mar 30 11:51:21 BST 2006  Philip Neustrom

	* docs/remote_protocol.html: Document messages for requesting and
	  sending a termlist and a document.

Wed Mar 29 19:39:05 BST 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_termlist.cc,backends/quartz/quartz_termlist.cc:
	  Add missing spaces in debug output.

Fri Mar 17 09:22:54 GMT 2006  Olly Betts <olly@survex.com>

	* api/vectortermlist.h,backends/net/net_termlist.cc,
	  backends/net/net_termlist.h,common/alltermslist.h,common/termlist.h,
	  matcher/branchtermlist.h: Make TermList::positionlist_begin() pure
	  virtual and put dummy implementations in BranchTermList and other
	  subclasses which can't (or don't) implement it.  This makes it
	  hard to accidentally fail to implement it in a backend's TermList
	  subclass.
	* backends/net/net_termlist.h: positionlist_begin() now throws
	  UnimplementedError instead of InvalidOperationError.

Fri Mar 17 08:46:52 GMT 2006  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: There's no need for the MultiTermList wrapper in
	  the common case where we're only dealing with a single database.

Fri Mar 17 07:54:54 GMT 2006  Olly Betts <olly@survex.com>

	* backends/net/net_termlist.h: Remove unused "positions" member.

Fri Mar 17 07:07:57 GMT 2006  Olly Betts <olly@survex.com>

	* backends/multi/multi_termlist.cc,backends/multi/multi_termlist.h,
	  tests/api_posdb.cc: Fix TermIterator::positionlist_begin() to work
	  on TermIterator from Database::termlist_begin().

Fri Mar 17 03:47:04 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix "unused parameter" warning from
	  previous change.

Thu Mar 16 05:20:16 GMT 2006  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h:  Move
	  Enquire::get_matching_terms_end() inline in header.

Thu Mar 16 04:28:20 GMT 2006  Olly Betts <olly@survex.com>

	* api/omdocument.cc,configure.ac,include/xapian/document.h: Move
	  Document::termlist_end() inline in header.

Fri Mar 10 04:55:57 GMT 2006  Olly Betts <olly@survex.com>

	* INSTALL: Improve wording.

Fri Mar 10 04:49:09 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.h: Fix incorrect method name in
	  documentation comment.

Fri Mar 10 04:39:45 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Btree::find_key()
	  is unused so remove it.

Fri Mar 10 04:29:46 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Note that we now use a lightly patched version of libtool
	  1.5.22.

Fri Mar 10 02:55:48 GMT 2006  Olly Betts <olly@survex.com>

	* docs/overview.html: Bring up to date.

Wed Mar 08 02:32:49 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix FLAG_BOOLEAN_ANY_CASE to really
	  allow any case combination - previously it only allowed all
	  uppercase or all lowercase.
	* tests/queryparsertest.cc: Add feature and regression tests for
	  FLAG_BOOLEAN_ANY_CASE.
	* tests/queryparsertest.cc: Rename test cases to more descriptive
	  names.

Tue Mar 07 19:59:54 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc:
	  Fix QueryParser's handling of terms with trailing "#", "+",
	  or "-" when set_database has been called and the term doesn't
	  exist in the database with the suffix.

Tue Feb 21 21:14:22 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/deprecated.h: Allow xapian-bindings to override
	  deprecation warnings.

Tue Feb 21 17:55:17 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc: Note that "flicklock" should be
	  "flintlock"!

Tue Feb 21 14:13:08 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Tue Feb 21 14:12:47 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Update the "how to do a release" list.

Tue Feb 21 00:17:40 GMT 2006  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Updated for 0.9.4.

Mon Feb 20 21:15:46 GMT 2006  Olly Betts <olly@survex.com>

	* api/omdocument.cc,api/omenquire.cc,api/omquery.cc,include/xapian/,
	  queryparser/queryparser.cc: GCC 3.2 actually doesn't like
	  __attribute__((deprecated)) on method definitions, so just
	  put declarations of deprecated methods in the headers, and
	  move definitions into the library.

Mon Feb 20 16:04:33 GMT 2006  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_db.cc,tests/api_nodb.cc: Update uses
	  of deprecated methods and functions.

Mon Feb 20 15:47:31 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/document.h: __attribute__((deprecated)) doesn't
	  work on method definitions with default parameters on GCC 3.2
	  so fix header to overload instead.

Mon Feb 20 13:44:14 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Add documentation comment for
	  Enquire::set_sort_by_value_then_relevance().

Sun Feb 19 23:18:09 GMT 2006  Olly Betts <olly@survex.com>

	* include/Makefile.am,include/xapian/: Flag deprecated methods such
	  that the compiler gives a warning, for compilers which support
	  such a feature.

Sun Feb 19 22:58:55 GMT 2006  Olly Betts <olly@survex.com>

	* COPYING: Update second occurrence of old FSF address.

Sun Feb 19 22:46:49 GMT 2006  Olly Betts <olly@survex.com>

	* README: Add pointer to HACKING.  Change "CVS access" to "SVN
	  access".

Sun Feb 19 01:46:00 GMT 2006  Olly Betts <olly@survex.com>

	* api/version.cc: Correct typo in name of function xapian_revision().

Thu Feb 16 10:23:59 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Oops, fix previous fix (I'd pasted the substituted
	  result from testing the patch...)

Thu Feb 16 10:16:31 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Thu Feb 16 10:15:51 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Need to set exec_prefix and prefix at top of
	  script as they're used by various @SUBSTITUTIONS@.

Thu Feb 16 00:09:34 GMT 2006  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Updated for 0.9.3.

Wed Feb 15 21:58:23 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Fix option loop to work on shells other than bash.

Wed Feb 15 21:38:38 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Tweak wording of a documentation comment.

Wed Feb 15 21:34:55 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix documentation comments for the
	  values of QueryParser::feature_flag so doxygen actually pulls out
	  the documentation for them.  Add documentation for the parameters
	  of QueryParser::parse_query().

Wed Feb 15 21:26:48 GMT 2006  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: If the database is too broken to open, emit a
	  warning message and bump the error count.

Wed Feb 15 21:23:38 GMT 2006  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Document right-truncation.

Wed Feb 15 21:08:37 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Fixed to output usage correctly if no arguments
	  are specified.

Mon Feb 13 17:43:08 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: Expand dependency_libs recursively.  It's not
	  *that* hard, and we're just storing up problems for the future
	  by ignoring the issue.

Mon Feb 13 16:57:36 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Devlopers also need makeindex installed for documentation
	  building.  Note that dvips and makeindex are usually packaged with
	  TeX.

Mon Feb 13 15:16:02 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac,xapian-config.in: Some Linux distros have an
	  unhelpful policy of not packaging .la files, and on Linux
	  link_all_deplibs_CXX=no so we don't actually need to link
	  in the dependency_libs.  So use the value of link_all_deplibs_CXX
	  from configure to control whether we link against dependency_libs.
	* xapian-config.in: Factor out common code into shell functions,
	  and tidy up --help output.
	* xapian-config.in: Re entry "Tue May 11 20:55:56 BST 2004": the (C)
	  dates I mined from CVS included a BrightStation (C), but the few
	  fragments of that version which survive are actually from
	  glib-config (or one of the myriad of *-config scripts which look
	  very like it), and are just standard Bourne shell idioms anyway.

Mon Feb 13 13:59:02 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: td174 is gone.
	* PLATFORMS: Compaq C++ 7.1 seems to have better template support
	  (but fails to link binaries).

Mon Feb 13 12:22:23 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING,testsuite/testsuite.cc: XAPIAN_TESTSUITE_PLAIN_OUTPUT
	  -> XAPIAN_TESTSUITE_OUTPUT=plain.

Sun Feb 12 18:29:55 GMT 2006  Olly Betts <olly@survex.com>

	* backends/database.cc,tests/api_nodb.cc: Trying to open a database
	  for reading which doesn't exist now fails with DatabaseOpeningError
	  instead of FeatureUnavailableError.  Added regression test
	  nosuchdb1.

Thu Feb 09 10:48:10 GMT 2006  Olly Betts <olly@survex.com>

	* net/socketserver.cc: Add missing '#include <iostream>'
	  when TIMING_PATCH is defined.

Wed Feb 08 08:22:09 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING: Now use libtool 1.5.22 for generating snapshots and
	  releases (includes a number of bug-fixes).
	* HACKING,docs/doxygen_api_header.html_tmpl,
	  docs/doxygen_full_header.html_tmpl: Now use doxygen 1.4.6 for
	  generating snapshots and releases (nicer output).
	* docs/doxygen_full_header.html_tmpl: Title "Internal Source
	  Documentation" rather than "Full source documentation".

Sun Feb 05 06:19:29 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: The
	  QueryParser now recognises "AND NOT" as a synonym for "NOT".

Mon Jan 16 18:19:26 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_utils.h: Fix compiler warning.

Mon Jan 16 18:17:27 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING,backends/flint/,backends/muscat36/,backends/quartz/,
	  bin/quartzcompact.cc,bin/xapian-compact.cc,common/Makefile.am,
	  common/safeerrno.h,net/,tests/btreetest.cc,tests/quartztest.cc,
	  testsuite/backendmanager.cc,testsuite/testsuite.cc: Sorted out
	  a cleaner workaround for Compaq C++'s <errno.h> oddity.

Mon Jan 16 17:18:56 GMT 2006  Olly Betts <olly@survex.com>

	* common/safewindows.h: Fix typo in file description.

Mon Jan 16 13:29:48 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Reverse order of errno includes
	  which seems to make Compaq's C++ compiler happier.

Sun Jan 15 23:52:01 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_database.cc,backends/flint/flint_table.cc,
	  backends/quartz/btree.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_log.cc,configure.ac,net/socketcommon.cc,
	  net/tcpclient.cc,testsuite/backendmanager.cc: Compaq C++ requires
	  sys/errno.h to get ENOENT and most other EXXX codes defined.

Sun Jan 15 23:41:15 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Initialise 2 variables to avoid compiler
	  warnings.

Sun Jan 15 23:38:11 GMT 2006  Olly Betts <olly@survex.com>

	* xapian-config.in: If libxapian.la's dependency_libs contains
	  another .la file, crudely transform to a pair of -L and -l
	  options.  Ideally we should recursively pull in dependency_libs
	  from that .la file, but that's too hard to do in sh.

Sun Jan 15 21:43:26 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser.lt:
	  Eliminate ParseAlloc's mallocProc parameter and ParseFree's freeProc
	  parameter - we always pass malloc and free, and get warnings from
	  some compilers because we're passing a C-linkage function for a
	  C++-linkage function pointer.
	* testsuite/testsuite.cc,testsuite/testsuite.h: Fix functions
	  registered as signal handlers and pass to atexit to have C linkage.

Sun Jan 15 14:49:45 GMT 2006  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_log.cc: #include <string.h> for strerror.

Sun Jan 15 04:36:49 GMT 2006  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc:
	  Add Stopper::get_description() and SimpleStopper::get_description().

Sat Jan 14 21:43:32 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix backwards logic in snprintf configure test.
	  Also define SNPRINTF_ISO to be an snprintf with ISO C90 semantics
	  for the return value (if one exists), with SNPRINTF being defined
	  to any snprintf which at least performs truncation (which in many
	  cases is sufficient).

Sat Jan 14 04:47:33 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lt: Fix aCC warnings.

Sat Jan 14 04:47:00 GMT 2006  Olly Betts <olly@survex.com>

	* common/utils.h: Fix aCC warning.

Fri Jan 13 18:25:04 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Turn on more warnings for aCC; suppress existing
	  warning ("Entire translation unit was empty") since it's not
	  useful to us.

Fri Jan 13 03:22:26 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: The configure test for snprintf uses memcmp, so
	  we need to "#include <string.h>" for it to work reliably.

Wed Jan 11 03:14:30 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: If not cross-compiling, try to actually run a test
	  program built with the C++ compiler, not just link one.

Wed Jan 11 03:06:28 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Note the library version info which 0.9.3 will
	  probably need.

Tue Jan 10 22:41:36 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Fix to actually skip the check for valgrind if
	  VALGRIND is set to an empty value.

Tue Jan 10 01:08:10 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updates from the tinderbox.

Mon Jan 09 01:35:57 GMT 2006  Olly Betts <olly@survex.com>

	* backends/muscat36/io_system.cc,bin/xapian-compact.cc,
	  common/omdebug.cc: More sprintf tweaks.

Mon Jan 09 00:58:33 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Use snprintf if we have it.

Sun Jan 08 03:51:52 GMT 2006  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Fix conditional compilation of
	  flint backend to use XAPIAN_BUILD_BACKEND_FLINT instead
	  of XAPIAN_BUILD_BACKEND_QUARTZ.

Sun Jan 08 02:11:30 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Disable flint backend by default if building for
	  djgpp or msdos.

Sun Jan 08 02:09:48 GMT 2006  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: Cast NULL to (void*) to avoid
	  "missing sentinel" warning from GCC4.

Sat Jan 07 19:09:33 GMT 2006  Olly Betts <olly@survex.com>

	* HACKING,docs/tests.html: Merge the "running tests" section of
	  docs/tests.html into the similar section in HACKING, and make
	  docs/tests.html refer the reader to HACKING for more information.
	* HACKING,tests/apitest.cc: Remove OM_TEST_BACKEND.  You can now
	  use the "-b" switch to apitest to control which backend is used
	  so it's pretty much redundant.
	* HACKING,testsuite/testsuite.cc: Rename XAPIAN_SIG_DFL to
	  XAPIAN_TESTSUITE_SIG_DFL.
	* HACKING,testsuite/testsuite.cc: Add XAPIAN_TESTSUITE_PLAIN_OUTPUT
	  to disable use of ANSI escape sequences in test output.

Sat Jan 07 09:13:06 GMT 2006  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Write top-bit set characters using \xXX
	  notation to avoid warnings from Intel's C++ compiler.

Sat Jan 07 07:13:25 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: TYPE_SOCKLEN_T fails hard, so only run it if we've
	  successfully run other socket tests.

Sat Jan 07 05:29:39 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/accentnormalisingitor.h: #include <limits.h> for
	  CHAR_BIT.

Fri Jan 06 21:24:01 GMT 2006  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Fix printf type mismatch on 64 bit platforms.

Fri Jan 06 18:05:30 GMT 2006  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h: Replace pair<bool, string>
	  with a simple class BoolAndString - the pair results in a
	  4328 byte symbol on HP-UX which gets truncated (to 4000 bytes).

Fri Jan 06 12:55:37 GMT 2006  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Thu Jan 05 16:12:00 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Oops, remove hack left over from testing.

Thu Jan 05 16:09:06 GMT 2006  Olly Betts <olly@survex.com>

	* configure.ac: Add sanity check for MS Windows that "find" is
	  Unix-like find, not MSDOS-like.

Thu Jan 05 04:27:29 GMT 2006  Olly Betts <olly@survex.com>

	* INSTALL,PLATFORMS,README: Updated.

Mon Dec 19 12:53:38 GMT 2005  Olly Betts <olly@survex.com>

	* AUTHORS,PLATFORMS: Add success report for Fedora Core 4.

Mon Dec 19 12:52:55 GMT 2005  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Improve a couple of documentation
	  comments.

Sun Dec 11 01:33:58 GMT 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Fix handling of "+" terms in a query
	  when the default query operator is AND.
	* tests/queryparsertest.cc: Add regression test.

Fri Dec 09 05:54:33 GMT 2005  Olly Betts <olly@survex.com>

	* languages/api.cc: Check for malloc and calloc failing to allocate
	  memory and throw an exception.  Richard has fix this upstream in
	  snowball, so this is a temporary fix until we import a new version
	  of snowball.

Fri Dec 09 02:15:38 GMT 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Added assertions that the internal ptr isn't NULL
	  to ESet::end() and ESet::get_description().

Fri Dec 09 02:14:13 GMT 2005  Olly Betts <olly@survex.com>

	* HACKING: Note platforms valgrind now has solid support for; Improve
	  phrasing in a few places.

Thu Dec 08 23:13:09 GMT 2005  Olly Betts <olly@survex.com>

	* INSTALL: Update URL for stlport to sourceforge site, which seems to
	  be where the action is now.

Thu Dec 08 04:13:11 GMT 2005  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Fix testsuite harness to work with valgrind
	  on 64 bit platforms (it's not documented, but VALGRIND_COUNT_LEAKS
	  requires the count parameters to be 64 bit on such platforms - i.e.
	  long rather than int as we were using).

Tue Nov 01 13:22:50 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Sourceforge have a ppc64 linux box.  Xapian builds and
	  works out of the box, so add success report for this platform.

Thu Oct 27 09:32:24 BST 2005  Fabrice Colin

	* xapian.spec.in: Invoke %setup correctly.

Sat Oct 01 03:25:50 BST 2005  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Added "--multipass" option to merge postlists
	  in pairs or triples until all are merged.  Generally this is faster
	  than an N-way merge, but it does require more disk space for
	  temporary files so it's not the default.

Fri Sep 30 18:02:32 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Give pointer to replacements for the
	  deprecated Enquire sorting methods.

Wed Sep 28 02:16:03 BST 2005  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc: Use a vector<string> to store the list of
	  source databases, in preparation for merging multiple postlist
	  tables in more than one pass.

Mon Sep 26 22:22:24 BST 2005  Olly Betts <olly@survex.com>

	* .: svn:ignore docsource.mk.

Mon Sep 26 19:54:15 BST 2005  Olly Betts <olly@survex.com>

	* bin/: svn:ignore xapian-compact.

Mon Sep 26 19:50:13 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Remove trailing whitespace.

Wed Sep 21 01:31:23 BST 2005  Olly Betts <olly@survex.com>

	* api/Makefile.am: Fixed VPATH build which was broken by the addition
	  of version.cc.

Tue Sep 20 23:38:05 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: Don't pass NULL for second parameter
	  of execl().

Tue Sep 20 21:32:04 BST 2005  Olly Betts <olly@survex.com>

	* api/Makefile.am,api/version.cc,include/xapian/version_h.cc: Add 4
	  functions to report version information for the library version
	  being used (which may not be the same as that compiled against
	  if shared libraries are in use):  xapian_version_string(),
	  xapian_major_version(), xapian_minor_version(), xapian_revision().

Sat Sep 17 14:07:32 BST 2005  Richard Boulton <richard@tartarus.org>

	* backends/flint/flint_lock.cc: Pass two NULLs to execl() to avoid
	  getting a warning ("not enough variable arguments to fit a
	  sentinel", observed on Ubuntu breezy powerpc).  Reported by
	  Sidnei da Silva.

Wed Sep 14 23:54:14 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Now generate snapshots and releases with automake 1.9.6
	  (was 1.9.5) and libtool 1.5.20 (was 1.5.18).

Tue Aug 30 14:01:55 BST 2005  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h: Forward declare class
	  InMemoryDatabase to fix compilation with GCC 4.0.1.

Fri Aug 19 12:13:39 BST 2005  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc,backends/flint/flint_postlist.cc:
	  Correct uses of termcount which should be doccount.

Fri Aug 19 11:48:51 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fix prototype for ESet::operator[] to
	  take parameter of type termcount instead of doccount.

Wed Aug 17 11:50:54 BST 2005  Olly Betts <olly@survex.com>

	* common/safewindows.h: Fix compilation for cygwin.

Tue Aug 16 16:01:36 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_types.h,backends/quartz/quartz_types.h:  Using
	  a double to hold the total document length would be a bad idea as
	  we need to store it exactly so kill FIXME comments that suggest
	  perhaps we should.

Fri Jul 15 11:11:35 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac,NEWS,PLATFORMS: Updated for 0.9.2.

Fri Jul 15 02:31:11 BST 2005  Olly Betts <olly@survex.com>

	* preautoreconf: Change directory to the directory that the
	  preautoreconf script is in before doing anything else.

Fri Jul 15 01:02:29 BST 2005  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/doxygen_full_conf.in,configure.ac:
	  Eliminate TOP_SRCDIR and TOP_BUILDDIR - it's better to just use
	  top_srcdir and top_builddir directly.

Fri Jul 15 00:48:39 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Fix superfluous shell quoting.

Fri Jul 15 00:28:40 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac,docs/Makefile.am,preautoreconf,Makefile.am: Generate
	  the list of source files to feed to doxygen by inspecting all the
	  Makefile.am files prior to running autoreconf rather than by using
	  "find" when the user runs ./configure.  This speeds up configure,
	  avoids generating docs for random .cc and .h files which aren't
	  part of xapian-core, and avoids problems with picking up FIND.EXE
	  on MS Windows.

Thu Jul 14 12:49:36 BST 2005  Olly Betts <olly@survex.com>

	* common/,matcher/multimatch.cc,matcher/networkmatch.cc,
	  matcher/networkmatch.h,net/socketclient.cc,net/socketserver.cc,
	  tests/api_db.cc: Implement sorting on a value with the remote
	  backend.

Wed Jul 13 01:25:17 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/database.h,include/xapian/dbfactory.h,
	  net/socketclient.cc: Regularise horizontal whitespace.

Tue Jul 05 03:03:57 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Oops, failed to check in header
	  changes for last change.

Mon Jul 04 15:50:55 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,queryparser/queryparser.cc:
	  Add flag FLAG_BOOLEAN_ANY_CASE which tells the QueryParser that
	  boolean operators such as "AND", "OR", and "NEAR" should be
	  recognised even if they aren't fully capitalised (so "and",
	  "And", "aNd", etc will work too).  Add flag FLAG_WILDCARD which
	  tells the QueryParser to allow right truncation e.g. "xap*".
	* tests/queryparsertest.cc: Add tests for FLAG_WILDCARD.

Sun Jul 03 15:24:12 BST 2005  Olly Betts <olly@survex.com>

	* backends/database.cc: Fixed to auto-detect database type when
	  opening an existing Flint database as a WritableDatabase.

Sat Jul 02 18:49:22 BST 2005  Olly Betts <olly@survex.com>

	* tests/queryparsertest.cc: Add test case: "-site:xapian.org mail".

Sat Jul 02 18:49:03 BST 2005  Olly Betts <olly@survex.com>

	* common/Makefile.am: Ship safewindows.h header.

Sat Jul 02 18:04:18 BST 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc,bin/xapian-compact.cc,
	  backends/muscat36/io_system.cc,backends/quartz/btree.cc,
	  backends/quartz/quartz_log.cc,backends/quartz/quartz_database.cc,
	  backends/flint/,common/,net/,tests/,testsuite/backendmanager.cc,
	  testsuite/testsuite.cc: Assorted tweaks towards allowing
	  compilation with MSVC.

Sat Jul 02 05:08:54 BST 2005  Olly Betts <olly@survex.com>

	* backends/quartz/: Always define WIN32_LEAN_AND_MEAN before
	  including windows.h to reduce the amount of stuff it includes
	  and speed up builds; Eliminate Btree::max_key_len as MSVC
	  doesn't like the way we define it and it actually seems
	  simpler to just use BTREE_MAX_KEY_LEN everywhere anyway.
	* backends/quartz/btree.cc: Added a few more assertions.

Sat Jul 02 04:11:01 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony,tests/queryparsertest.cc: Fixed to
	  handle "-site:microsoft.com" where site is a boolean prefix.
	* queryparser/Makefile.am: Add dependency to generate
	  queryparser_token.h.

Thu Jun 30 02:14:16 BST 2005  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Update URL for valgrind FAQ in comment.

Thu Jun 30 00:11:52 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: More explicit explanation of the
	  "descending docid with boolean weighting" trick for fast
	  date ordered searching.

Wed Jun 29 13:16:13 BST 2005  Olly Betts <olly@survex.com>

	* NEWS: Fix typo: "configurec" -> "configure".

Mon Jun 27 04:21:34 BST 2005  Olly Betts <olly@survex.com>

	* xapian.spec.in: Package xapian-compact.

Mon Jun 27 03:41:23 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc,tests/api_wrdb.cc: Fixed
	  mispacking of length for Flint positionlists with more than 127
	  entries, and added regression test longpositionlist1.

Sun Jun 26 02:04:33 BST 2005  Olly Betts <olly@survex.com>

	* bin/xapian-compact.cc,backends/flint/flint_cursor.h: Let
	  PostlistCursor take ownership of the FlintTable it's iterating over
	  which makes clean-up tidier.
	* bin/xapian-compact.cc: We were accidentally skipping the first
	  entry in various tables (which essentially meant the first
	  document from each database would go missing when merging
	  databases).

Sat Jun 25 23:45:42 BST 2005  Olly Betts <olly@survex.com>

	* api/omdatabase.cc: Tweak get_lastdocid() code to be a little
	  clearer.

Wed Jun 22 20:50:43 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in,include/xapian/version_h.cc,
	  include/Makefile.am: Eliminate use of "ln -s" when generating
	  include/xapian/version.h since it seems to cause problems on Solaris
	  in some setups and isn't really necessary.  Also add dependency
	  mechanism so version.h gets regenerated when the template is
	  changed.

Wed Jun 22 18:47:05 BST 2005  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Citeseer has moved, so update link.

Mon Jun 20 13:33:42 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: -Wshadow causes false positives with GCC 3.0.4, so
	  only enable it for 3.1 and up.

Mon Jun 20 03:09:07 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: "utilpy" -> "utility"!

Fri Jun 17 19:54:44 BST 2005  Olly Betts <olly@survex.com>

	* COPYING: Update FSF address.

Thu Jun 16 18:43:33 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: Fix warnings from older GCC versions.
	* backends/flint/flint_lock.cc: '#include <signal.h>' so that SIGHUP
	  gets defined reliably.

Thu Jun 16 17:54:39 BST 2005  Olly Betts <olly@survex.com>

	* bin/Makefile.am,bin/xapian-compact.cc: Added new "xapian-compact"
	  program which can compact and merge flint databases in a similar
	  way to how quartzcompact does for quartz databases.

Thu Jun 16 01:22:45 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Check for spaces in build directory, source directory,
	  or install prefix and die with a helpful message.

Wed Jun 15 01:00:11 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc: It seems we need to explicitly kill
	  the child process.  Otherwise when we have two databases locked
	  just closing the connection doesn't cause the child to die.  I
	  don't understand why it's needed, but this fix is at least clean.

Mon Jun 13 00:13:33 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_alltermslist.cc,
	  backends/flint/flint_alltermslist.h,
	  backends/flint/flint_database.cc: Rewrite of FlintAllTermsList
	  with several fewer member variables.  Also fixes a bug (the old
	  version wasn't ignoring the metainfo entry so tests were failing).

Sun Jun 12 13:08:16 BST 2005  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_alltermslist.cc: Disable assertion which is
	  incorrect in a corner case.
	* tests/api_db.cc: Add test_specialterms2 as a regression test.

Sun Jun 12 02:03:52 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Encoding and decoding of
	  position list size, and first and last entries didn't match.
	  Reworked to match using a slightly smaller encoding.
	* backends/flint/flint_metafile.cc: Bumped format version.

Sun Jun 12 02:02:35 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_table.cc: We were failing to append "DB" to the
	  path when opening a table for reading - fixed.

Sun Jun 12 02:00:30 BST 2005  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: When a flint database was requested, we
	  were incorrectly creating a quartz database instead - fixed.

Sat Jun 11 17:53:12 BST 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Fix mis-repacking of keys in positionlist
	  table when merging several databases.

Thu Jun 09 01:06:35 BST 2005  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac: Pass automake options to AM_INIT_AUTOMAKE
	  rather than specifying them in Makefile.am.  This way, the version
	  requirements for autoconf and automake are stated close together.

Mon Jun 06 19:49:36 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Minor updates to release checklist.

Mon Jun 06 17:44:19 BST 2005  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Updated for 0.9.1.

Mon Jun 06 17:28:34 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Describe CC_FOR_BUILD in configure --help output.

Mon Jun 06 16:00:26 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated for 0.9.1.

Fri Jun 03 03:49:33 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc,backends/flint/flint_lock.h: Fixed
	  compilation failure on mingw.

Fri Jun 03 01:58:08 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Fri Jun 03 00:46:00 BST 2005  Olly Betts <olly@survex.com>

	* HACKING,NEWS: Snapshot and release tarballs are now bootstrapped
	  using libtool 1.5.18 and automake 1.9.5 (though neither is currently
	  an enforced requirement for bootstrapping).

Thu Jun 02 17:36:36 BST 2005  Olly Betts <olly@survex.com>

	* NEWS: First draft of release notes for 0.9.1.

Thu Jun 02 02:05:47 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_record.cc: Fix get_doccount() to not return
	  one too low now that the special entry is no longer in the record
	  table!

Wed Jun 01 12:41:59 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Placate Sun's C++ compiler.

Tue May 31 19:31:24 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.h,
	  backends/flint/flint_positionlist.cc,
	  backends/flint/flint_metafile.cc: positionlist entries are now
	  stored using interpolative coding (which is significantly more
	  compact).

Mon May 30 01:48:17 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.cc,backends/flint/flint_lock.h:  Added
	  locking code for MS Windows (untested).

Sun May 29 01:00:41 BST 2005  Olly Betts <olly@survex.com>

	* HACKING,NEWS,testsuite/testsuite.h: Fixed spelling mistakes.

Sat May 28 22:51:15 BST 2005  Olly Betts <olly@survex.com>

	* tests/: svn:ignore .flint/ subdirectory.
	* tests/Makefile.am: Remove .flint subdirectory on 'make clean'.

Sat May 28 22:45:24 BST 2005  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Remove warning that quartz is still in
	  development.

Sat May 28 16:24:43 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_lock.h: Removed unused FlintLock method
	  'operator int()' which was confusing Sun's C++ compiler.

Sat May 28 16:18:11 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Removed superfluous "Query::" which was
	  causing the build to fail with aCC.

Sat May 28 14:31:33 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_metafile.cc: Added missing '#include <errno.h>'.

Sat May 28 14:15:36 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_positionlist.cc: Simplify code a bit.

Sat May 28 02:01:12 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/: Move the special item holding the total document
	  length and doc id high water mark from the record table to the
	  postlist table.  This means that when appending documents, the
	  insertion point will now always be at the end of the record table.
	  We need to jump around the postlist table to merge anyway.

Sat May 28 00:42:25 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_metafile.cc: Change metafile magic to be
	  different from quartz, and make the metafile version a datestamp
	  which we'll change each time the format changes; check the return
	  value of close on the metafile.

Fri May 27 22:09:45 BST 2005  Olly Betts <olly@survex.com>

	* backends/Makefile.am,backends/flint/: Implement new fork+fcntl+exec
	  based locking;  Fix new GCC warnings.

Fri May 27 22:06:14 BST 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc: Missed a warning fix.

Fri May 27 22:04:18 BST 2005  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/quartz_postlist.cc,common/omtime.h,matcher/,
	  net/socketserver.cc,net/socketcommon.cc,net/socketclient.cc,
	  testsuite/btreecheck.h,testsuite/testsuite.cc: Fix GCC warnings
	  from new flags.

Fri May 27 20:06:52 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Add missing '#include <config.h>'.

Fri May 27 12:20:03 BST 2005  Olly Betts <olly@survex.com>

	* common/omdebug.h: Oops, change to static_cast reveals that we were
	  discarding const (harmlessly).

Fri May 27 12:16:03 BST 2005  Olly Betts <olly@survex.com>

	* common/omdebug.h: Replace C style cast with static_cast<>.

Fri May 27 12:07:48 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: -Wendif should be -Wendif-labels.

Wed May 25 20:41:39 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Pass more -W flags to g++ (including -Wundef which
	  caught the getopt problem fixed by the previous commit).

Wed May 25 20:32:35 BST 2005  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Added accidentally pruned #define so that getopt
	  code isn't compiled in when the system uses glibc.

Wed May 25 18:36:41 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Add -Wredundant-decls to the default CXXFLAGS for GCC.

Wed May 25 03:33:34 BST 2005  Olly Betts <olly@survex.com>

	* tests/apitest.cc,tests/api_db.cc,tests/api_db.h,
	  testsuite/backendmanager.cc,testsuite/backendmanager.h:
	  apitest now runs tests on flint as well.

Wed May 25 03:20:12 BST 2005  Olly Betts <olly@survex.com>

	* backends/database.cc: When automatically determining which backend
	  to use when creating a WritableDatabase, don't try to open it as
	  both Flint *AND* Quartz (an "else" was missing).

Wed May 25 03:19:21 BST 2005  Olly Betts <olly@survex.com>

	* backends/flint/flint_btreebase.cc: Fix typo in code which prevented
	  a flint database from being opened.

Wed May 25 01:10:51 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/version.h.in,include/xapian/dbfactory.h,
	  include/xapian/queryparser.h,backends/quartz/,backends/flint/:
	  Flint backend hooked in fully, and everything now builds once
	  more.

Tue May 24 02:30:39 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Add "email Fabrice" to the release checklist so that RPM
	  spec files don't lag behind.  The new svn-tag-release script
	  actually builds the release tarballs rather than just copying
	  snapshots like cvs-tag-release did, so document that.

Tue May 24 01:21:18 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Added missing documentation comments.

Mon May 23 02:36:06 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac,backends/database.cc,backends/Makefile.am,
	  backends/flint/: Cloned the quartz backend to form the basis of the
	  new flint backend.  Currently it's the same except that the quartz
	  log feature has been removed.  When creating a database without a
	  specified backend, quartz is still used unless the environmental
	  variable XAPIAN_PREFER_FLINT is set to a non-empty value.

Sat May 21 20:58:48 BST 2005  Olly Betts <olly@survex.com>

	* xapian.spec.in: Remove bogus %setup line left over from when we
	  packaged xapian-core and xapian-examples together from separate
	  tarballs.

Thu May 19 01:12:27 BST 2005  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Fixed corner case where you couldn't check a
	  single Btree table which was just the DB and baseA/baseB files
	  in a directory (Xapian doesn't produce anything like this, but
	  btreetest does while unit testing the Btree code).

Wed May 18 16:59:23 BST 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc,include/xapian/query.h: Put Query::get_terms_end()
	  inline in header.

Wed May 18 16:41:56 BST 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc,tests/api_nodb.cc: Fix SEGV on get_terms_begin()
	  on an empty Query object.

Mon May 16 22:58:09 BST 2005  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fixed compilation with --enable-debug.

Sat May 14 01:02:33 BST 2005  Olly Betts <olly@survex.com>

	* docs/doxygen_full_conf.in: Fix lingering DOXYGEN_HAVE_DOT reference.

Sat May 14 00:36:14 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Update information about the SVN tag name to use for
	  debian files.

Fri May 13 23:21:54 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Updated release instructions to refer to SVN.

Fri May 13 20:58:15 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated for 0.9.0.

Fri May 13 02:47:42 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fix for Sun's C++ compiler.

Fri May 13 00:09:07 BST 2005  Olly Betts <olly@survex.com>

	* NEWS,configure.ac: Updated for 0.9.0.

Thu May 12 18:54:11 BST 2005  Olly Betts <olly@survex.com>

	* docs/doxygen_api_conf.in,docs/Makefile.am: Fix to generate docs
	  for all backend factory functions like 0.8.5 did.

Thu May 12 16:59:22 BST 2005  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/Makefile.am,include/xapian/database.h,
	  include/xapian/dbfactory.h,include/xapian.h,include/Makefile.am:
	  Split off database factory methods into xapian/dbfactory.h - this
	  allows us to fix recent breakage in VPATH builds (caused by the
	  need to include the generated file xapian/version.h from
	  xapian/database.h) without modifying almost every Makefile.am.

Wed May 11 16:52:41 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Move prefixed, bracketed
	  subexpression to be an alternative for stop_term which allows
	  "term prefix:(term2 term3)" to parse correctly. Also move
	  non-prefixed, bracketed subexpression to be an alternative
	  for stop_term - this doesn't change how things parse, but
	  makes the grammar simpler.
	* tests/queryparsertest.cc: Added regression test for the above.
	* tests/Makefile.am,tests/queryparsertest.cc: Reworked queryparsertest
	  to use the standard testsuite harness.

Wed May 11 16:09:32 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Fix OP_ELITE_SET at 10 (the value it had
	  in 0.8.5).

Tue May 10 22:56:45 BST 2005  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Removed check for DOXYGEN_HAVE_DOT which I removed
	  recently.

Tue May 10 01:09:01 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Removed state parameter from
	  TermList::add_term() since it is no longer used.

Mon May 09 20:56:40 BST 2005  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Explicitly set the pool_size for latex, because we
	  seem to overflow the default setting on many systems.
	* docs/Makefile.am: Use $(MAKE) instead of make.

Sun May 08 23:22:37 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Corrected $CC -> $CXX to fix bogus message "Checking
	  for  option to enable ANSI C++ mode".
	* configure.ac: If any tools needed for documentation are missing
	  and we're in maintainer mode, die with a suitable error in
	  configure rather than with strange errors when building the
	  documentation.

Sun May 08 01:43:55 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.lemony,
	  queryparser/queryparser_internal.h,queryparser/queryparser.cc:
	  Remove QueryParser::termlist_begin() and termlist_end() since
	  you can just use Query::terms_begin() and terms_end() on the
	  Query object returned by QueryParser::parse_query().

Thu May 05 01:00:26 BST 2005  Olly Betts <olly@survex.com>

	* common/utils.cc: On WIN32, don't define NOMINMAX if it is already
	  defined.

Wed May 04 00:52:04 BST 2005  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc: Avoid needing document length if we're simply
	  going to multiply it by zero!

Tue May 03 14:07:20 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: CVS -> SVN;  Note that tabs should be 8 spaces.

Thu Apr 28 21:13:17 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Don't declare the backend factory
	  functions if the corresponding backend has been disabled.  This
	  means that trying to use a disabled backend will be caught at
	  compile time rather than link time.

Thu Apr 28 21:12:43 BST 2005  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Corrected two errors.

Wed Apr 27 23:04:53 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in: Define
	  XAPIAN_HAS_xxx_BACKEND for each backend which is enabled.  The
	  bindings need this, and user code might find it useful too.

Wed Apr 27 03:31:50 BST 2005  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,api/ompostlistiterator.cc,
	  api/omtermlistiterator.cc,include/xapian/,
	  queryparser/queryparser.cc: Where end iterator is just
	  FooIterator(NULL) put it inline in the header for efficiency.
	  If we ever need to change an implementation, we can easily move
	  methods back into the library and bump the library version suitably.

Wed Apr 27 02:40:43 BST 2005  Olly Betts <olly@survex.com>

	* examples/quest.cc,include/xapian/queryparser.h,
	  queryparser/queryparser.cc,tests/queryparsertest.cc: Rename
	  QueryParser::set_stemming_options() to set_stemming_strategy()
	  - it's a better name and avoids confusion with the old deprecated
	  method called set_stemming_options().
	* examples/quest.cc: Added stopword handling.

Wed Apr 27 02:39:33 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Fixed documentation comment.

Sun Apr 24 03:02:47 BST 2005  Olly Betts <olly@survex.com>

	* api/omstem.cc: Simplified Xapian::Stem::Internal.

Sun Apr 24 02:21:22 BST 2005  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Extended stemlang1 to check that trying to create
	  a stemmer for a non-existent language throws InvalidArgumentError.

Fri Apr 22 01:20:57 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Clearer documentation comments.

Thu Apr 21 15:03:42 BST 2005  Olly Betts <olly@survex.com>

	* docs/overview.html,include/xapian/query.h: Removed lingering
	  references to OP_WEIGHT_CUTOFF.

Thu Apr 21 01:46:51 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for Ubuntu 5.04 on x86_64.

Mon Apr 18 02:54:10 BST 2005  Olly Betts <olly@survex.com>

	* docs/stemming.html: Stemming appears to be applicable to Japanese
	  so don't say it isn't!

Sat Apr 16 01:08:22 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Fri Apr 15 23:18:58 BST 2005  Olly Betts <olly@survex.com>

	* languages/: Remove lingering .c versions of snowball generated
	  sources.

Fri Apr 15 02:05:27 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser_internal.h,
	  queryparser/queryparser.cc: Implemented QueryParser::set_database()
	  method.
	* queryparser/queryparser.lemony: Allow searches for C#, etc.  If a
	  database has been set, for this and + and - suffixes, check if the
	  term actually exists, and if not, ignore the suffix if the
	  unsuffixed term exists.
	* tests/queryparsertest.cc: Added tests for # suffix.

Thu Apr 14 23:39:57 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/stem.h: Rewritten with better documentation comments.
	* include/xapian/stem.h: Added operator() as preferred alternative
	  to stem_word().
	* api/omstem.cc,include/xapian/stem.h: Simplified by restructuring
	  to eliminate a few internal methods.

Thu Apr 14 23:35:47 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.cc: Make get_description() debug tracing
	  message category INTRO not API.

Thu Apr 14 19:57:06 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h,queryparser/queryparser.cc: Added
	  QueryParser::get_description() method (not very descriptive yet!)

Thu Apr 14 03:30:09 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Fixed to only include the xapian
	  headers we actually depend on.
	* include/xapian/queryparser.h: Added \file and \brief documentation
	  comments.

Thu Apr 14 02:50:36 BST 2005  Olly Betts <olly@survex.com>

	* examples/quest.cc,include/xapian.h,tests/queryparsertest.cc:
	  Change xapian.h to automatically include xapian/queryparser.h
	  and fix direct includes of xapian/queryparser.h in tests and
	  examples.

Thu Apr 14 01:48:39 BST 2005  Olly Betts <olly@survex.com>

	* include/xapian/queryparser.h: Added Xapian::SimpleStopper which
	  should be sufficient for the majority of uses.
	* include/xapian/queryparser.h,queryparser/queryparser_internal.h,
	  queryparser/queryparser.cc: Changed QueryParser::set_stopper() to
	  take a const pointer.

Thu Apr 07 15:57:15 BST 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,common/multimatch.h,
	  matcher/multimatch.cc,net/socketserver.cc: Tidy up after sort_bands.

Thu Apr 07 15:15:27 BST 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/,include/xapian/enquire.h,
	  matcher/networkmatch.cc,matcher/multimatch.cc,matcher/networkmatch.h,
	  net/socketserver.cc,net/socketclient.cc,tests/api_db.cc:
	  Enhanced Enquire sorting API and added ability to reverse sort on
	  a value.
	* api/omenquire.cc: Enquire::get_description() now includes output of
	  Enquire::Internal::get_description().

Thu Apr 07 13:55:56 BST 2005  Olly Betts <olly@survex.com>

	* HACKING: Fixed a typo.

Thu Apr 07 13:37:02 BST 2005  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  bin/quartzcompact.cc: The "fuller compaction" code needs changes
	  to btree.h which I'd failed to check in.  Also document --fuller
	  in 'quartzcompact --help'.

Thu Apr 07 03:35:36 BST 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Added "fuller compaction" mode, which ignores
	  the usual "at least 4 items per block" rule.

Thu Apr 07 03:28:32 BST 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success result for GCC 3.2.3 on FreeBSD 4.8; fixed
	  a typo.

Wed Apr 06 23:04:15 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparser.lemony: Added FIXME comment.

Wed Apr 06 22:52:53 BST 2005  Olly Betts <olly@survex.com>

	* ./: Removed ylwrap from svn:ignore.

Tue Apr 05 22:34:16 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/queryparsertest.cc,queryparser/Makefile.am,
	  tests/Makefile.am: Moved queryparsertest into tests/.

Tue Apr 05 22:15:05 BST 2005  Olly Betts <olly@survex.com>

	* examples/: Updated svn:ignore property.

Tue Apr 05 21:34:13 BST 2005  Olly Betts <olly@survex.com>

	* queryparser/Makefile.am,configure.ac,extra/xapian/queryparser.h,
	  extra/,include/Makefile.am,Makefile.am: Move extra/ to queryparser/;
	  Merge extra/xapian/ into include/xapian/.

Tue Apr 05 16:37:32 BST 2005  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Fix m4 quoting (argh!)

Tue Apr 05 16:28:06 BST 2005  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Fix XO_LIB_XAPIAN to trim off any _svn6789 from
	  XAPIAN_VERSION.

Tue Apr 05 16:17:31 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Fix m4 quoting.

Tue Apr 05 15:16:38 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: #define VERSION in version.h shouldn't include any
	  _svn6789 suffix.

Tue Apr 05 13:28:23 BST 2005  Olly Betts <olly@survex.com>

	* configure.ac: Snapshot generator now appends _svn6789 or similar to
	  the version string, so take that into account when finding REVISION.

Tue Apr 05 12:55:52 BST 2005  Olly Betts <olly@survex.com>

	* ChangeLog.examples,Makefile.am,examples/ChangeLog: Move
	  xapian-examples ChangeLog to ChangeLog.examples in the top-level
	  and include in the tarball.

Tue Apr 05 02:18:08 BST 2005  Olly Betts <olly@survex.com>

	* examples/dir_contents,examples/README: Converted xapian-examples
	  README into a dir_contents file.

Tue Apr 05 02:12:31 BST 2005  Olly Betts <olly@survex.com>

	* docs/overview.html,docs/install.html,configure.ac,Makefile.am,
	  xapian.spec.in,examples/Makefile.am: Moved xapian-examples module
	  to examples subdirectory of xapian-core.

Tue Apr 05 00:37:05 BST 2005  Olly Betts <olly@survex.com>

	* m4/.cvsignore,debian/.cvsignore,matcher/.cvsignore,docs/.cvsignore,
	  tests/.cvsignore,bin/.cvsignore,.cvsignore,autoconf/.cvsignore,
	  extra/.cvsignore,include/xapian/.cvsignore,include/.cvsignore,
	  net/.cvsignore,common/.cvsignore,testsuite/.cvsignore,
	  getopt/.cvsignore,languages/.cvsignore,api/.cvsignore,
	  backends/inmemory/.cvsignore,backends/muscat36/.cvsignore,
	  backends/net/.cvsignore,backends/quartz/.cvsignore,
	  backends/multi/.cvsignore,backends/.cvsignore: Remove .cvsignore
	  files, as they're not used by SVN.

Thu Mar 10 01:48:20 GMT 2005  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc,testsuite/index_utils.cc,
	  testsuite/index_utils.h: Rewrite of index_utils code, removing
	  unused and unusual features.
	* tests/testdata/: Cleaned up data for apitest now that paragraphs
	  don't have the odd minimum number of lines!
	* tests/testdata/apitest_space.txt: New index_utils code has C-like
	  \ escapes for control characters rather than ^ escapes.

Wed Mar 09 22:04:08 GMT 2005  Olly Betts <olly@survex.com>

	* common/utils.h: Added C_isxdigit and C_isnotxdigit.

Wed Mar 09 15:22:35 GMT 2005  Olly Betts <olly@survex.com>

	* testsuite/index_utils.cc: Fixed ^x to actually decode hex values
	  correctly.

Tue Mar 08 16:57:25 GMT 2005  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Minor code tidy.

Tue Mar 08 15:48:38 GMT 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc,docs/matcherdesign.html,include/xapian/enquire.h,
	  matcher/multimatch.cc,tests/api_db.cc: Removed sort_bands support.

Tue Mar 08 04:13:03 GMT 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Fixed to add items for all tables in key order
	  which produces results around 40% more compact (previously in the
	  merge case, this was only happening for the postlist table).

Tue Mar 08 03:30:06 GMT 2005  Olly Betts <olly@survex.com>

	* testsuite/btreecheck.cc: Make default check output fit on a single
	  line (at least for many databases).

Tue Mar 08 02:34:41 GMT 2005  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fix warning from newer versions of GCC.

Sat Mar 05 00:25:07 GMT 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,include/xapian/enquire.h,
	  matcher/multimatch.cc,tests/api_db.cc: Fixed Xapian::RSet to have
	  the same "it's a handle" copy semantics as most of the other
	  classes.

Sat Mar 05 00:23:47 GMT 2005  Olly Betts <olly@survex.com>

	* testsuite/testsuite.h: Fixed TEST_EQUAL_DOUBLE to use DBL_EPSILON
	  correctly.

Fri Mar 04 21:06:38 GMT 2005  Olly Betts <olly@survex.com>

	* tests/testdata/etext.txt: Stripped carriage returns.

Fri Mar 04 21:04:25 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Assorted updates.

Thu Mar 03 01:17:07 GMT 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Fixed to allow compacting a single database.
	  Fixed handling of very last term when merging postlists.

Wed Mar 02 03:18:30 GMT 2005  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_values.cc: Values are stored in sorted order
	  so we can stop unpacking the list once we get to one after the one
	  we're looking for.

Wed Mar 02 02:59:23 GMT 2005  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Now checks the structure of all the tables, not
	  just the postlist table, and cross-checks doclen values between
	  termlist and postlist tables.  Recognises "--help" option.  Should
	  now continue after an error (typically it would crash before), and
	  counts the number of errors found.  Now exits with non-zero status
	  if any errors were found.

Tue Mar 01 18:48:25 GMT 2005  Olly Betts <olly@survex.com>

	* xapian.spec.in: '/usr/share' -> '%{_datadir}'.

Tue Mar 01 16:21:07 GMT 2005  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Fixed warning from Sun's C++ compiler.

Tue Mar 01 02:02:15 GMT 2005  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Extended to allow merging several quartz
	  databases to produce a single compact quartz database.  This
	  allows for faster building - simple index in chunks, then merge
	  the chunks.

Tue Mar 01 00:08:12 GMT 2005  Olly Betts <olly@survex.com>

	* xapian.spec.in: Put the .so in the -devel package (it's only useful
	  for linking to - the .so.* files are all that's needed at runtime).

Tue Mar 01 00:05:25 GMT 2005  Olly Betts <olly@survex.com>

	* Makefile.am,xapian-config.in,xapian.spec.in,extra/.cvsignore,
	  extra/Makefile.am: Eliminated the extra library for the queryparser
	  - it's tiny compared to the main library and having it around just
	  complicates things.

Mon Feb 28 23:52:19 GMT 2005  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: More set_length() changes.

Mon Feb 28 20:31:13 GMT 2005  Olly Betts <olly@survex.com>

	* net/socketclient.cc,net/socketserver.cc,api/omenquire.cc,
	  api/omquery.cc,api/omqueryinternal.cc,common/,
	  include/xapian/enquire.h,include/xapian/query.h,matcher/:
	  Remove Query::set_length() in favour of an optional length
	  parameter to Enquire::set_query().

Mon Feb 28 15:32:32 GMT 2005  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,common/Makefile.am,common/deleter_vector.h:
	  Removed deleter_vector as it's no longer used anywhere.

Mon Feb 28 15:27:42 GMT 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
	  matcher/localmatch.cc,tests/api_anydb.cc,tests/api_nodb.cc:
	  Eliminated Query::set_elite_set_size().

Mon Feb 28 15:15:45 GMT 2005  Olly Betts <olly@survex.com>

	* HACKING: Note how to disable use of VALGRIND on the make check
	  command line, or when using runtest directly.

Mon Feb 28 13:36:07 GMT 2005  Olly Betts <olly@survex.com>

	* common/omqueryinternal.h: Removed out-of-date commented out version
	  of Xapian::Query::Internal.

Mon Feb 28 13:07:42 GMT 2005  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_alltermslist.cc,tests/api_db.cc: Updated (C)
	  dates for changes earlier this year.

Mon Feb 28 13:04:41 GMT 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,include/xapian/query.h,
	  matcher/localmatch.cc,matcher/localmatch.h,tests/api_anydb.cc,
	  tests/api_nodb.cc,tests/api_posdb.cc: Eliminated Query::set_window
	  in favour of an optional parameter to the constructor, with the aim
	  of making Query objects immutable once constructed.

Mon Feb 28 12:32:26 GMT 2005  Olly Betts <olly@survex.com>

	* extra/queryparser.lemony: Updated 2 uses of Query::set_window().

Mon Feb 28 04:43:20 GMT 2005  Olly Betts <olly@survex.com>

	* api/omquery.cc,api/omqueryinternal.cc,common/socketcommon.h,
	  include/xapian/query.h,matcher/,tests/api_anydb.cc:
	  Removed OP_WEIGHT_CUTOFF, since it doesn't actually seem to
	  add useful functionality over using Enquire::set_cutoff().

Mon Feb 28 04:31:58 GMT 2005  Olly Betts <olly@survex.com>

	* matcher/weightcutoffpostlist.cc: Fix updating of docid in
	  WeightCutoffPostList - the current code works, but can end up doing
	  lots (potentially millions) of pointless loop iterations.

Mon Feb 28 02:57:29 GMT 2005  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Note that + and - work on phrases and
	  bracketed expressions.

Fri Feb 25 17:06:23 GMT 2005  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_alltermslist.cc: Fix skip_to on an allterms
	  TermIterator to set the current term when the skip_to-ed term is
	  in the database.
	* tests/api_db.cc: Add regression test for this (allterms5).

Wed Feb 23 19:07:30 GMT 2005  Olly Betts <olly@survex.com>

	* configure.ac: Suppress 2 Intel C++ warnings which we can't easily
	  code around, and enable -Werror automatically with
	  --enable-maintainer-mode.
	* configure.ac: Check that the C++ compiler can actually link a
	  program.  AC_LANG_CXX doesn't, and if it can't find a C++ compiler
	  it'll just return "g++" which just leads to a later configure
	  test failing in a confusing way.

Tue Feb 22 13:39:07 GMT 2005  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Improved documentation comments.
	* api/omenquire.cc,include/xapian/enquire.h: MSet::max_size() (which
	  only exists so that MSet is an STL compiler) now returns
	  MSet::size() and is inlined from the header.
	* include/xapian/enquire.h: Added ESet::max_size() (for STL
	  compatibility).

Tue Feb 22 00:18:33 GMT 2005  Olly Betts <olly@survex.com>

	* configure.ac: corrected "none known for yes" or "none known for no"
	  to "none known for g++-3.2" or similar.
	* configure.ac: autoconf identifies Intel's C++ compiler as GCC, so
	  probe for which it actually is.

Mon Feb 21 21:54:29 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Mon Feb 21 16:06:32 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for Intel C++ 8.1 on ia64 Linux
	  (and also GCC 3.2.3 on ia64 Linux).

Mon Feb 21 05:33:46 GMT 2005  Olly Betts <olly@survex.com>

	* backends/multi/: Don't delare methods in headers if they're virtual
	  or large.

Mon Feb 21 04:11:23 GMT 2005  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h: Don't delare methods in
	  headers if they're virtual or large.

Sun Feb 20 21:13:40 GMT 2005  Olly Betts <olly@survex.com>

	* common/multimatch.h: Removed unused "class SocketServer;".

Sun Feb 20 19:47:01 GMT 2005  Olly Betts <olly@survex.com>

	* net/socketserver.cc: Fixed typo in debug code.

Sat Feb 19 18:44:17 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Added minimal testcase which fails to compile with
	  Compaq's C++ compiler (cxx).

Sat Feb 19 04:23:51 GMT 2005  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Change
	  Btree::find_in_block to take a bool indicating if this is a leaf
	  block rather than an offset to subtract when it is.

Fri Feb 18 04:27:16 GMT 2005  Olly Betts <olly@survex.com>

	* HACKING: Added better description of how reference-counted API
	  classes are structured.
	* include/xapian/postingiterator.h,include/xapian/termiterator.h:
	  More (and better) documentation comments.

Fri Feb 18 03:05:40 GMT 2005  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Made full compaction a tiny bit more
	  compact.  Improved compaction by a few % in non-full case.
	  Tighter bound on amount of memory to reserve to read the tag
	  into.

Fri Feb 18 00:47:41 GMT 2005  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Removed duplicate "#include <xapian/enquire.h>".

Thu Feb 17 01:33:01 GMT 2005  Olly Betts <olly@survex.com>

	* extra/queryparser_internal.h: Further Sun C++ fixes.

Wed Feb 16 05:32:40 GMT 2005  Olly Betts <olly@survex.com>

	* extra/queryparser.lemony: Attempted fix for Sun's C++ compiler.

Tue Feb 15 02:10:35 GMT 2005  Olly Betts <olly@survex.com>

	* extra/queryparser.cc,extra/queryparser.lemony,
	  extra/queryparser_internal.h: Fixed namespace stuff to keep Sun's C++
	  compiler happy.

Mon Feb 14 21:21:08 GMT 2005  Olly Betts <olly@survex.com>

	* api/vectortermlist.h: Workaround a shortcoming in Sun's C++
	  compiler.

Mon Feb 14 21:16:05 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: Results from upgraded sourceforge x86_64 box.

Mon Feb 14 18:36:40 GMT 2005  Olly Betts <olly@survex.com>

	* extra/xapian/queryparser.h: Fixed compilation error.

Mon Feb 14 18:00:12 GMT 2005  Olly Betts <olly@survex.com>

	* extra/xapian/queryparser.h: Added backward compatibility wrapper for
	  old version of QueryParser::set_stemming_options().

Mon Feb 14 17:50:47 GMT 2005  Olly Betts <olly@survex.com>

	* extra/xapian/queryparser.h: Added dummy QueryParser::set_database()
	  (currently it ignores the parameter).

Mon Feb 14 15:34:13 GMT 2005  Olly Betts <olly@survex.com>

	* extra/lemon.c: C90, not C99!

Mon Feb 14 15:20:11 GMT 2005  Olly Betts <olly@survex.com>

	* extra/lemon.c: C, not C++.

Mon Feb 14 05:49:50 GMT 2005  Olly Betts <olly@survex.com>

	* extra/: Tweak lemon so we can avoid generating files in builddir
	  in a VPATH build.

Mon Feb 14 02:44:17 GMT 2005  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Update to reflect lempar.c -> queryparser.lt.

Mon Feb 14 02:25:53 GMT 2005  Olly Betts <olly@survex.com>

	* extra/lempar.c,extra/queryparser.lt: Rename lemon template to .lt
	  which is more sensible than calling it lempar.c and should work
	  with VPATH builds.

Mon Feb 14 02:12:51 GMT 2005  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Fixes for VPATH builds.

Mon Feb 14 01:43:59 GMT 2005  Olly Betts <olly@survex.com>

	* configure.ac: Need to AC_SUBST(CC_FOR_BUILD).

Mon Feb 14 00:19:45 GMT 2005  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Added dependency for building queryparser.h.

Sun Feb 13 23:30:02 GMT 2005  Olly Betts <olly@survex.com>

	* extra/queryparser.cc,extra/queryparser_internal.h,
	  extra/xapian/queryparser.h: Fixed to compile with GCC 3.3.

Sun Feb 13 23:09:15 GMT 2005  Olly Betts <olly@survex.com>

	* configure.ac: Enhanced valgrind test to (a) see if --tool=memcheck
	  is needed and (b) see if valgrind actually works (we don't want to
	  try to use an x86 valgrind on an x86_64 box).

Mon Jan 17 03:21:29 GMT 2005  Olly Betts <olly@survex.com>

	* api/vectortermlist.h,extra/,extra/xapian/queryparser.h: Rewritten
	  QueryParser class.  Uses Lemon instead of Bison to generate the
	  parser, which enables us to stop using static data, so this class
	  is at last reentrant.  It now uses a PIMPL style with reference
	  counted internals like most of the other Xapian classes.  And
	  direct access to member variables has gone, which unfortunately
	  forces an API change (bug #39).  The rewrite also supports more
	  features than the original did.
	* HACKING,configure.ac: No longer need Bison.
	* configure.ac: Need CC_FOR_BUILD to compile Lemon with.

Mon Jan 17 02:40:40 GMT 2005  Olly Betts <olly@survex.com>

	* PLATFORMS: IRIX + SGI C++ now compiles with just two warnings -
	  unused variables in Snowball generated code.

Sun Jan 16 03:19:56 GMT 2005  Olly Betts <olly@survex.com>

	* xapian.spec.in: Don't say "%makeinstall" in a comment since rpm
	  tries to expand it and explodes.

Sat Jan 15 03:30:33 GMT 2005  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Clearer rules for making Postscript doxygen docs.

Sat Jan 15 02:45:19 GMT 2005  Olly Betts <olly@survex.com>

	* HACKING: Note that '#include <limits>' isn't supported by GCC 2.95,
	  and other assorted minor tweaks.

Sat Jan 08 16:09:10 GMT 2005  Olly Betts <olly@survex.com>

	* api/maptermlist.h,backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_postlist.h,common/,matcher/localmatch.h,
	  matcher/mergepostlist.h,matcher/phrasepostlist.h,net/progclient.cc:
	  Fixes for SGI C++ warnings.

Fri Jan  7 13:02:49 GMT 2005  Richard Boulton <richard@tartarus.org>

	* common/positionlist.h: Correct out-of-date documentation comment.

Tue Jan 04 03:05:26 GMT 2005  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Removed unnecessary class declaration.

Tue Jan 04 03:02:02 GMT 2005  Olly Betts <olly@survex.com>

	* configure.ac: Automatically enable ANSI C++ mode for SGI's compiler
	  with '-LANG:std'; check that any automatically determined flags
	  for ANSI C++ mode actually allow us to compile a trivial program
	  - if they don't it probably means the compiler isn't the one we
	  were expecting, but one installed with the same name, so we now
	  drop the flags in this case.

Thu Dec 30 00:50:58 GMT 2004  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: QueryParser::parse_query() was failing to
	  clear termlist and unstem.

Fri Dec 24 00:07:28 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Thu Dec 23 21:13:46 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Fixed GCC compilation warning.

Thu Dec 23 17:22:15 GMT 2004  Olly Betts <olly@survex.com>

	* INSTALL,README: Updated.
	* README: Don't quote chunks of the GPL - just refer people to the
	  full text in COPYING.

Thu Dec 23 16:55:03 GMT 2004  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Updated for 0.8.5 release.

Tue Dec 21 13:26:55 GMT 2004  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Improved wording.

Tue Dec 21 13:03:06 GMT 2004  Olly Betts <olly@survex.com>

	* HACKING: Updated to reflect extra jobs which cvs-tag-release now
	  does.

Mon Dec 20 16:25:21 GMT 2004  Olly Betts <olly@survex.com>

	* bin/Makefile.am: quartzcompact now uses getopt, so need to link
	  it in our version to build on non-glibc platforms.

Mon Dec 20 16:23:28 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Added comment noting why we can't
	  truncate separating keys at higher levels.

Thu Dec 16 14:46:28 GMT 2004  Olly Betts <olly@survex.com>

	* HACKING: Fixed a typo, and improved wording.

Mon Dec 13 02:52:52 GMT 2004  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc: Updated (C) date.

Mon Dec 13 02:50:44 GMT 2004  Olly Betts <olly@survex.com>

	* languages/: Added missing '#include <config.h>' to .cc files
	  (probably harmless, but it should be included as the first thing any
	  source file does).

Mon Dec 13 02:21:28 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzdump.cc: Mark the long options as const.

Mon Dec 13 02:20:08 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Tables sizes will always be a whole number of
	  Kbytes, since the blocksize is, so report the size in K.  Also
	  report the change in size as well as the before and after sizes.

Mon Dec 13 02:11:59 GMT 2004  Olly Betts <olly@survex.com>

	* common/netutils.cc: Added missing '#include <config.h>' (probably
	  harmless, but it should be included as the first thing any source
	  file does).

Mon Dec 13 01:39:53 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Renamed
	  Btree::compress() to Btree::compact() for consistency with
	  "full_compaction" and "quartzcompact".  Also, "compress" is
	  confusing since use "compact" and we use that term in the zlib
	  patch.
	* backends/quartz/btree.cc: When full_compaction is enabled, don't
	  fill the last few bytes of a block if that would mean we needed
	  an extra item and the overhead for that item would use up more
	  of the next block than we save.  This reduces the table size
	  after full compaction by up to 0.2% in my tests!

Mon Dec 13 01:39:02 GMT 2004  Olly Betts <olly@survex.com>

	* backends/multi/multi_postlist.cc: Fixed to build with AssertParanoid
	  enabled.

Mon Dec 13 00:41:28 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Added missing '#include <config.h>' so that
	  largefile support is enabled and we report compression statistics
	  for tables > 2G.
	* bin/quartzcompact.cc: Added --no-full / -n option to disable full
	  compaction.  This may be useful if you want to update the database
	  after compacting it (need to test to see if this option is actually
	  useful).

Sun Dec 12 21:26:27 GMT 2004  Olly Betts <olly@survex.com>

	* xapian-config.in: Previous attempted fix to --libs output was wrong
	  - made it actually work.

Sun Dec 12 21:24:44 GMT 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in: %makeinstall puts the wrong paths in the .la files
	  so use "make DESTDIR=... install" instead.

Wed Dec 08 15:59:44 GMT 2004  Olly Betts <olly@survex.com>

	* NEWS: Bumped the 0.8.4 release date.

Wed Dec 08 15:32:46 GMT 2004  Olly Betts <olly@survex.com>

	* xapian-config.in: Make sure that --libs output doesn't include
	  libxapian.la (from libxapianqueryparser.la's dependencies).

Tue Dec 07 18:18:26 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_log.cc: Fixed to compile on mingw.

Tue Dec 07 15:57:44 GMT 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated.
	* api/omdatabase.cc,backends/database.cc,bin/omtcpsrv.cc,
	  common/database.h,docs/,include/xapian/database.h,tests/api_db.cc:
	  Added constructors to Database and WritableDatabase which fulfil the
	  role that the Auto::open() factory functions currently do.
	  Auto::open() is now deprecated.
	* api/,backends/inmemory/inmemory_database.cc,
	  backends/quartz/quartz_database.cc,backends/quartz/quartz_postlist.h,
	  common/expandweight.h,common/stats.h,include/xapian.h:
	  #include <xapian.h> no longer pulls in xapian/output.h - this
	  removes the external ability to write a Xapian object to an
	  ostream directly, as it's little used and potentially dangerous
	  ('cout << mset[i];' will compile, but you almost certainly meant
	  'cout << *mset[i];').  You can get the old effect by writing
	  'cout << obj->get_description();' instead of 'cout << obj;'.
	  Adjusted all the library sources which relied on xapian/output.h
	  pulling in various other xapian/ headers.
	* backends/muscat36/da_database.cc,backends/muscat36/db_database.cc:
	  Debug output tweaks.
	* common/emptypostlist.h,matcher/mergepostlist.cc,matcher/multimatch.cc:
	  Added EmptyPostList::get_maxweight() which always returns 0, so you
	  no longer need to explicitly set a weighting scheme on an
	  EmptyPostList.
	* common/omdebug.h: Only include omstringstream.h if
	  XAPIAN_DEBUG_VERBOSE is in effect.
	* extra/Makefile.am: queryparsertest needs to link to libxapian.la
	  explicitly.
	* net/progclient.cc: Whitespace tweak.
	* testsuite/: Eliminated barely used sources indexer.h,
	  textfile_indexer.h, and textfile_indexer.cc.
	* testsuite/backendmanager.cc: Removed unused functions
	  make_strvec() and index_file_to_database().

Wed Dec 01 07:15:46 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: SF CF x86_64 machine no longer needs --disable-shared.

Tue Nov 30 21:53:33 GMT 2004  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Updated for 0.8.4 release.

Tue Nov 30 03:07:43 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,backends/database.cc,backends/quartz/bcursor.cc,
	  backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_postlist.cc,common/omassert.h,
	  common/omdebug.cc,common/omdebug.h,docs/doxygen_full_conf.in,
	  matcher/localmatch.cc,matcher/multimatch.cc,matcher/stats.cc,
	  tests/apitest.cc,tests/btreetest.cc,testsuite/backendmanager.cc,
	  testsuite/backendmanager.h,testsuite/testsuite.cc: Rename all the
	  MUS_xxx defines to XAPIAN_xxx.

Tue Nov 30 02:36:33 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,backends/quartz/btree.cc: Get configure to probe for
	  the prototypes (if any) needed for pread and pwrite.

Tue Nov 30 01:09:26 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Instead of trying to coax pread/pwrite
	  prototypes out of the system headers, let's try just providing our
	  own!

Mon Nov 29 19:51:13 GMT 2004  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Moved -no-undefined to the right place, plus we
	  also need to pass @ldflags@ and ../libxapian.la in
	  libxapianqueryparser_la_LIBADD.

Mon Nov 29 18:28:57 GMT 2004  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Mon Nov 29 18:27:12 GMT 2004  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Added -no-undefined to
	  libxapianqueryparser_la_LDFLAGS so it builds on mingw.

Mon Nov 29 17:46:54 GMT 2004  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Don't try to run "runtest" as a test - it just
	  needs to be a dependency of the tests.

Sat Nov 27 02:58:28 GMT 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/dir_contents: Trimmed whitespace.

Sat Nov 27 02:05:51 GMT 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated ready for 0.8.4 release.

Sat Nov 27 02:03:40 GMT 2004  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Added a dependency so "make check" regenerates
	  runtest if necessary.

Sat Nov 27 02:02:58 GMT 2004  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Sat Nov 27 01:59:18 GMT 2004  Olly Betts <olly@survex.com>

	* README: Minor tweak.

Sat Nov 27 01:58:53 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Improved a couple of comments.

Sat Nov 27 01:42:32 GMT 2004  Olly Betts <olly@survex.com>

	* docs/: Trimmed trailing whitespace.

Sat Nov 27 01:41:33 GMT 2004  Olly Betts <olly@survex.com>

	* docs/stemming.html: Reworded text from BrightStation times which
	  talked about "the open source release".

Fri Nov 26 17:32:55 GMT 2004  Olly Betts <olly@survex.com>

	* docs/indexerquickstart.html: Removed dead documentation.

Fri Nov 26 17:11:19 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with new cygwin report.

Fri Nov 26 17:07:21 GMT 2004  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc,tests/api_nodb.cc,docs/bm25.html,
	  include/xapian/enquire.h,matcher/bm25weight.cc: Renamed BM25
	  parameters to match standard naming in papers and elsewhere
	  (A->k3, B->k1, C->k2, D->b), eliminated the extra factor of 2
	  which our C had, and reordered the parameters to k1, k2, k3.
	  This is an incompatible API change for BM25Weight(), so if
	  you are using custom parameters for BM25 you'll need to
	  update your code.

Fri Nov 26 15:20:16 GMT 2004  Olly Betts <olly@survex.com>

	* tests/runtest.in: Allow VALGRIND environmental variable to override
	  the value we got from configure.

Fri Nov 26 03:50:36 GMT 2004  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc,matcher/tradweight.cc: termfreq is always
	  exact for matching (we only approximate it for query expansion)
	  so replace code to work around bad approximations with Assert() to
	  make sure this never happens.

Fri Nov 26 00:19:22 GMT 2004  Olly Betts <olly@survex.com>

	* matcher/expandweight.cc,matcher/tradweight.cc: If we estimate the
	  term frequency, ensure it has a sane value (>= r and <= N - R + r)
	  rather than bodging around the problem later on.

Thu Nov 25 01:29:36 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Fixed recent cygwin change to
	  actually compile.

Thu Nov 25 01:06:03 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Added --help and --version; Check that the
	  source path and desitination path aren't the same; Report each table
	  name when we start compacting it, and some simple stats on the
	  compaction achieved when we finish.

Tue Nov 23 16:19:09 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Fixed m4 quoting problem.

Tue Nov 23 12:47:54 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Fix the test for GCC3 used to turn on -Werror with
	  --enable-maintainer-mode.

Mon Nov 22 03:08:10 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Assorted updates.

Mon Nov 22 02:15:22 GMT 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Test with DB_CREATE_OR_OPEN in writelock1.

Mon Nov 22 01:37:13 GMT 2004  Olly Betts <olly@survex.com>

	* common/utils.cc: define NOMINMAX as a cleaner way to prevent
	  windows.h from polluting the namespace and colliding with ANSI C++.

Sat Nov 20 14:36:43 GMT 2004  Olly Betts <olly@survex.com>

	* tests/runtest.in: --logfile-fd was renamed to --log-fd in valgrind
	  2.1.2 with no support for the old option name, so we must probe
	  to decide which to use.

Fri Nov 19 13:18:43 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc,backends/quartz/bcursor.h: Eliminated
	  Bcursor::get_tag() - it's an internal method only used from one
	  other method, and it now just a trivial wrapper around
	  Btree::read_tag().

Fri Nov 19 04:20:39 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc,backends/quartz/btree.cc,
	  backends/quartz/btree.h: Factored out near identical code from
	  Btree::find_tag() and Bcursor::get_tag() into Btree::read_tag().

Thu Nov 18 03:27:52 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Applied the Quartz "DANGEROUS" patch, but
	  disabled for now.  This way it won't keep being broken by changes
	  to the code.

Tue Nov 16 04:29:25 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Ah, it's __sun__/__sun/sun, not
	  __solaris__ (at least for x86 Solaris 9).

Tue Nov 16 02:56:44 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Solaris defines __solaris__ not
	  __SOLARIS__.

Mon Nov 15 12:40:38 GMT 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Added new test userweight1 to test user defined
	  matching schemes.

Sun Nov 14 05:20:34 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_metafile.cc,
	  backends/quartz/quartz_metafile.h: Removed unused
	  QuartzMetaFile::erase() method.

Sun Nov 14 04:55:05 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: For cygwin, use the underlying
	  MoveFile API call for locking, as link() doesn't work on FAT
	  partitions.  And don't rely on HAVE_LINK to control whether we
	  use link() otherwise - if the configure test somehow misfires, a
	  compilation error is better than using rename() on Unix as that
	  would cause a second writer to smash the lock of the first.

Thu Nov 11 06:58:41 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Removed superfluous statement.

Tue Nov 09 23:50:10 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Need to include sys/types.h to define
	  ssize_t, size_t, and off_t before we prototype pread and pwrite
	  for OSF.

Tue Nov 09 22:39:00 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Tweaked the pread/pwrite mess to try to
	  get it to work on OSF and x86 Solaris while not breaking it
	  elsewhere.

Tue Nov 09 19:29:37 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: More refactoring.

Tue Nov 09 17:13:10 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: More refactoring.  Also rearranged the contents
	  of the quartz and btree headers, eliminating btree_types.h in the
	  process.

Tue Nov 09 16:47:13 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_metafile.cc: Using fdcloser is less clear in
	  trivial cases.

Tue Nov 09 16:38:47 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Close the fd of the lock file
	  before trying to rename it on Windows.

Tue Nov 09 07:58:02 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/btree_util.h: More refactoring.

Tue Nov 09 03:24:59 GMT 2004  Olly Betts <olly@survex.com>

	* xapian-config.in: Added --swigflags option for use with SWIG.

Mon Nov 08 22:54:55 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,xapian-config.in: If flags are needed to select ANSI
	  mode with the current compiler, then make xapian-config --cxxflags
	  include them so that Xapian users don't have to jump through the
	  same hoops we do.

Mon Nov 08 04:49:21 GMT 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/muscat36/,
	  backends/net/net_database.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h,common/database.h,
	  common/net_database.h,matcher/localmatch.cc: If a database contains
	  no positional information, change NEAR and PHRASE queries into AND
	  queries (as otherwise they'd return no matches at all) (bug#56).
	* tests/api_wrdb.cc: Added feature test phraseorneartoand1.

Mon Nov 08 04:09:04 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,backends/quartz/btree.cc: Improved what we do to
	  turn on pread and pwrite declarations in unistd.h so that it works
	  on OSF and doesn't need the HAVE_GLIBC test, yet still works on
	  OpenBSD.

Mon Nov 08 03:55:51 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,testsuite/btreecheck.cc: More refactoring.

Sun Nov 07 20:42:32 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: One more tweak.

Sun Nov 07 18:18:19 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in: Another tweak to hopefully
	  get version.h generation to work everywhere.

Sun Nov 07 15:01:23 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in: Terminating lines with 'N'
	  makes Sun's C++ unhappy.  Try ',' instead.

Sun Nov 07 03:54:42 GMT 2004  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Added test_weight1 which tests the built-in
	  Xapian::Weight subclasses (bug#8).

Sun Nov 07 03:36:19 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree_util.h,
	  testsuite/btreecheck.cc: More refactoring.

Sun Nov 07 03:33:24 GMT 2004  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc,matcher/tradweight.cc: Fixed definitions to
	  match declarations after recent change.

Sun Nov 07 02:33:50 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Noted LIBRARY_VERSION_INFO which 0.8.4 will get.

Sun Nov 07 02:28:38 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: BoolWeight::unserialise() returns
	  BoolWeight*, etc.  BoolWeight::clone() returns BoolWeight *.

Sun Nov 07 02:24:17 GMT 2004  Olly Betts <olly@survex.com>

	* HACKING: Note that C++ style casts are preferable to C style casts;
	  Improve wording in a few places.

Sun Nov 07 01:05:58 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree_util.h,
	  testsuite/btreecheck.cc: Moved set_block_given_by()
	  and block_given_by() into Item class.

Sat Nov 06 21:16:15 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in: Fix generation of
	  version.h to work with aCC -E which concatenates adjacent literal
	  strings.

Sat Nov 06 20:58:00 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,testsuite/btreecheck.cc: Started to refactor the
	  Btree manager by introducing Item and Key classes which take care
	  of handling the on-disk format.

Sat Nov 06 15:40:05 GMT 2004  Olly Betts <olly@survex.com>

	* xapian-config.in,m4/xapian.m4: Pass across ac_top_srcdir and use it
	  if provided to say "configure.ac" or "configure.in" rather than
	  "configure.in (or configure.ac)" in the "Add AC_PROG_LIBTOOL"
	  error message.

Sat Nov 06 14:49:05 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Updated comment - we now find SOURCEDOC in 2 goes (as
	  there are no longer any C sources).

Sat Nov 06 14:43:16 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Oops, STLPORT_CXXFLAGS *is* used (in xapian-config.in)
	  so revert the change which removes it.

Sat Nov 06 13:37:23 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h,matcher/bm25weight.cc,
	  matcher/tradweight.cc: Move virtual methods of BM25Weight and
	  TradWeight out of the header.

Sat Nov 06 13:19:32 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,include/xapian/version.h.in: Another rework of how
	  include/xapian/version.h is generated - this time to make it work
	  with Sun's C++ compiler again; XAPIAN_VERSION is now a string;
	  Define XAPIAN_REVISION (which is 4 for version 0.8.4).

Sat Nov 06 04:22:57 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Don't AC_SUBST(STLPORT_CXXFLAGS) as it is never used
	  that way (it's included in AM_CXXFLAGS).

Sat Nov 06 01:03:53 GMT 2004  Olly Betts <olly@survex.com>

	* testsuite/testsuite.h: Removed incorrect comment about how STRINGIZE
	  is used.

Fri Nov 05 14:41:59 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Removed a default parameter value from one
	  variant of open_db so that there's only one candidate for
	  open_db(string).

Fri Nov 05 14:40:38 GMT 2004  Olly Betts <olly@survex.com>

	* backends/database.cc: Renamed parameter from keys to values to
	  reflect current external naming.

Fri Nov 05 14:38:07 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/version.h.in,configure.ac: Fixed generation of
	  include/xapian/version.h to work with aCC.

Thu Nov 04 12:17:50 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Try "-std strict_ansi" for Compaq C++.

Thu Nov 04 11:22:52 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Fourth argument to AC_CHECK_HEADERS must be non-empty
	  to make a difference.

Thu Nov 04 10:21:25 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Found clean fix for inttypes.h problem (previous bodge
	  didn't work anyway).

Thu Nov 04 01:18:55 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Eliminated use of \( \) in sed expression as it
	  appears to cause problems on HP-UX.

Thu Nov 04 00:54:11 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Added icky workaround to Compaq C++ oddness - cc can
	  find inttypes.h but cxx can't.

Wed Nov 03 23:58:48 GMT 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,matcher/multimatch.cc,
	  net/socketserver.cc: Tweaked to compile with Compaq C++.

Wed Nov 03 22:55:04 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Need to put flags to select ANSI C++ mode in CXXFLAGS
	  not AM_CXXFLAGS.

Wed Nov 03 22:27:08 GMT 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Fixed typo.

Wed Nov 03 21:58:53 GMT 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Added explicit cast to try to help Compaq C++
	  build.

Wed Nov 03 21:38:29 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Probe for C++ compiler switches for ANSI mode as early
	  as possible.  With Compaq's C++, we need -D__USE_STD_IOSTREAM to
	  successfully #include <streambuf>.

Wed Nov 03 21:07:43 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Fixed snprintf configure test.

Wed Nov 03 19:37:32 GMT 2004  Olly Betts <olly@survex.com>

	* common/utils.cc: Fixed typo.

Wed Nov 03 19:27:22 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,common/utils.cc: Improved snprintf checking.

Wed Nov 03 15:43:54 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Fixed to compile when not using glibc.

Wed Nov 03 14:55:29 GMT 2004  Olly Betts <olly@survex.com>

	* bin/omtcpsrv.cc,bin/quartzdump.cc,common/Makefile.am,common/getopt.h,
	  common/gnu_getopt.h,getopt/,testsuite/testsuite.cc: Major overhaul
	  of getopt use.  Move from getopt(), getopt_long(), getopt_long_only()
	  to gnu_getopt(), etc so we don't need to dance around avoiding
	  clashes with getopt() stuff in system headers.  The new gnu_getopt.h
	  header is cruft free and hopefully won't trip up assorted compilers
	  or platforms.

Wed Nov 03 14:53:39 GMT 2004  Olly Betts <olly@survex.com>

	* tests/Makefile.am: quartztest doesn't use getopt directly, so no
	  need to link it.

Wed Nov 03 12:56:56 GMT 2004  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Prune unused #includes.

Wed Nov 03 03:47:46 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Defining _NO_PROTO is a really bad idea for C++
	  code!

Wed Nov 03 03:34:06 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Removed AC_HEADER_STDC - Compaq's C++ compiler can't
	  find inttypes.h, but their C compiler can!

Wed Nov 03 02:48:04 GMT 2004  Olly Betts <olly@survex.com>

	* net/tcpclient.cc,net/tcpserver.cc: Use SOCKLEN_T for the type we
	  need to pass to various socket calls, since HPUX defines socklen_t
	  yet wants int in those calls.

Wed Nov 03 02:43:26 GMT 2004  Olly Betts <olly@survex.com>

	* autoconf/type_socklen_t.m4,matcher/networkmatch.cc,net/: If
	  __WIN32__ is defined, we want winsock2.h instead of sys/socket.h.
	  Mingw doesn't seem to even have the latter, so I think previously
	  we've been compiling by picking one up from somewhere random!

Wed Nov 03 01:10:01 GMT 2004  Olly Betts <olly@survex.com>

	* autoconf/type_socklen_t.m4: Rewritten to work with HPUX which
	  helpfully defines socklen_t but doesn't use it!

Tue Nov 02 21:29:40 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Fixes for Compaq C++.

Tue Nov 02 18:51:43 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Protect getopt definition for possible getopt
	  macro declared in getopt.h.

Tue Nov 02 16:52:21 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: AM_CONFIG_HEADER -> AC_CONFIG_HEADERS; removed
	  commented out AC_LANG_SAVE and AC_LANG_RESTORE.

Tue Nov 02 15:56:02 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: # comments -> dnl comments.

Tue Nov 02 15:54:46 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: $GCC -> $GXX; $CC -> $CXX.

Tue Nov 02 15:38:21 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac,docs/Makefile.am: Removed SOURCEDOC_C_SRC.

Tue Nov 02 06:51:39 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc,getopt/getopt1.cc: Fixed function declarations to
	  not use K&R C syntax.

Tue Nov 02 05:31:57 GMT 2004  Olly Betts <olly@survex.com>

	* getopt/getopt.cc: Make _getopt_internal extern "C" too.

Tue Nov 02 04:43:08 GMT 2004  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,HACKING,PLATFORMS,backends/muscat36/,
	  getopt/Makefile.am,getopt/getopt.cc,getopt/getopt1.cc,languages/:
	  Change the few C sources to be C++.  This way we don't need to
	  worry about configure choosing a mismatching pair of compilers,
	  or about whether configure tests with the C compiler don't apply
	  to the C++ compiler, or vice versa.

Tue Nov 02 04:31:49 GMT 2004  Olly Betts <olly@survex.com>

	* backends/muscat36/: More C casts converted to C++ casts.

Tue Nov 02 04:28:07 GMT 2004  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc,matcher/tradweight.cc: More C casts converted
	  to C++ casts.

Tue Nov 02 03:22:52 GMT 2004  Olly Betts <olly@survex.com>

	* backends/muscat36/: Removed unused test harness sources.

Tue Nov 02 02:44:34 GMT 2004  Olly Betts <olly@survex.com>

	* languages/pool.c,languages/pool.h: Removed unused sources.

Tue Nov 02 01:51:30 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: AC_TYPE_SIZE_T causes problems with Compaq C++ when it
	  fails to spot size_t (which is there) and the "#define size_t
	  unsigned long" it adds to config.h breaks "using std::size_t;".
	  Also removed AC_C_CONST as I don't believe that's needed either
	  in a largely C++ library.  Both of these have been in configure.in
	  since the very first version so I suspect autoscan decided we wanted
	  them.

Mon Nov 01 05:44:02 GMT 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fixed compilation problem on alpha Linux.

Mon Nov 01 03:16:36 GMT 2004  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,api/omstem.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/multi/multi_termlist.h,backends/quartz/,
	  extra/queryparser.yy,matcher/,net/tcpserver.cc,tests/api_anydb.cc,
	  tests/api_db.cc,tests/quartztest.cc,testsuite/backendmanager.cc,
	  testsuite/btreecheck.cc,testsuite/testsuite.cc: Changed C style
	  casts to C++ style.  The syntax is ugly, but they do make the intent
	  clearer which is a good thing.

Mon Nov 01 02:56:31 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Select ANSI iostream implementation for Compaq C++.

Mon Nov 01 02:41:58 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Compaq's C++ compiler doesn't know snprintf, yet their
	  C compiler does.  Let's try running *all* the configure checks with
	  the C++ compiler, since that's what we compile most code with.

Mon Nov 01 01:12:43 GMT 2004  Olly Betts <olly@survex.com>

	* common/netutils.cc: Fixed to compile.

Mon Nov 01 01:06:13 GMT 2004  Olly Betts <olly@survex.com>

	* common/Makefile.am,common/netutils.cc,common/netutils.h:
	  encode_tname() and decode_tname() aren't really sensible candidates
	  for inlining so move them out of a header.

Sun Oct 31 15:34:18 GMT 2004  Olly Betts <olly@survex.com>

	* configure.ac: Turn on -AA when compiling with HP's aCC.

Sun Oct 31 15:10:02 GMT 2004  Olly Betts <olly@survex.com>

	* testsuite/testutils.cc: Fixed mset_range_is_same() and
	  mset_range_is_same_weights() which were only comparing the
	  first items in the range.  Luckily the tests still all pass
	  so this wasn't hiding any bugs.

Sat Oct 30 19:15:48 BST 2004  Olly Betts <olly@survex.com>

	* configure.ac: Disable pread/pwrite on HP-UX as they don't work when
	  LFS in enabled, and we definitely want LFS.

Sat Oct 30 16:42:24 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc: Fix Bcursor::del() which didn't always
	  leave the cursor on the next item like it should.
	* backends/quartz/quartz_postlist.cc: If we're removing a posting
	  list entirely, often there will only be one chunk, so avoid
	  creating a Bcursor in this case.

Sat Oct 30 16:55:19 BST 2004  Olly Betts <olly@survex.com>

	* languages/header.h: Removed unused #define MAXINT and MININT which
	  were clashing with some header on HP-UX.

Sat Oct 30 07:09:33 BST 2004  Olly Betts <olly@survex.com>

	* docs/bm25.html,docs/intro_ir.html: Reworked to talk about Xapian
	  rather than Muscat.  Also improved the appearance of the formulae.

Sat Oct 30 06:07:14 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Btree::read_block - debug log the value
	  of p, not the irrelevant contents of the block it points to.

Fri Oct 29 22:37:31 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Improved comments.

Fri Oct 29 05:10:02 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Fixed ultra-obscure bug in the code which
	  finds a key suitable to discriminating between two blocks in a
	  B-tree branch (discovered by reading the code).  Comparing the keys
	  didn't consider the length of the second, so it is possible the code
	  would miscompare.  But in reality this is extremely unlikely to
	  happen, and even then would probably just mean that the
	  discriminating key wouldn't be as short as it could be.

Fri Oct 29 04:12:09 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Simplified Btree::compare_keys() by
	  removing the last case which was dead code as it was covered by
	  an earlier case.

Wed Oct 27 21:17:12 BST 2004  Olly Betts <olly@survex.com>

	* HACKING,tests/runtest.in:
	  Enhanced runtest to allow it to run test programs under valgrind
	  and other tools (gdb was already supported).
	* testsuite/testsuite.cc: Point the user to the runtest script if
	  srcdir can't be guessed.  And no longer look for the test program
	  in the tests subdirectory of the current directory.
	* common/omdebug.cc: Removed compatibility code for checking
	  OM_DEBUG_FILE and OM_DEBUG_TYPES.
	* HACKING: Document that %% in XAPIAN_DEBUG_LOG is substituted with
	  the process-id, and that setting XAPIAN_DEBUG_FLAGS to -1 enables
	  all debug messages.
	* HACKING: Valgrind now supports x86 FreeBSD and PowerPC Linux.
	* HACKING: Removed mentions of long-dead configure options
	  --enable-profiling, --enable-purify and --enable-insure.

Wed Oct 27 21:16:10 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Document parameters of
	  Enquire::register_match_decider().

Wed Oct 27 21:14:32 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Wed Oct 13 20:21:38 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Revert the
	  previous change as runtime sized arrays are a g++ extension.
	  Calling new and delete on every call to add_item() is probably
	  unwise.

Tue Oct 12 23:40:36 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: split_p is only
	  used by Btree::add_item(), so make it a temporary in that method
	  rather than a class member variable which we need to take care to
	  allocate and deallocate.

Mon Oct 11 16:32:10 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Fix memory leaks in test_cursor1.

Mon Oct 11 02:24:50 BST 2004  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Use 5 tables in the example for how we keep
	  revisions in step, since we use 5 tables in quartz.

Thu Oct 07 22:51:28 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: An interrupted update could cause any
	  further updates to fail with "New revision too low" because the
	  new revision was being calculated incorrectly - fixed.

Wed Oct 06 15:42:31 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,include/xapian/database.h: Check that any
	  user specified block size is a power of 2.  And if the block size
	  passed is invalid, use the default of 8192 rather than throwing an
	  exception.

Wed Oct 06 12:19:39 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from tinderbox.

Wed Oct 06 01:10:46 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/quartz_document.cc,
	  matcher/multimatch.cc,common/multimatch.h: Fix some warnings
	  from Sun's C++ compiler.

Thu Sep 30 22:16:37 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Fixes for win32 and sun's c++
	  compiler.

Thu Sep 30 18:24:20 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.h,extra/queryparser.yy: Fixed bug which caused
	  misparsing of certain prefixed queries, introduced by C_isXXXXX
	  change.

Thu Sep 30 11:09:17 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Modified version of changequery1 fails - the
	  fix is tricky, so just make it SKIP for now.

Wed Sep 29 21:33:29 BST 2004  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Fixed to work when srcdir != builddir.

Wed Sep 29 18:52:04 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS,docs/Makefile.am: Workaround odd latex problem.

Wed Sep 29 17:10:00 BST 2004  Olly Betts <olly@survex.com>

	* configure.ac,docs/doxygen_api_conf.in,docs/doxygen_full_conf.in:
	  Updated doxygen conf files for doxygen 1.3.8.

Wed Sep 29 16:52:53 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h,extra/Makefile.am,
	  extra/queryparser.yy,tests/api_anydb.cc,testsuite/index_utils.cc:
	  Provide our own C_isalpha(), etc replacements for isalpha(), etc
	  which always work in the C locale and avoid signed char problems.

Tue Sep 28 00:04:11 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: rmdir() isn't a sensible candidate
	  for inlining so move it out of the header.

Mon Sep 27 17:33:23 BST 2004  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: Be smarter about when to add a ':' when adding
	  a term prefix.

Mon Sep 27 16:01:37 BST 2004  Olly Betts <olly@survex.com>

	* docs/scalability.html: Added note warning about benchmarking from
	  cold.

Mon Sep 27 15:20:13 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Note that we use doxygen 1.3.8 for snapshots and releases;
	  Note that --enable-maintainer-mode now automatically enables -Werror
	  with GCC 3.0 or newer.

Wed Sep 22 16:49:20 BST 2004  Olly Betts <olly@survex.com>

	* matcher/: Pruned unneeded #include-s and other tidying, some
	  enabled by the previous change.

Wed Sep 22 14:04:27 BST 2004  Olly Betts <olly@survex.com>

	* common/positionlist.h,matcher/: Moved all of the implementations
	  of the XXXPostList classes from the .h files into the .cc files.
	  All the methods are virtual, so we aren't going to gain anything
	  from being able to inline them.

Wed Sep 22 02:58:59 BST 2004  Olly Betts <olly@survex.com>

	* configure.ac: Automatically add -Werror to CFLAGS and CXXFLAGS if
	  maintainer mode is enabled and we're using GCC3 or newer.  Don't
	  do this for older GCCs as GCC 2.95 issues spurious warnings.

Wed Sep 22 02:41:41 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h:
	  Introduced CASSERT_TYPE_UNSIGNED to replace the common use of
	  CASSERT to assert at compile time that a type is unsigned.

Tue Sep 21 15:58:05 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Removed reports from versions prior to 0.7.0.  So much
	  has changed that these are of little value.

Mon Sep 20 15:24:27 BST 2004  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Version 0.8.3.

Mon Sep 20 15:13:34 BST 2004  Olly Betts <olly@survex.com>

	* AUTHORS: Updated.

Mon Sep 20 14:26:35 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in: Removed reference to xapian-examples' createdatabase
	  (which is no longer in xapian-examples).

Mon Sep 20 13:06:59 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in: Updated version from Fabrice Colin (incorporating
	  changes from Alan Cox's RPM spec files): split off libs into a
	  separate package to allow 32 and 64 bit versions to be installed
	  concurrently; include binaries from xapian-examples; updated source
	  URLs.

Mon Sep 20 03:25:44 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_anydb.cc: Added regression test for previous bug (test
	  checkatleast1).

Mon Sep 20 03:16:14 BST 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fixed segfault with check_at_least when there
	  were no matches.

Sun Sep 19 17:54:52 BST 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omdebug.cc: Fixed to compile with debug
	  tracing enabled.

Sat Sep 18 19:02:54 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Updated missed use of omprogsrv to xapian-progsrv.

Tue Sep 14 18:09:19 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in,bin/.cvsignore,bin/Makefile.am,debian/control.in,
	  debian/xapian-tools.install,docs/remote.html,tests/remotetest.cc,
	  testsuite/backendmanager.cc: Rename omtcpsrv to xapian-tcpsrv and
	  omprogsrv to xapian-progsrv.

Tue Sep 14 16:25:06 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in: Fixed mangled URL in last checkin.

Tue Sep 14 15:35:00 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in: Updated URL for tarball.

Tue Sep 14 02:49:34 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Updated the "how to do a release" tasklist.

Mon Sep 13 03:19:47 BST 2004  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.ac: Version 0.8.2.

Sat Sep 11 16:39:08 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/version.h.in: GCC 3.1 reported the wrong value for
	  __GXX_ABI_VERSION (100 not 101) so check 3.0 and 3.1 by version
	  number, keeping the __GXX_ABI_VERSION check for newer versions.

Sat Sep 11 02:57:48 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc: Fixed and reenabled Bcursor::prev()
	  (not currently used, but it will be useful for running posting
	  lists backwards!)

Fri Sep 10 13:13:51 BST 2004  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Need to ship test data for new test.

Thu Sep 09 21:58:37 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Extended feature test sortrel1 to check interaction
	  with Enquire::set_sort_forward(false).

Thu Sep 09 21:46:12 BST 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
	  include/xapian/enquire.h,matcher/multimatch.cc,net/socketserver.cc,
	  tests/api_db.cc,tests/testdata/apitest_sortrel.txt: You can now
	  specify to sort by value, then relevance, then docid instead of
	  by value then docid.

Thu Sep 09 19:30:07 BST 2004  Olly Betts <olly@survex.com>

	* docs/todo.xml: Removed unused file - todo entries are now in
	  bugzilla.

Thu Sep 09 13:11:52 BST 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/multimatch.h,common/omenquireinternal.h,
	  include/xapian/enquire.h,matcher/multimatch.cc,net/socketserver.cc:
	  Added optional "checkatleast" parameter to Enquire::get_mset()
	  which allows Omega's MIN_HITS functionality to be implemented
	  in the matcher (a bit more efficient).

Thu Sep 09 04:18:32 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Thu Sep 09 03:39:52 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated from the tinderbox.  Sun's C++ compiler can
	  now build Xapian on sparc!

Thu Sep 09 02:19:43 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: Added feature test for
	  WritableDatabase::replace_document() and delete_document() with
	  a unique term (apitest:uniqueterm1.
	* backends/inmemory/inmemory_alltermslist.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h:
	  Fixed bugs thrown up by the new test.

Wed Sep 08 19:45:37 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Updated details of Solaris open workaround.

Wed Sep 08 19:42:15 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.h,backends/quartz/btree.cc,
	  backends/quartz/quartz_database.cc,backends/quartz/quartz_log.cc:
	  New version of the Solaris open dance - now we always pass in
	  const char * for the filename, and we don't need the dance on
	  new versions, so only dance if open is defined.

Wed Sep 08 16:26:15 BST 2004  Olly Betts <olly@survex.com>

	* api/omquery.cc,include/xapian/query.h: Renamed Query::is_empty()
	  to Query::empty() for consistency.  Keep Query::is_empty() for
	  now as a deprecated alias.

Wed Sep 08 16:24:44 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_wrdb.cc: replace_doc -> replace_doc1; added new test
	  replace_doc2 to test using replace_doc to add a document with
	  a specified docid.

Wed Sep 08 16:23:50 BST 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h: Removed unused member
	  variable "indexing".

Wed Sep 08 16:14:47 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: If replace_document() is used
	  to add a document with did greater than lastdocid, raise lastdocid
	  so future calls to add_document() won't clash.

Wed Sep 08 16:13:51 BST 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc: Fixed bug
	  Database::replace_document() to work with a document id greater
	  than lastdocid.

Wed Sep 08 05:10:01 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.h: The latest fcntl.h dance causes a compile error on
	  mingw, so don't use it there.

Wed Sep 08 03:38:20 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.h: Use a namespace as an extra step in the Sun fcntl
	  open64 dance.

Tue Sep 07 02:33:50 BST 2004  Olly Betts <olly@survex.com>

	* tests/test.da: Another cruft file removed.

Tue Sep 07 02:21:49 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc,tests/quartztest.cc: Moved overwrite1 from
	  quartztest to btreetest.  Added const in a few places.

Tue Sep 07 02:07:43 BST 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Removed overwrite2 test.  Digging back in CVS
	  it's been disabled since the day after it added.  After all this
	  time it's hard to guess exactly what it was intended to test, so
	  just removing it seems simplest.  We already have overwrite1 to test
	  getting DatabaseModifiedError.

Tue Sep 07 01:52:25 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Cleaned up paths to temporary Btrees.

Mon Sep 06 17:51:27 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc,tests/quartztest.cc: Now that QuartzTable,
	  QuartzDiskTable, QuartzBufferedTable, QuartzCursor,
	  QuartzDiskCursor, and QuartzBufferedCursor are gone, move
	  quartztest tests which now just use Btree and Bcursor to btreetest.
	  This is more logical and should help make quartztest less of a
	  monster to compile.

Mon Sep 06 12:47:47 BST 2004  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Ship testdata/apitest_allterms4.txt.

Mon Sep 06 02:46:32 BST 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Xapian::Database will create the directory for
	  the database so there's no need to create it ourselves.

Mon Sep 06 02:40:57 BST 2004  Olly Betts <olly@survex.com>

	* tests/,tests/testdata/apitest_allterms4.txt: Split off tests which
	  require a writable database backend and tests which should work with
	  any database backend from api_db.cc as it was getting rather large.
	  Fixed simplequery2 to work with backends which don't return the
	  document length (such as the muscat36 backends).  Fixed allterms4
	  to work with muscat36 backends.

Mon Sep 06 02:39:29 BST 2004  Olly Betts <olly@survex.com>

	* backends/muscat36/da_database.cc,backends/muscat36/db_database.cc:
	  Fixed to compile now that internal_end_session() has gone.

Mon Sep 06 00:59:36 BST 2004  Olly Betts <olly@survex.com>

	* tests/runtest.in: Added support for running gdb on a test program,
	  automatically sorting out srcdir and libtool.

Mon Sep 06 00:49:11 BST 2004  Olly Betts <olly@survex.com>

	* tests/apitest_parser.pm: Removed long unused file.

Sun Sep 05 22:53:27 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Tweaked documentation comment to stop
	  doxygen parsing a hyphen as a single entry bullet point list.

Sun Sep 05 20:20:01 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.h: Added missing "std::" so code will
	  compile with GCC >= 3.

Sun Sep 05 13:54:58 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.h: Removed superfluous "BackendManager::".

Sun Sep 05 01:54:49 BST 2004  Olly Betts <olly@survex.com>

	* common/utils.cc,common/utils.h: Removed now unused files_exist()
	  function.

Sun Sep 05 01:50:35 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc,tests/apitest.cc,tests/apitest.h,
	  testsuite/backendmanager.cc,testsuite/backendmanager.h:
	  Cleaned up BackendManager by removing complications only required
	  by absentfile1 test, which can be implemented more directly anyway.

Sun Sep 05 01:33:16 BST 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Cleaned up rather odd code which is a hangover
	  from when keys and tags weren't simply C++ strings.

Sat Sep 04 12:35:12 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Updated details of which autotools we require.

Fri Sep 03 17:51:59 BST 2004  Olly Betts <olly@survex.com>

	* configure.ac: Require autoconf 2.59.  Noted LIBRARY_VERSION_INFO
	  which 0.8.2 will probably have.
	* Makefile.am: Require automake 1.8.5.

Fri Sep 03 16:40:11 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with results from tinderbox.

Fri Sep 03 14:34:00 BST 2004  Olly Betts <olly@survex.com>

	* autoconf/definedir.m4,autoconf/rjb_find_stlport.m4: Quote macro
	  names to fix warning from newer aclocal.  Removed comments about
	  future autodetection of stlport, as the user will always need to
	  decide between the STL supplied with the compiler and stlport.

Thu Sep 02 17:55:33 BST 2004  Olly Betts <olly@survex.com>

	* matcher/andpostlist.cc: Initialise lmax and rmax to 0.  Hopefully
	  this will fix SIGFPE on apitest's qterminfo2 on alpha linux.

Thu Sep 02 14:50:20 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Not storing the document length
	  and last docid on every add means that the magic key won't always
	  exists when there are records and
	  QuartzWritableDatabase::get_doccount() is sometimes off by one.  Fix
	  crudely for now by making sure that the magic key does always exist.
	  Longer term the magic key probably should be in the postlist table
	  but that's an incompatible change.

Wed Sep 01 16:15:23 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Change QuartzWritableDatabase to store the total
	  document length and the last docid itself rather than tallying added
	  and removed document length and writing the last docid back every
	  time a document is added.  This gives cleaner code and a small
	  performance win.  Removed XAPIAN_FLUSH_THRESHOLD_LENGTH as we no
	  longer tally the length changes, and made the default flush
	  threshold 10000 documents (was 1000).

Wed Sep 01 14:21:19 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Turn on previously commented-out code to
	  make the first key null for blocks more than 1 away from the leaves.
	  It saves disk space for a tiny CPU and RAM cost so is bound to be
	  a win overall.

Tue Aug 31 13:55:58 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/btree_util.h: Merged Btree::make_index_item() into
	  Btree::enter_key().

Tue Aug 31 01:07:19 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated in preparation for a release.

Tue Aug 31 00:53:35 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Short-cutting Btree::cancel causes
	  problems so disable that for the time being at least.

Fri Aug 27 13:09:56 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/btreecheck.cc: Fixed %% to % (presumably a hangover from
	  converting printf to cout).

Thu Aug 26 18:11:50 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Reduce quartz postlist chunk
	  threshold from 2048 to 2000 so that chunks won't get split by the
	  Btree.

Thu Aug 26 18:10:27 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_record.cc: Throw DocNotFoundError if we
	  try to delete a record which doesn't exist.

Thu Aug 26 17:18:56 BST 2004  Olly Betts <olly@survex.com>

	* configure.ac: Don't define DATADIR - we no longer use it and clashes
	  with more recent mingw headers.

Wed Aug 25 22:47:06 BST 2004  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Started section on quartzcompact.

Wed Aug 25 22:45:48 BST 2004  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/database.h: Changed new
	  WritableDatabase::replace_document(term, doc) method to return
	  the docid which the document was given.

Tue Aug 24 13:45:52 BST 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,include/xapian/enquire.h: Added new ESet methods
	  swap(), back() and operator[].
	* include/xapian/enquire.h: Added documentation comments for
	  MSet methods size(), empty(), swap(), begin(), end(), back().
	* include/xapian/enquire.h: Removed bogus documentation saying
	  that some Enquire methods can throw DatabaseOpeningError.

Tue Aug 24 10:24:30 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Noted automake 1.8 may be problematic.  Tweaked list of
	  release tasks.

Tue Aug 24 10:16:38 BST 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: If a matchdecider is specified and no matches
	  are requested, the lower bound on the number of matches must be 0
	  (since the matchdecider could reject all the matches).

Mon Aug 23 23:03:12 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Improved the "Db block overwritten"
	  message.  The DatabaseCorruptError version now suggests multiple
	  writers may be the cause, while the DatabaseModifiedError version
	  uses less alarming wording and says to call Database::reopen().

Sun Aug 22 14:07:35 BST 2004  Olly Betts <olly@survex.com>

	* indexer/: Removed the old XML-based indexer framework.  It's not
	  worked for ages, and nobody seems interested in ressurecting it.
	  If anyone ever is, they can fetch it back from CVS, but otherwise
	  it's just bulking up CVS checkouts.

Sun Aug 22 13:02:25 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am,configure.ac,extra/Makefile.am: Moved the older library
	  version information into configure.ac.

Sun Aug 22 12:58:21 BST 2004  Olly Betts <olly@survex.com>

	* HACKING,configure.in,configure.ac,backends/Makefile.am,
	  docs/Makefile.am: Renamed configure.in to configure.ac.

Sun Aug 22 12:47:43 BST 2004  Olly Betts <olly@survex.com>

	* xapian-config.in: Add "(or configure.ac)" in message telling the
	  user to add a line to their configure.in.

Sun Aug 22 11:38:55 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree_util.h: Adjusted
	  some Asserts to check c is within blocksize rather than
	  65536.  Added a FIXME for those which can't be trivially changed.

Sun Aug 22 10:56:56 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: No need to force a flush on
	  QuartzWritableDatabase::open_document() (the document will read
	  things lazily from the database, and that may trigger a forced
	  flush).
	* backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h: Eliminated
	  QuartzDatabase::open_post_list_internal() and
	  QuartzDatabase::open_term_list_internal().

Sun Aug 22 01:33:05 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,backends/quartz/quartz_record.cc,
	  backends/quartz/quartz_record.h: WritableDatabase::get_avlength()
	  no longer forces pending changes to be flushed.  This means you can
	  now search a modified WritableDatabase without causing a flush
	  unless the search includes a term whose postlist has pending
	  modifications.

Fri Aug 20 20:03:59 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree_util.h,common/,docs/overview.html,
	  docs/quickstart.html,include/xapian/enquire.h,
	  matcher/branchpostlist.h,matcher/multimatch.cc,tests/api_db.cc:
	  Corrected multiple occurrences of "an Xapian::XXX" to "a Xapian::XXX"
	  (presumably these all resulted from replacing "Om" with "Xapian::").

Fri Aug 20 17:38:15 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,bin/quartzcheck.cc,bin/quartzcompact.cc,
	  bin/quartzdump.cc,tests/btreetest.cc,tests/quartztest.cc:
	  Merged QuartzCursor into Bcursor.

Fri Aug 20 13:43:04 BST 2004  Olly Betts <olly@survex.com>

	* NEWS,backends/quartz/: Fixed the problem with "lazy tag reading"
	  in QuartzCursor and reenable that code.  The problem was with
	  deleting the current key, so added QuartzCursor::del() which
	  deletes the current key, leaving the cursor on the next item.

Fri Aug 20 13:04:33 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Reenabled test allterms2, but with the iterator
	  copying parts removed - TermIterator is an input_iterator so
	  that part was invalid.

Thu Aug 19 19:19:48 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated from recent ChangeLog entries.

Thu Aug 19 14:09:28 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Added regression test for bug #37.

Thu Aug 19 13:31:37 BST 2004  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: Fixed problems handling termweights in
	  queries with the same term repeated (bug #37).

Thu Aug 19 13:22:12 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table.cc: Disable the "lazy tag reading" in
	  QuartzCursor for the time being - it seems to cause problems.

Thu Aug 19 12:58:10 BST 2004  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc,bin/quartzdump.cc: Added calls to
	  QuartzCursor::read_tag().

Thu Aug 19 12:56:53 BST 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Removed superfluous clear() of a map.

Thu Aug 19 12:56:08 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Corrected a comment - a pure boolean query has all
	  weights set to 0, not 1.

Mon Aug 16 15:41:33 BST 2004  Olly Betts <olly@survex.com>

	* docs/: Removed unused and very out of date class diagrams in dia
	  format.  Doxygen generates similar but up-to-date diagrams
	  automatically anyway.

Mon Aug 16 15:27:30 BST 2004  Olly Betts <olly@survex.com>

	* xapian.spec.in,debian/libxapianVERSION-dev.install,
	  extra/.cvsignore,extra/Makefile.am,extra/omparsequery.h,
	  include/Makefile.am,include/om/.cvsignore,include/om/dir_contents,
	  include/om/om.h,m4/xapian.m4: Removed the compatibility layer which
	  allowed programs written against the pre-0.7.0 API to be compiled.

Mon Aug 16 15:08:08 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table.cc: Fixed QuartzCursor::find()
	  to work again after the last change.

Mon Aug 16 14:43:08 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,tests/quartztest.cc: QuartzCursor no longer
	  automatically reads the tag - you have to call read_tag() to
	  get it read.  This speeds up iterator over all the terms in
	  a database.  Also commented out QuartzCursor::prev as it's
	  unused and untested (at least in its latest form).

Mon Aug 16 12:39:56 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree_types.h: Made Bcursor.rewrite bool rather than
	  int.

Mon Aug 16 12:35:07 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Calculate and
	  store the latest revision number, rather than storing the other
	  one and working out which is newer every time we're asked.

Mon Aug 16 12:32:59 BST 2004  Olly Betts <olly@survex.com>

	* docs/install.html: We haven't "only [...] UNIX" for ages, so don't
	  claim we are.  We use libtool as well as autoconf and automake.
	  Link to the CVS snapshots.  And also mention downloading omega.

Mon Aug 16 12:20:04 BST 2004  Olly Betts <olly@survex.com>

	* docs/index.html: exaplains -> explains.

Mon Aug 16 12:18:34 BST 2004  Olly Betts <olly@survex.com>

	* docs/overview.html: Removed references to "our company" (meaning
	  BrightStation) and to the now defunct special parameters which
	  the inmemory backend accepted to cause deliberate errors for
	  testing.

Sun Aug 15 23:48:20 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: item_count -> get_entry_count(); revision_number
	  -> get_open_revision_number().

Sun Aug 15 23:15:34 BST 2004  Olly Betts <olly@survex.com>

	* backends/Makefile.am,backends/inmemory/Makefile.am: Fixed to compile
	  with --disable-inmemory (bug #33).

Sat Aug 14 18:56:06 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am: Improved library versioning comment.

Sat Aug 14 18:55:17 BST 2004  Olly Betts <olly@survex.com>

	* docs/overview.html: Fixed om_queryop to Xapian::Query::op, and added
	  missing OP_* codes to the list.

Sat Aug 14 17:44:39 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.h,backends/quartz/btree.cc,
	  backends/quartz/btree.h,bin/quartzcompact.cc,docs/quartzdesign.html:
	  Updated quartz design docs to reflect recent changes.  Also pulled
	  out the Btree and Bcursor API docs and slotted them in as doxygen
	  documentation comments - this way they're much more likely to
	  be kept up-to-date.

Sat Aug 14 15:59:07 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Removed unused
	  Btree default ctor.

Sat Aug 14 15:45:28 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Don't redundantly
	  store next_revision - it's always just revision_number + 1.

Sat Aug 14 15:30:30 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Implemented Btree::cancel directly rather
	  than closing and reopening the Btree.

Sat Aug 14 14:46:43 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,bin/quartzcheck.cc,bin/quartzcompact.cc,
	  bin/quartzdump.cc,tests/btreetest.cc,tests/quartztest.cc,
	  testsuite/btreecheck.cc,testsuite/btreecheck.h: Eliminated
	  QuartzTable which had become just a thin wrapper around Btree.

Fri Aug 13 19:19:02 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc:
	  QuartzPostList::move_to_chunk_containing now calls next_chunk if
	  required, rather than forcing the caller to do the fix-up.

Fri Aug 13 17:54:53 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h: Added tunable flush thresholds
	  - set XAPIAN_FLUSH_THRESHOLD=5000 to flush every 5000 documents
	  or XAPIAN_FLUSH_THRESHOLD_LENGTH=1000000 to flush every 1000000
	  total change in document length.  Set both to flush whichever is
	  reached first.  Set neither and the default is to flush every
	  1000 documents as before.

Fri Aug 13 15:54:21 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Removed no-longer-used Btree::erase and
	  QuartzTable::erase methods.

Fri Aug 13 15:37:15 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/quartz_database.cc:
	  Changed Btree::create() to remove any pre-existing alternate base
	  file, so we no longer need to call Btree::erase before
	  Btree::create.

Fri Aug 13 15:37:15 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated with changes since last release.

Fri Aug 13 15:36:04 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_posdb.cc,tests/quartztest.cc: Reworked quartztest's
	  positionlist1 into a generic api test as apitest's poslist3.

Thu Aug 12 16:26:42 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table.cc,backends/quartz/quartz_table.h,
	  bin/quartzcheck.cc,bin/quartzdump.cc: QuartzCursor now has a
	  Bcursor member, rather than an AutoPtr<Bcursor> member.

Thu Aug 12 14:13:37 BST 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Fixed up in line with the recent refactoring.

Thu Aug 12 13:23:31 BST 2004  Olly Betts <olly@survex.com>

	* m4/xapian.m4: XO_LIB_XAPIAN now AC_SUBSTs XAPIAN_VERSION.

Thu Aug 12 13:21:36 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,tests/quartztest.cc: Refactored, replacing
	  Quartz*Manager with Quartz*Table.

Thu Aug 12 02:00:58 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Merged QuartzTableManager into QuartzDatabase.

Wed Aug 11 23:40:34 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h:
	  Eliminated buffered_tables member of QuartzWritableDatabase.

Wed Aug 11 21:26:35 BST 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h,
	  docs/todo.xml: WritableDatabase::replace_document can now be used
	  to add a document with a specific docid (to allow keeping docids
	  in sync with numeric UIDs from another system).

Wed Aug 11 20:09:15 BST 2004  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,include/xapian/database.h: Added replace_document
	  and delete_document variants which take a unique id term name rather
	  than a document id.
	* include/xapian/database.h: Better documentation for replace_document
	  and delete_document.

Wed Aug 11 16:15:10 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,bin/quartzcheck.cc,bin/quartzdump.cc,
	  tests/quartztest.cc: Eliminated QuartzBufferedTable.

Wed Jun 30 20:34:08 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Fixed an unwrapped line.

Wed Jun 30 20:32:31 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Added note about the cvs-tag-release script.

Wed Jun 30 19:05:45 BST 2004  Olly Betts <olly@survex.com>

	* HACKING,NEWS,PLATFORMS,configure.in: Version 0.8.1.

Wed Jun 30 14:23:20 BST 2004  Olly Betts <olly@survex.com>

	* AUTHORS,PLATFORMS: Updated.

Tue Jun 29 23:24:59 BST 2004  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Make emptyquery1 check that Query("") causes an
	  InvalidArgumentError exception.

Tue Jun 29 17:29:03 BST 2004  Richard Boulton <richard@tartarus.org>

	* Makefile.am: Remove Debian files from distribution tarballs,
	  since there will often be multiple patch releases for each
	  release.  Debian files will be available from an apt repository
	  in future.

Mon Jun 28 01:29:00 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Mostly updated for 0.8.1 release.

Sun Jun 27 23:37:01 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed bug in postlist merging.

Sat Jun 26 00:51:04 BST 2004  Olly Betts <olly@survex.com>

	* AUTHORS: Add Malcolm Baldridge (helped fix a problem with building
	  the PHP bindings with newer versions of SWIG and PHP).

Fri Jun 26 00:29:10 BST 2004  Olly Betts <olly@survex.com>

	* HACKING,api/ompositionlistiterator.cc,api/ompostlistiterator.cc,
	  api/omtermlistiterator.cc,include/xapian/: MSetIterator and
	  ESetIterator are now bidirectional iterators (rather than
	  just input iterators);  Fixed post-increment forms of
	  PostingIterator, TermIterator, PositionIterator, and ValueIterator
	  so that *i++ works (as it must for them to be true input iterators).

Thu Jun 24 18:03:46 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for Slackware Linux 9.1.

Mon Jun 21 16:33:16 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Corrected -> to . so code
	  compiles with debug enabled.

Mon Jun 21 03:25:24 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Eliminated two calls to abort() - throw
	  exceptions instead.

Mon Jun 21 03:21:14 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Finish backing out incorrect
	  change from "Fri May 07 03:16:29 BST 2004" - failed to change two
	  lines back before.

Fri Jun 18 16:48:10 BST 2004  Richard Boulton <richard@tartarus.org>

	* configure.in: Fix typo (STLPORT_CXXLAGS -> STLPORT_CXXFLAGS)

Thu Jun 17 03:46:32 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Cleaned up code to track
	  add vs delete vs modify of a posting list entry since we now
	  force a flush if an entry is about to be retouched.

Thu Jun 17 03:44:21 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Back out incorrect change from
	  "Fri May 07 03:16:29 BST 2004".  We do need to call get_or_make_tag
	  in this case because we're modifying the tag.

Wed Jun 16 15:40:21 BST 2004  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h: Implemented get_lastdocid()
	  for InMemory backend.

Wed Jun 16 02:39:41 BST 2004  Olly Betts <olly@survex.com>

	* configure.in: Note the value of LIBRARY_VERSION_INFO which 0.8.1
	  would get if it were released now.

Wed Jun 16 02:39:11 BST 2004  Robert Pollak <robert.pollak@fabasoft.com>

	* api/omdatabase.cc, include/xapian/database.h,
	  backends/database.cc, common/database.h,
	  backends/quartz/quartz_database.cc, backends/quartz/quartz_database.h,
	  backends/quartz/quartz_record.cc, backends/quartz/quartz_record.h:
	  New method Database::get_lastdocid for re-synchronizing an old
	  quartz index.

Wed Jun 16 02:05:07 BST 2004  Richard Boulton <richard@tartarus.org>

	* matcher/multimatch.cc: When collapsing, keep track of the number
	  of collapses performed, and use this information to modify the
	  bounds and estimate of the number of matches.
	* tests/api_db.cc: Added tests for this.
	* include/xapian/enquire.h: Update documentation comments for
	  MSet::get_matches_*() functions to make clear that collapsing and
	  cutoffs are taken into account.  (Previously, the most likely
	  interpretation of the comments was that they wouldn't be taken
	  into account, but the implementation was that percentage cutoffs
	  were taken into account.)  Due to this ambiguity, I think it is
	  reasonable to say this isn't an API change.

Wed Jun 16 01:55:29 BST 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Rearranged code so that the behaviour can
	  be easily seen to be unchanged, but so that it's closer to the
	  result of applying Richard's patch for bug #31.

Wed Jun 16 01:27:09 BST 2004  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Trimmed extra whitespace.

Tue Jun 15 15:40:11 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed PostlistChunkReader to
	  take a copy of the postlist data being read to avoid problems with
	  reading data from a string that's been deleted.

Tue Jun 15 15:26:54 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Updated the list of tasks required for a new release.

Tue Jun 15 15:24:04 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am,configure.in,extra/Makefile.am: Unify the shlib version
	  numbers (the small benefit of tracking them individually makes it
	  hard to justify the extra work required, and having one version
	  simplifies debian packaging too).

Tue Jun 15 14:52:36 BST 2004  Robert Pollak <robert.pollak@fabasoft.com>

	* extra/xapian/queryparser.h: Fixed memory leaked upon QueryParser
	  destruction.

Fri Jun 11 02:18:35 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Refactored a loop.

Fri Jun 11 02:17:05 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed bug which meant we
	  sometimes failed to remove a posting when deleting or replacing
	  a document.

Fri Jun 11 02:16:16 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc,
	  backends/quartz/quartz_postlist.h: Merged move_to() into skip_to().

Fri Jun 11 02:14:56 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed typo in comment.

Thu May 27 15:41:45 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Eliminated the
	  split cursor - we only actually need a single block buffer to
	  handle splitting blocks.

Wed May 26 04:02:18 BST 2004  Olly Betts <olly@survex.com>

	* include/om/om.h,include/xapian/errortypes.h: Removed several unused
	  Xapian::Error subclasses (these were used by the indexer framework
	  which we decided was a failed experiment).

Wed May 26 01:54:13 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: More DEBUGCALL
	  tracing added; split_root now uses level member rather than a
	  parameter.

Sun May 23 00:56:41 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Merge split_off()
	  into add_item().

Sat May 22 01:28:58 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Another DEBUGCALL.
	* backends/quartz/quartz_table.h: Improved comments.

Fri May 21 23:17:01 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Removed unnecessary assignment which is
	  a hangover from the shared level code we removed long ago.

Fri May 21 20:31:56 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/,docs/quartzdesign.html,testsuite/btreecheck.cc:
	  Removed overwritten flag (unused as we throw an exception anyway).
	  If Btree is writable, throw DatabaseCorruptError if we detect
	  overwritten.  Make use of bool return types consistent.  Removed
	  documentation of Btree error codes (the error codes themselves
	  were removed a month ago).

Thu May 20 03:50:46 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Remove references to sessions in doxygen
	  comments.

Thu May 20 03:44:28 BST 2004  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/database.cc,
	  backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/muscat36/da_database.h,backends/muscat36/db_database.h,
	  backends/net/net_database.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h,common/database.h,
	  common/net_database.h: Clean up the backend interface.

Thu May 20 03:18:30 BST 2004  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/muscat36/,
	  backends/net/net_database.cc,backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h,common/database.h:
	  Stripped out the session machinery - all that is actually required
	  is to ensure that any unflushed changes are flushed when the dtor
	  runs.

Mon May 17 01:04:17 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/btree_types.h: Reworked split_p and split_n
	  members of Cursor into a separate C_split cursor.  This
	  reduces the memory overhead of each Bcursor (and hence each
	  QuartzPostList).

Sat May 15 01:29:40 BST 2004  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Corrected lingering reference to "om.h" and
	  note that we need <iostream>.
	* docs/quickstartindex.cc.html,docs/quickstartexpand.cc.html,
	  docs/quickstartsearch.cc.html: Add <iostream>.
	* AUTHORS: Add John Ward for pointing out the above problems.

Fri May 14 00:59:51 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Added the start of a list of subtasks when doing a release.
	  Currently it's always me that does this, but it may not always be
	  and anyhow it'll help me to have a list to run through.

Fri May 14 00:59:21 BST 2004  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Thu May 13 17:14:18 BST 2004  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: When stripping non-alphanums prior to
	  reparsing, keep dots ('.').
	* extra/queryparsertest.cc: Pruned near-duplicate queryparsertest
	  testcases.

Thu May 13 12:09:19 BST 2004  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: "interger" -> "integer".

Thu May 13 11:20:44 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am: Removed bogus extra line added by last change.

Thu May 13 11:11:31 BST 2004  Olly Betts <olly@survex.com>

	* configure.in,Makefile.am,autoconf/.cvsignore,autoconf/Makefile.am,
	  m4/.cvsignore,m4/Makefile.am: Removed trivial m4/Makefile.am and
	  and autoconf/Makefile.am and do the work from the top level
	  Makefile.am instead.  It's easy to see the structure this way, and
	  it also removes a couple of recursive make invocations.

Thu May 13 09:32:22 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Added DEBUGCALL
	  tracing;  Stripped out C_ parameters where they are always the
	  internal cursor C.

Thu May 13 00:05:45 BST 2004  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: If we fail to parse
	  a query, try stripping out non-alphanumerics and reparsing.

Wed May 12 14:32:54 BST 2004  Olly Betts <olly@survex.com>

	* common/omtime.h: Corrected file description.

Wed May 12 02:08:44 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Fixed typos in comment.

Tue May 11 20:55:56 BST 2004  Olly Betts <olly@survex.com>

	* xapian-config.in: Added comment saying why we filter out
	  -I/usr/include; Removed no longer used "optarg" stuff; Added licence
	  boilerplate text (with (C) dates mined from CVS).

Tue May 11 13:42:38 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc,backends/quartz/btree.cc: Added lots
	  of assertions.

Tue May 11 09:29:51 BST 2004  Richard Boulton <richard@tartarus.org>

	* debian/: Added basic Debian packaging.

Mon May 10 17:17:45 BST 2004  Olly Betts <olly@survex.com>

	* docs/quartzdsign.html: Corrected various pieces of out of date
	  information.

Mon May 10 01:30:35 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.h: Removed unused forward declaration of
	  class BtreeCheck.

Mon May 10 01:30:24 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Fixed typo.

Sat May 08 20:14:40 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Pruned some #include-s which were unused, or could
	  be replaced by forward class declarations.

Fri May 07 14:38:10 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Slight efficiency tweak to the
	  "deleting the whole posting list" case.

Fri May 07 03:16:29 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Removed another unnecessary use
	  of QuartzBufferedTable::get_or_make_tag().

Fri May 07 02:56:22 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Initialise prev_ptr and next_ptr at open
	  time for a writable Btree.

Fri May 07 02:46:53 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Remove unneeded call to
	  QuartzBufferedTable::get_or_make_tag() in a case when we're using a
	  cursor which has already fetched the tag.

Thu May 06 23:30:12 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Improved a comment.

Thu May 06 22:20:43 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Added a few more assertions.

Thu May 06 02:25:33 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_positionlist.cc,
	  backends/quartz/quartz_utils.h: Added SON_OF_QUARTZ define to
	  disable incompatible changes to database formats by default, and
	  use it to control the docid encoding for keys such that we're always
	  inserting at the end of the table when added new documents.

Thu May 06 02:23:02 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Improved a FIXME comment.

Thu May 06 00:32:17 BST 2004  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Added test case for `term NOT "a phrase'.

Thu May 06 00:28:32 BST 2004  Olly Betts <olly@survex.com>

	* common/omdebug.cc,common/omdebug.h: Renamed OmTimer class used
	  internally by the --enable-debug=profile code to
	  Xapian::Internal::Timer.

Wed May 05 13:59:47 BST 2004  Olly Betts <olly@survex.com>

	* docs/scalability.html: Reworded to remove use of first person.

Mon May 03 21:42:05 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am: Improved wording of a FIXME comment.

Sun May 02 10:18:55 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Improved a couple of comments.

Sat May 01 04:42:43 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/quartz_table.cc: Reopening the readonly version
	  of a writable Btree is now more efficient.

Sat May 01 01:41:24 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Added up-to-date success reports for x86-openbsd and
	  x86-solaris.

Fri Apr 30 04:05:15 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Don't delete and reload the Btree_base just after
	  saving it - instead reuse the existing Btree_base object.

Fri Apr 30 02:41:50 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Clean up new code in Btree::commit()
	  from last change.

Thu Apr 29 22:41:05 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/quartz_table.cc: Don't
	  close and reopen the database table file descriptors every time
	  we flush changes.

Thu Apr 29 22:40:36 BST 2004  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Improved wording in a couple of places.

Thu Apr 29 16:50:45 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc: Removed references to Btree::error
	  from debug code since Btree::error was removed a week ago.

Tue Apr 27 20:46:25 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,configure.in: Added configure test for
	  glibc, because otherwise we need to include a header before we
	  can check for glibc in order to define something we should be
	  defining before we include any headers!

Tue Apr 27 17:45:51 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Only defined _XOPEN_SOURCE if __GLIBC__
	  is defined.  OpenBSD seems to do the opposite to Linux and *disable*
	  pread and pwrite if this is defined!

Tue Apr 27 14:35:47 BST 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc,tests/api_db.cc: Need to adjust index by firstitem
	  when indexing into items (bug#28).

Mon Apr 26 23:45:15 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Successfully built with gcc-3.5-20040327 snapshot on x86
	  linux.

Fri Apr 23 11:26:07 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Successfully built and tested on arm linux.

Fri Apr 23 11:24:23 BST 2004  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: Use 127.0.0.1 instead of localhost so that
	  tcpmatch1 doesn't fail just because the network setup is broken.

Thu Apr 22 00:54:58 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/: Stripped out Btree_errors as it's almost
	  totally unused now.  Fixed up the last few uses.
	* backends/quartz/quartz_table.cc: Fixed another case where read
	  and write Btrees should share fds.

Wed Apr 21 02:51:08 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Check the return value of
	  fdatasync()/fsync()/_commit() and raise an error.  They aren't
	  likely to fail harmlessly.

Wed Apr 21 02:45:28 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/quartz_table.cc: Share file descriptors between
	  the read and write Btree objects so that a quartz WritableDatabase
	  now uses 5 fds rather than 10.

Wed Apr 21 02:37:38 BST 2004  Olly Betts <olly@survex.com>

	* docs/scalability.html: Removed the reference to the Quartz update
	  bottleneck "currently being addressed for Xapian 0.8" as it's now
	  been addressed!

Wed Apr 21 00:24:08 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Corrected a comment.

Mon Apr 19 14:42:06 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Final update for 0.8.0.

Mon Apr 19 14:02:33 BST 2004  Olly Betts <olly@survex.com>

	* AUTHORS: Added people who've contributed build reports for the
	  PLATFORMS file.

Mon Apr 19 14:01:38 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: More updates from tinderbox and elsewhere.

Sat Apr 17 02:24:11 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Lots of updates from tinderbox and mailing list.

Sat Apr 17 00:13:26 BST 2004  Olly Betts <olly@survex.com>

	* HACKING: Added notes about using "using", and pointers to a couple
	  of useful C++ web resources.

Mon Apr 12 00:56:04 BST 2004  Olly Betts <olly@survex.com>

	* Makefile.am,NEWS,configure.in,extra/Makefile.am: Version 0.8.0.

Mon Apr 12 00:31:15 BST 2004  Olly Betts <olly@survex.com>

	* NEWS: Updated for 0.8.0.

Sun Apr 11 21:18:47 BST 2004  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Don't use a raw term
	  for a term which starts with a digit.

Sat Apr 10 17:20:23 BST 2004  Olly Betts <olly@survex.com>

	* AUTHORS: "Open Muscat" not "OmSee"; Updated the list of contributors
	  (more work needed...)

Sat Apr 10 16:41:28 BST 2004  Olly Betts <olly@survex.com>

	* m4/xapian.m4: Make XO_LIB_XAPIAN with no arguments do what most
	  users will want: check for Xapian and fail if it's not found,
	  or AC_SUBST XAPIAN_CXXFLAGS and XAPIAN_LIBS if it is.  Those
	  will unusual needs can supply one or both arguments as at
	  present.

Sat Apr 10 15:00:28 BST 2004  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sat Apr 10 00:32:07 BST 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for GCC 3.4 (prerelease).

Sat Apr 10 00:27:58 BST 2004  Olly Betts <olly@survex.com>

	* extra/xapian/queryparser.h: Added doxygen documentation comments.

Sat Apr 10 00:23:13 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Removed a now superfluous line.

Sat Apr 10 00:21:15 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Give a more accurate message if valgrind
	  spots a test doing something dodgy (e.g. free() of memory allocated
	  with new).

Thu Apr 08 17:22:20 BST 2004  Olly Betts <olly@survex.com>

	* net/.cvsignore: No longer need to ignore readquery.cc.

Thu Apr 08 17:19:43 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/base.h: Note in doxygen comment why the ref_count
	  is mutable.

Thu Apr 08 15:33:16 BST 2004  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: valgrinding code needs errno.h too.

Thu Apr 08 15:28:44 BST 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Make Xapian::Weight::Weight() protected
	  rather than private as we want to be able to call it from derived
	  classes (GCC 3.4 flags this, other compilers seem to miss it).

Tue Apr 06 03:32:39 BST 2004  Olly Betts <olly@survex.com>

	* net/omerr_string.cc,include/xapian/error.h,
	  include/xapian/errortypes.h,include/xapian/output.h:
	  Fixed some doxygen warnings.

Mon Apr 05 17:21:06 BST 2004  Olly Betts <olly@survex.com>

	* README: There never was an Omsee release - the last BrightStation
	  release was "OpenMuscat 0.4.1".

Mon Apr 05 17:19:38 BST 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_database.h: Make the flush criterion 1000
	  documents changed (added, removed, or replaced) as that seems to
	  perform much better over a wide variety of document sizes.

Thu Apr 01 01:04:17 BST 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Fixed temporary directory used (a slash was
	  missing).

Thu Apr 01 00:39:59 BST 2004  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Fri Mar 26 22:33:30 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Fix problems with termfreq and
	  collfreq in postlist getting out of step when a recently modified
	  or deleted document is deleted or remodified.

Fri Mar 26 12:31:24 GMT 2004  Olly Betts <olly@survex.com>

	* configure.in: Fixed check for --enable-runtime-pseudo-reloc.

Fri Mar 26 12:31:00 GMT 2004  Olly Betts <olly@survex.com>

	* bin/Makefile.am: Removed spurious "-lz" from quartzdump_LDADD.

Thu Mar 25 00:22:13 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzcheck.cc: Check the structure with the postlist Btree
	  as well as the Btree structures themselves.

Sun Mar 21 00:00:59 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_manager.cc: Fix for building on mingw.

Sat Mar 20 23:04:27 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/positioniterator.h,include/xapian/postingiterator.h:
	  Add doxygen comments in front of PostingIterator and
	  PositionListIterator classes so that doxygen pulls out the
	  existing documentation for their methods.

Sat Mar 20 16:23:13 GMT 2004  Olly Betts <olly@survex.com>

	* configure.in,backends/quartz/quartz_table_manager.cc,common/utils.h:
	  Added configure test for link() to avoid infinite loop on mingw!

Thu Mar 18 12:20:18 GMT 2004  Olly Betts <olly@survex.com>

	* configure.in: Improved the --enable-runtime-pseudo-reloc check.

Thu Mar 18 00:45:15 GMT 2004  Olly Betts <olly@survex.com>

	* bin/Makefile.am,tests/Makefile.am: Pass the magic mingw/cygwin flag
	  when linking the programs in bin and tests.

Thu Mar 18 00:33:22 GMT 2004  Olly Betts <olly@survex.com>

	* configure.in,xapian-config.in: mingw and cygwin both need
	  -Wl,--enable-runtime-pseudo-reloc passing when linking.
	  Arrange for xapian-config to include this, and check that
	  the ld installed is a new enough version (or at least that
	  it was at configure time).

Tue Mar 16 01:40:43 GMT 2004  Olly Betts <olly@survex.com>

	* docs/matcherdesign.html: Merged in more details from a message I
	  sent to the mailing list.

Mon Mar 15 20:39:21 GMT 2004  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: Fail the test if there's still a directory after
	  rmdir(), or there isn't a directory after mkdir().  Close a
	  QuartzDatabase or QuartzWritableDatabase before trying to overwrite
	  it - cygwin doesn't allow use to delete open/locked files...

Mon Mar 15 20:38:11 GMT 2004  Olly Betts <olly@survex.com>

	* backends/database.cc: Database::Internal::Internal::keep_alive()
	  should be Database::Internal::keep_alive().

Mon Mar 15 17:20:58 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/base.h: Returning a void result makes SGI's compiler
	  complain - don't!

Mon Mar 15 14:34:44 GMT 2004  Olly Betts <olly@survex.com>

	* common/omdebug.cc: Only use O_SYNC (on the debug log) if we have it.

Sun Mar 14 17:48:52 GMT 2004  Olly Betts <olly@survex.com>

	* tests/runtest.in: Mark with @configure_input@.

Thu Mar 11 23:53:43 GMT 2004  Olly Betts <olly@survex.com>

	* common/database.h,common/termlist.h,include/xapian/database.h,
	  include/xapian/enquire.h: Attempted fixes for warnings given by
	  SGI's MIPSpro C++ compiler.

Thu Mar 11 23:51:10 GMT 2004  Olly Betts <olly@survex.com>

	* configure.in: GCC 2.95 supported -Wno-long-long and is our minimum
	  recommended version, so unconditionally use -Wno-long-long with
	  GCC, and don't test for it on other compilers (the test incorrectly
	  decided to use it with SGI's compiler leading to a warning for
	  every file compiled).

Thu Mar 11 17:29:24 GMT 2004  Olly Betts <olly@survex.com>

	* docs/intro_ir.html: Added a link to "Information Retrieval"
	  by Keith v.R. which can be read on his website!

Thu Mar 11 17:12:35 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Added IRIX success reports from Jim Lynch.

Thu Mar 11 12:17:21 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Fixes for Sun C++'s fussy
	  template matching.

Thu Mar 11 12:12:46 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Another friend fix for Sun's C++.

Thu Mar 11 01:56:19 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/query.h: Another fix for Sun's C++.

Tue Mar 09 21:02:08 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/document.h: string -> std::string.

Tue Mar 09 19:04:48 GMT 2004  Olly Betts <olly@survex.com>

	* api/omdocument.cc,common/document.h,include/xapian/document.h,
	  tests/api_db.cc,tests/api_posdb.cc: Renamed
	  Xapian::Document::add_term_nopos to Xapian::Document::add_term
	  (with forwarding wrapper method for compatibility with existing
	  code).

Sat Mar 06 02:32:58 GMT 2004  Olly Betts <olly@survex.com>

	* docs/: Updated the quickstart tutorial and removed the warning
	  that "this document isn't up to date".

Sat Mar 06 01:56:17 GMT 2004  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Another tweak for Sun's C++ compiler.

Sat Mar 06 01:31:29 GMT 2004  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: Tweaked friend class declarations a
	  bit so Sun's C++ compiler can cope.

Thu Mar 04 23:58:17 GMT 2004  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with results from the tinderbox.

Thu Mar 04 23:29:28 GMT 2004  Olly Betts <olly@survex.com>

	* tests/btreetest.cc,tests/quartztest.cc: NetBSD mkdir() doesn't cope
	  with a trailing / on the path - fixed our code to cope with this.

Wed Mar 03 19:14:09 GMT 2004  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Fri Feb 13 23:56:44 GMT 2004  Olly Betts <olly@survex.com>

	* api/omquery.cc,tests/api_nodb.cc: Throw error when an empty query is
	  used to build in the binary operator Query ctor.  Added regression
	  test.

Fri Feb 13 15:08:09 GMT 2004  Olly Betts <olly@survex.com>

	* HACKING: XAPIAN_DEBUG_TYPES should be XAPIAN_DEBUG_FLAGS.

Sat Feb 07 14:26:54 GMT 2004  Olly Betts <olly@survex.com>

	* docs/queryparser.html: Grammar fixes.

Fri Jan 16 02:06:53 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed bug flagged up by deldoc4.

Thu Jan 15 01:00:48 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_termlist.cc: Use Xapian::doccount instead of
	  unsigned int in set_entries().

Thu Jan 15 00:56:47 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  testsuite/btreecheck.cc: Made some static functions into static
	  member functions of Btree so we can avoid duplicating code in
	  btreecheck.cc.  Also tweaked compare_keys to use memcmp and
	  special case when the keys are the same length (each of these
	  changes gives a very small speed gain).

Thu Jan 15 00:54:47 GMT 2004  Olly Betts <olly@survex.com>

	* api/maptermlist.h: Removed a FIXME which already had been fixed.
	  Removed a couple of asserts from a function which should never be
	  called (and so had `Assert(false)' anyway).

Mon Jan 12 00:32:37 GMT 2004  Olly Betts <olly@survex.com>

	* bin/quartzdump.cc: Backslash escape space and backslash in output
	  rather than hex encoding them; renamed start-term and end-term to
	  start-key and end-key; removed rather pointless "Calling next"
	  message; if there's an error, write it to stderr not stdout, and
	  exit with return code 1.

Sun Jan 11 03:23:17 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_termlist.cc: When possible, pack the wdf into
	  the same byte as the reuse length - doing so typically makes the
	  termlist 14% smaller!  This change is backward compatible.

Sat Jan 10 03:04:22 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed bug in new postlist
	  chunking code.

Sat Jan 10 00:45:04 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_termlist.cc: Removed unused
	  OLD_TERMLIST_FORMAT code.

Fri Jan 09 21:54:34 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fix incorrect code which just
	  happens to build and work with GCC 2.95.

Fri Jan 09 14:40:00 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Tidied the initial call to
	  get_chunk() out of the merge loop (gives ~4% speedup!)

Fri Jan 09 01:31:05 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Implement chunking of postlists
	  once again.

Thu Jan 08 21:06:37 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Shortcut the very common case
	  of appending to a posting list (which happens when we're just
	  adding new documents).  Declare small helper functions as "inline".

Wed Jan 07 23:21:59 GMT 2004  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Set threshold for flushing to
	  a saner value for the value we are now using.
	* backends/quartz/: Use freq_deltas to update the stats in the first
	  chunk of each postlist.

Mon Jan 05 16:00:07 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/enquire.h: Made the TradWeight constructor explicit.
	  This is technically an API change as before you could pass a
	  double where a Xapian::Weight was required - now you must pass
	  Xapian::TradWeight(2.0) instead of 2.0.  That seems desirable, and
	  it's unlikely any existing code will be affected.

Mon Jan 05 15:08:26 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/: Added "explicit" qualifier to internal ctors
	  which take a single parameter.

Mon Jan 05 15:04:12 GMT 2004  Olly Betts <olly@survex.com>

	* include/xapian/base.h: Assigning a normal pointer to a RefCntPtr no
	  longer creates a temporary RefCntPtr from it.

Thu Dec 25 05:49:03 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Changed to merge a batch of
	  changes into a posting list in one pass.

Thu Dec 25 05:48:09 GMT 2003  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Some minor improvements.

Thu Dec 25 05:39:57 GMT 2003  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Check returned docids are the expected values in a
	  couple more cases.  Improved wording of a comment.

Thu Dec 25 05:38:43 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_utils.h: Updated explanation of string
	  encoding.

Thu Dec 25 05:37:36 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_values.cc: Fixed problem with dereferencing
	  a pointer to the end of a string in debug output.

Sun Dec 21 23:35:49 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Refactor recently relocated code
	  to reduce duplication.

Sun Dec 21 21:44:07 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Renamed
	  skip_and_check_tname_in_key() to check_tname_in_key() as it doesn't
	  do any sort of skipping!

Sun Dec 21 14:54:49 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc,backends/quartz/quartz_postlist.h,
	  tests/quartztest.cc: Subsumed QuartzPostList::add_entry and
	  QuartzPostList::delete_entry into QuartzPostList::merge_changes.

Sun Dec 21 03:21:42 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,
	  backends/quartz/quartz_postlist.cc,
	  backends/quartz/quartz_postlist.h: Move merging on postlist changes
	  into QuartzPostList in preparation for an efficient
	  reimplementation.

Sun Dec 21 01:47:07 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.h,
	  backends/quartz/quartz_table_entries.h: Fixed typos and incorrect
	  comments.

Sat Dec 20 22:11:26 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/: Removed several needless inclusions of
	  quartz_table_entries.h.

Sat Dec 20 16:31:46 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/,docs/quartzdesign.html: Removed all the quartz
	  lexicon code and docs.  It's been disabled for ages, and we've
	  not missed it.

Sat Dec 20 01:21:47 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.h: Added doxygen comments for the
	  QuartzWritableDatabase members we use to buffer changes.

Sat Dec 20 01:19:10 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Trigger autoflush on
	  totlen_added + totlen_removed rather than specially tracking the
	  number of document add/delete/replace operations.

Fri Dec 19 22:51:26 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/: Buffer up changes to the postlists and apply them
	  all at once (at present they're applied inefficiently, but this is
	  change enables us to apply them with an efficient merge).
	* tests/api_db.cc,tests/quartztest.cc: Added a couple of tests, and
	  commented out some test lines which fail in debug builds.

Sun Dec 14 03:38:55 GMT 2003  Olly Betts <olly@survex.com>

	* common/omdebug.cc: Open debug log with flag O_WRONLY so that we can
	  actually write to it!

Mon Dec 08 01:53:24 GMT 2003  Olly Betts <olly@survex.com>

	* HACKING: Update to mention that building from CVS requires
	  ./configure --enable-maintainer-mode (or use bootstrap).

Mon Dec 01 19:03:00 GMT 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed the "fixed" valgrind test.

Sun Nov 30 23:42:52 GMT 2003  Olly Betts <olly@survex.com>

	* configure.in,testsuite/testsuite.cc: Fix test for valgrind - it
	  wasn't working correctly when valgrind was installed but was too
	  a version to support VALGRIND_COUNT_ERRORS and VALGRIND_COUNT_LEAKS.

Wed Nov 26 16:31:19 GMT 2003  Olly Betts <olly@survex.com>

	* Makefile.am,extra/Makefile.am: Updated libtool -version-info
	  parameters for 0.7.5.

Wed Nov 26 15:32:45 GMT 2003  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.7.5.

Wed Nov 26 15:31:56 GMT 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: Special case stemming language "none".

Tue Nov 25 04:37:50 GMT 2003  Olly Betts <olly@survex.com>

	* api/ompositionlistiterator.cc,api/ompostlistiterator.cc,
	  include/xapian/positioniterator.h,include/xapian/postingiterator.h,
	  tests/api_db.cc: Added missing default ctors for PostingIterator and
	  PositionIterator classes; fixed PositionIterator assignment operator.

Tue Nov 25 03:40:11 GMT 2003  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Fixed 2 compiler warnings.

Tue Nov 25 02:47:16 GMT 2003  Olly Betts <olly@survex.com>

	* common/,include/xapian/: Fixed incorrect doxygen comments which
	  resulted in some missing text in the collated API and internal
	  classes documentation.

Fri Nov 21 03:23:57 GMT 2003  Olly Betts <olly@survex.com>

	* Makefile.am,include/xapian/termiterator.h,api/omtermlistiterator.cc:
	  TermIterator::TermIterator() fix which actually works!

Fri Nov 21 01:14:23 GMT 2003  Olly Betts <olly@survex.com>

	* HACKING,configure.in,docs/Makefile.am,extra/Makefile.am: Change to
	  using AM_MAINTAINER_MODE.  If you're doing development work on
	  Xapian, you should configure with "--enable-maintainer-mode" and
	  ideally use GNU make.

Fri Nov 21 01:13:25 GMT 2003  Olly Betts <olly@survex.com>

	* include/xapian/termiterator.h,tests/api_nodb.cc: Added TermIterator
	  default ctor which had disappeared somehow.  Added regression test.

Thu Nov 20 03:19:37 GMT 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed test for fdatasync to work (I suspect a change
	  in a recent autoconf broke it as it relied on autoconf internal
	  naming).

Tue Nov 18 17:53:29 GMT 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Tweaked workaround for FreeBSD make in VPATH
	  builds.

Tue Nov 18 17:53:01 GMT 2003  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Added another testcase.

Tue Nov 18 17:37:20 GMT 2003  Olly Betts <olly@survex.com>

	* docs/: Added first cut of documentation for Xapian::QueryParser
	  query syntax.
	* docs/scalability.html: Fixed typo.

Fri Oct 31 18:17:13 GMT 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Added support for
	  term prefixes on phrases and expressions (e.g. author:(twain OR poe)
	  subject:"space flight").

Tue Oct 28 15:03:01 GMT 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Added FIXME comment.

Tue Oct 28 15:01:14 GMT 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Removed Java from list of language bindings we'd
	  like to support, as we should have up-to-date Java bindings soon.

Sun Oct 26 20:18:24 GMT 2003  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Fix the name that the meta file gets copied
	  to (was /path/to/dbdirmeta rather than /path/to/dbdir/meta).

Tue Oct 21 22:26:51 BST 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Backed out previous change - the original rule
	  does work, but the build machine had a generated file which stopped
	  the symlink being generated.

Tue Oct 21 22:14:22 BST 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Tweaked rule to symlink queryparser.cc.

Tue Oct 21 17:31:10 BST 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Added rule to symlink queryparser.cc from source
	  tree to build tree - otherwise FreeBSD's make insists on
	  regenerating it...

Wed Oct 08 14:04:44 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/.cvsignore,tests/Makefile.am,testsuite/.cvsignore:
	  Updated to reflect move of libbtreecheck.la from backends/quartz
	  to testsuite.

Wed Oct 08 13:22:08 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Don't pass mode argument to open when we
	  aren't specifying O_CREAT.

Thu Oct 02 15:29:38 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Another entry for omega for 0.7.4.

Thu Oct 02 14:57:25 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,extra/Makefile.am: Version 0.7.4.

Thu Oct 02 14:56:36 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Improved wording in a few places.

Thu Oct 02 14:39:49 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Thu Oct 02 13:35:46 BST 2003  Olly Betts <olly@survex.com>

	* xapian.spec.in: Don't hardcode the shared library versioning info.

Wed Oct 01 13:51:15 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated - Solaris 8 + Sun Workshop C++ doesn't actually
	  pass "make check" (I forgot the tinderbox builds omega before "make
	  check").

Tue Sep 30 21:39:20 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Another stab at fixing the test for -lsocket.

Tue Sep 30 18:29:31 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Quote arguments to test in a couple of places.

Tue Sep 30 11:20:09 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed test for -lsocket.

Tue Sep 30 10:17:09 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated - Solaris 8 + Sun Workshop C++ builds and passes
	  "make check" (but Omega fails to build).

Mon Sep 29 00:41:19 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed dependency libs for libxapian.

Sun Sep 28 23:55:49 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,backends/quartz/Makefile.am,
	  backends/quartz/btreecheck.cc,backends/quartz/btreecheck.h,
	  bin/Makefile.am,testsuite/Makefile.am,testsuite/btreecheck.cc,
	  testsuite/btreecheck.h: libbtreecheck.la now has an explicit
	  dependency on libxapian.la.

Sun Sep 28 17:29:55 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,configure.in: Tell libtool about any libraries which
	  libxapian needs to depend on.

Fri Sep 26 09:39:29 BST 2003  Olly Betts <olly@survex.com>

	* bin/Makefile.am: Swap order of libbtreecheck.la and libxapian.la
	  when linking quartzcheck to see if that gets it to work with
	  Sun's CC.

Thu Sep 25 17:25:17 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Fixed stupid mistake in previous check-in.

Thu Sep 25 16:50:00 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Link with libxapianqueryparser before libxapian,
	  since that's the dependency order.

Thu Sep 25 16:43:20 BST 2003  Olly Betts <olly@survex.com>

	* include/om/om.h: Updated comment about why we `#include <iostream>'.

Thu Sep 25 13:13:37 BST 2003  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,backends/database.cc,common/omdebug.cc,
	  common/omstringstream.h,include/xapian/output.h: Removed or replaced
	  uses of <iostream> and <iosfwd> - we don't need or want the library
	  to pull in cin and friends.

Thu Sep 25 13:12:31 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Improved several comments.

Thu Sep 25 11:57:03 BST 2003  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Removed `#include <iostream>' left over from
	  debugging; changed to `using namespace std;'.

Mon Sep 15 00:41:10 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: Fixed to build with Sun's C++ compiler.

Thu Sep 11 03:35:29 BST 2003  Olly Betts <olly@survex.com>

	* dummy.c,dummy.cc,Makefile.am: Change the default file to be C++ so
	  that automake tells libtool that this is a C++ library.
	* Makefile.am: Pass -no-undefined to libtool so that it will build
	  a DLL on MS Windows.

Wed Sep 10 02:53:46 BST 2003  Olly Betts <olly@survex.com>

	* docs/scalability.html: Fixed oops (32GB should be 32TB);  Added
	  note about Linux 2.4 and ext2 filesize limits.

Tue Sep 09 03:36:05 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: don't start the document's
	  TermIterator from scratch on every iteration in replace_document().
	  Should be a small performance win.

Sun Sep 07 22:17:27 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed check for socketpair - we were automatically
	  disabling the remote backend on platforms where socketpair is
	  in libsocket (such as Solaris).

Sun Sep 07 19:56:57 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Added success report for cygwin from Eric B. Ridge.

Sun Sep 07 03:53:48 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Also need to rerun test if it "probably
	  leaked".

Sun Sep 07 03:51:37 BST 2003  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Use x & (x - 1) trick to check for x being a power
	  of 2, rather than an elaborate loop with shifting; use Xapian::docid
	  rather than "int" and "unsigned int".

Sun Sep 07 02:24:06 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Fixed small memory leak if
	  Xapian::Enquire::set_query() is called more than once.

Sun Sep 07 02:12:47 BST 2003  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h,include/xapian/enquire.h: Fixed
	  Xapian::ESet to have reference counted internals
	* Makefile.am: bumped libxapian version-info to 1:0:0 because of this.

Sun Sep 07 02:09:50 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Delete any buffered test output before
	  asking valgrind to check for leaks, as otherwise the buffered
	  output may be reported as a leak; also fixed |= to != in several
	  places - a cosmetic bug which lead to extra newlines after test
	  output.

Sun Sep 07 00:09:32 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Actually open temporary file for valgrind
	  to log to.

Sat Sep 06 20:50:58 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,testsuite/testsuite.cc: Fixed up detection of valgrind
	  and testsuite code to use it.

Sat Sep 06 20:48:17 BST 2003  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Reinstated non-superfluous `/'s which I had
	  overeagerly removed!

Sat Sep 06 17:28:00 BST 2003  Olly Betts <olly@survex.com>

	* matcher/Makefile.am: Ship networkmatch.cc even if "make dist" is run
	  from a tree with the remote backend disabled.

Thu Aug 28 00:01:22 BST 2003  Olly Betts <olly@survex.com>

	* tests/btreetest.cc: Removed superfluous `/'s from constructed paths.

Fri Aug 15 15:12:24 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with current testsuite results for mingw build.

Fri Aug 15 15:10:59 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Use O_BINARY for database I/O if it
	  exists.

Fri Aug 15 15:10:30 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h: mkdir() only takes one argument on mingw.

Fri Aug 15 01:26:22 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h,testsuite/backendmanager.cc: Touch file using
	  open() rather than system().

Fri Aug 15 01:06:06 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h: Fixed parameter name of system from "filename" to
	  "command" (cosmetic change).

Thu Aug 14 22:31:23 BST 2003  Olly Betts <olly@survex.com>

	* net/progclient.cc: Tidied a little.

Tue Aug 12 12:50:19 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Pass 0 for the lexicon/postlist
	  table when creating a termlist just to find the doc length.

Tue Aug 12 02:08:50 BST 2003  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/omdocument.cc,common/documentterm.h:
	  Removed unused OmDocumentTerm::termfreq member variable.

Tue Aug 12 00:53:02 BST 2003  Olly Betts <olly@survex.com>

	* api/omdocument.cc,common/documentterm.h: OmDocumentTerm ctor now
	  takes wdf, and replaced set_wdf() with inc_wdf() and dec_wdf().

Mon Aug 11 16:11:26 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_entries.cc: Removed rather unnecessary
	  use of const_cast.

Mon Aug 11 16:11:05 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table.cc: Removed unused variable.

Mon Aug 11 16:09:57 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Fixed typo in comment.

Mon Aug 11 15:51:20 BST 2003  Olly Betts <olly@survex.com>

	* tests/quartztest.cc: adddoc2 now checks that there weren't any extra
	  values created.

Mon Aug 11 12:55:49 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Sorted out tests for gethostbyname and gethostbyaddr
	  using standard autoconf macros.

Mon Aug 11 12:05:13 BST 2003  Olly Betts <olly@survex.com>

	* common/match.h,matcher/: Removed unused open_document() method from
	  SubMatch and derived classes; calls made by the matcher to
	  Document::Internal::open_document() now use the lazy flag provided
	  for precisely this purpose, but apparently never used - this should
	  give quite a speed boost to any matcher options which use values
	  (e.g. sort, collapse).

Sun Aug 10 02:25:59 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Out of curiosity, I tried to build with a Linux->DJGPP
	  cross-compiler I had to hand.  It built (just had to disable the
	  remote backend if socketpair isn't found and add the workaround for
	  not having snprintf).

Sun Aug 10 01:38:17 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.cc: Fixed to compile if snprintf isn't available.

Sun Aug 10 01:37:44 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Fixed "initialisation reordered" warning.

Sun Aug 10 01:26:58 BST 2003  Olly Betts <olly@survex.com>

	* acinclude.m4: Updated in line with previous change.

Sun Aug 10 01:00:08 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: If fork is found, but socketpair isn't, automatically
	  disable the remote backend rather than configure dying with an
	  error.
	* autoconf/: Removed various unused autoconf macros.

Sat Aug 09 23:57:44 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.h: Made "overwritten" protected.

Sat Aug 09 23:45:26 BST 2003  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Wrapped an overlong line.

Sat Aug 09 23:31:30 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/quartz_table.cc,docs/quartzdesign.html:
	  Improved class Btree's encapsulation.

Sat Aug 09 22:30:13 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Fixed a few typos.

Sat Aug 09 22:29:52 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with results from the Tinderbox.

Sat Aug 09 22:19:12 BST 2003  Fabrice Colin

	* xapian.spec.in: Updated RPM packaging to reflect changes in 0.7.3.

Fri Aug 08 01:38:40 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,configure.in,extra/Makefile.am: Version 0.7.3.

Fri Aug 08 01:35:04 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Fri Aug 08 01:34:29 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with more tinderbox results.

Wed Aug 06 16:27:34 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Noted that libtool 1.5 is the first version to actually
	  support linking C++ libraries properly.

Wed Aug 06 16:25:15 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,net/socketcommon.cc,common/omenquireinternal.h:
	  Moved rset serialisation into a method of RSet::Internal, so
	  omrset_to_string() is now just glue code.  This eliminates the
	  need for it to be a friend of RSet::Internal which Sun's C++
	  compiler didn't seem to be able to cope with.

Wed Aug 06 01:57:11 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Applied patch from Olivier Galibert to fix
	  MSetIterator::get_document() when get_mset() was called with
	  first != 0.
	* tests/api_db.cc: Added regression test (msetiterator3).

Mon Aug 04 12:40:25 BST 2003  Olly Betts <olly@survex.com>

	* languages/Makefile.am: Fixed compilation for compilers other than
	  GCC.

Wed Jul 30 17:03:14 BST 2003  Olly Betts <olly@survex.com>

	* common/getopt.h: Another try - the previous one failed on FreeBSD.

Wed Jul 30 15:07:58 BST 2003  Olly Betts <olly@survex.com>

	* common/getopt.h: Another iteration of the getopt C++ prototype fix
	  as the previous one failed on Solaris.

Wed Jul 30 02:38:47 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Fixed breakage caused by remotetest
	  cleanup.

Tue Jul 29 13:22:20 BST 2003  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: Cleaned up uses of
	  BackendManager::get_database() to pass a string rather than a vector
	  with one string in.

Tue Jul 29 11:58:21 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testutils.cc: Added output of const vector<unsigned int>
	  for platforms which use our internal stringstream implementation.

Tue Jul 29 11:42:54 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with results from the tinderbox.

Tue Jul 29 01:21:53 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc,testsuite/testsuite.h: Only use \r in test
	  output if the output is a tty.

Mon Jul 28 23:56:10 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Fixed fix of --cxxflags for uninstalled VPATH
	  builds.

Mon Jul 28 23:37:15 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Increased default timeout used by
	  tests running on the remote backend from 10 seconds to 5 minutes
	  to avoid tests failing just because the machine running them is
	  slow and/or busy.

Mon Jul 28 15:41:12 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testutils.h: Fixed check for broken exception handling
	  - we were getting "Xapian::" prefixed to one version and not on the
	  other.

Mon Jul 28 15:34:54 BST 2003  Olly Betts <olly@survex.com>

	* tests/runtest.in: Set srcdir if it isn't already to make it easy
	  to manually run test programs from a VPATH build.

Mon Jul 28 10:38:04 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Fixed --cxxflags for uninstalled VPATH builds.

Mon Jul 28 10:37:17 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated FreeBSD success report.

Sun Jul 27 16:01:25 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Explicitly remove include/xapian/version.h from
	  APIDOC_SRC to avoid us trying to run doxygen unnecessarily.

Sun Jul 27 14:31:36 BST 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Assorted updates.

Sun Jul 27 13:02:36 BST 2003  Olly Betts <olly@survex.com>

	* extra/.cvsignore: We still create libomqueryparser.la for backward
	  compatibility.

Sun Jul 27 04:56:40 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in,m4/xapian.m4: Added --from-xo-lib-xapian option
	  to xapian-config for use by XO_LIB_XAPIAN to allow us to give a
	  more helpful error message if asked to link an uninstalled
	  libxapian.

Sun Jul 27 04:46:48 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Fixed --cxxflags in non-installed case.
	  Tidied up --help output and error messages.

Sun Jul 27 01:40:39 BST 2003  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Check termfreq in allterms4.

Sun Jul 27 01:39:57 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Fixed for relocated queryparser.h.

Sun Jul 27 00:59:56 BST 2003  Olly Betts <olly@survex.com>

	* .cvsignore,backends/quartz/.cvsignore,extra/.cvsignore: Updated.

Sun Jul 27 00:19:11 BST 2003  Olly Betts <olly@survex.com>

	* tests/Makefile.am: Oops, failed to remove btreecheck.cc reference
	  in previous check-in.

Sat Jul 26 23:36:01 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am,bin/Makefile.am,tests/Makefile.am:
	  Hopefully fixed "make dist" in VPATH builds.

Sat Jul 26 22:58:27 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am: Need to distribute btreecheck.cc.

Sat Jul 26 20:05:47 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in,extra/Makefile.am,extra/queryparser.h,
	  extra/queryparser.yy,extra/xapian/queryparser.h: Sorted out
	  xapian-config so it handles using QueryParser too.

Sat Jul 26 19:03:04 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Updated logic in --libs and --cxxflags in line
	  with recent change in --ltlibs.

Sat Jul 26 18:31:11 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.in: Reworked logic for finding libxapian.la in
	  --ltlibs - it may not yet exist in the non-installed case.
	* m4/xapian.m4: Don't pass --libs when checking if xapian-config
	  works as it will fail in the non-installed case.

Sat Jul 26 01:25:46 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Fri Jul 25 10:20:18 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated in preparation for 0.7.3 release.

Thu Jul 24 23:20:14 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_alltermslist.cc,
	  backends/quartz/quartz_alltermslist.h,tests/api_db.cc:
	  Fixed allterms TermIterator to not give duplicate terms with a
	  quartz database when a posting list is chunked; added regression
	  test (allterms4).

Mon Jul 21 15:06:59 BST 2003  Richard Boulton <richard@tartarus.org>

	* include/xapian/enquire.h: Fix incorrect documentation comment
	  for Enquire::set_set_forward().  (Looked like a cut&paste error)

Mon Jul 21 01:10:55 BST 2003  Olly Betts <olly@survex.com>

	* docs/install.html,m4/xapian.m4: Added XO_LIB_XAPIAN to replace
	  OM_PATH_XAPIAN.  XO_LIB_XAPIAN will automagically enable use of
	  "xapian-config --ltlibs" if A[CM]_PROG_LIBTOOL is used in
	  configure.in.

Sun Jul 20 16:00:43 BST 2003  Olly Betts <olly@survex.com>

	* .cvsignore,Makefile.am,configure.in,xapian-config.in,
	  xapian-config.nodep.in: Reworked xapian-config so that it
	  now supports linking with libtool - using libtool means that the
	  run-time library path is set and that you can now link with an
	  uninstalled libxapian.  Also xapian-config will now work
	  once configure is run, rather than only after "make all".

Thu Jul 17 01:42:47 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc,backends/quartz/btree.cc: Check for
	  EINTR when reading or writing blocks and retry the operation.

Thu Jul 17 00:56:35 BST 2003  Olly Betts <olly@survex.com>

	* COPYING: Updated FSF address, and reinstated missing section: "How
	  to Apply These Terms to Your New Programs"

Thu Jul 17 00:48:40 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,bootstrap: Removed bootstrap in favour of top-level
	  bootstrap.

Mon Jul 14 23:36:14 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated some linux results: RH7.3 on x86, and Debian on
	  alpha and arm.

Mon Jul 14 23:33:17 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,Makefile.am,extra/Makefile.am: Added versioning
	  information to libxapian and libomqueryparser.

Mon Jul 14 23:32:15 BST 2003  Olly Betts <olly@survex.com>

	* bin/quartzdump.cc,testsuite/testsuite.cc: Added long option support
	  to quartzdump, and to the testsuite programs.

Mon Jul 14 22:45:53 BST 2003  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Changed test exception1 to actually test
	  something (hopefully what was originally intended!)

Mon Jul 14 17:15:28 BST 2003  Olly Betts <olly@survex.com>

	* common/getopt.h: #include <stdlib.h> before defining getopt as a
	  macro - hopefully that'll avoid problems with clobbering prototypes
	  of getopt() in system headers.

Sat Jul 12 09:15:26 BST 2003  Olly Betts <olly@survex.com>

	* bin/quartzcompact.cc: Need stdio.h for rename().

Sat Jul 12 01:11:54 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Noted another reason why libtool 1.5 is needed.

Sat Jul 12 01:11:08 BST 2003  Olly Betts <olly@survex.com>

	* docs/mkdoc.pl: Don't choke on a comment at the end of the
	  DIST_SUBDIRS line in a Makefile.am.

Fri Jul 11 22:00:36 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Added note about additional tools needed for building a
	  distribution.

Fri Jul 11 15:13:08 BST 2003  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.7.2.

Fri Jul 11 12:36:18 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated in preparation for 0.7.2.

Fri Jul 11 12:12:40 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Fixed test for snprintf.

Fri Jul 11 09:37:14 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Fixed dereference of a NULL pointer which
	  was happening when a test threw an unexpected exception.

Fri Jul 11 09:31:40 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Backed out incorrect hunk of previous
	  patch which was causing test failures.

Fri Jul 11 01:48:21 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_manager.cc,tests/quartztest.cc,
	  testsuite/backendmanager.cc: Tidying up around directory creation.

Fri Jul 11 00:57:12 BST 2003  Olly Betts <olly@survex.com>

	* include/xapian/database.h: Document that the directory is created.

Fri Jul 11 00:53:59 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_manager.cc: When asked to create a
	  quartz database, try to create the directory if it doesn't already
	  exist.  Then we don't have to do it in every single Xapian program
	  which wants to create a database...

Fri Jul 11 00:36:00 BST 2003  Olly Betts <olly@survex.com>

	* common/getopt.h: Removed space between \ and newline.

Fri Jul 11 00:32:40 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Added MacOS X 10.2 success report.

Thu Jul 10 20:05:58 BST 2003  Olly Betts <olly@survex.com>

	* common/getopt.h: Fixed to work better with C++ compilers on
	  non-glibc platforms.

Thu Jul 10 19:21:00 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Modified setting of _XOPEN_SOURCE to
	  actually work!

Thu Jul 10 19:19:30 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Defined _XOPEN_SOURCE=500 for GLIBC
	  so we get pread() and pwrite().

Thu Jul 10 00:28:25 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,configure.in,bindings/.cvsignore,
	  bindings/Makefile.am,bindings/dir_contents,bindings/guile/.cvsignore,
	  bindings/guile/Makefile.am,bindings/php4/.cvsignore,
	  bindings/php4/ABOUT,bindings/php4/Makefile.am,bindings/python/,
	  bindings/swig/,bindings/tcl8/.cvsignore,bindings/tcl8/Makefile.am,
	  docs/todo.xml: Removed bindings - they'll shortly reappear in a
	  separate module named xapian-bindings.

Thu Jul 10 00:03:04 BST 2003  Olly Betts <olly@survex.com>

	* bindings/swig/om_util_perl5.i: Removed.

Wed Jul 09 15:35:56 BST 2003  Olly Betts <olly@survex.com>

	* bindings/guile/Makefile.am,bindings/php4/Makefile.am,
	  bindings/python/Makefile.am,bindings/swig/,
	  bindings/tcl8/Makefile.am: Removed omtypes.i and merged omstem.i
	  into xapian.i; added forward declaration for upwrapped classes
	  to xapian.i.

Wed Jul 09 15:34:11 BST 2003  Olly Betts <olly@survex.com>

	* bindings/java/,bindings/java/com/muscat/om/,bindings/java/native/:
	  Removed old Java bindings - we'll do them using SWIG instead.

Wed Jul 09 14:51:51 BST 2003  Olly Betts <olly@survex.com>

	* bindings/php4/Makefile.am,bindings/php4/xapian/.cvsignore: More
	  work on the php4 bindings.

Wed Jul 09 03:00:17 BST 2003  Olly Betts <olly@survex.com>

	* bindings/guile/Makefile.am,bindings/python/Makefile.am,
	  bindings/tcl8/Makefile.am: Worked towards getting guile and tcl8
	  bindings up-to-date.
	* bindings/php4/.cvsignore: Ignore the whole xapian subdirectory.

Wed Jul 09 02:37:12 BST 2003  Olly Betts <olly@survex.com>

	* bindings/perl5/: Removed remaining files.

Wed Jul 09 02:30:55 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,bindings/Makefile.am,bindings/php4/Makefile.am:
	  Working towards getting the php4 bindings functional again.

Wed Jul 09 01:27:39 BST 2003  Olly Betts <olly@survex.com>

	* bindings/swig/om_util_php4.i: om_termname -> std::string.

Wed Jul 09 01:25:11 BST 2003  Olly Betts <olly@survex.com>

	* docs/overview.html,include/xapian/base.h,include/xapian/database.h:
	  Improvements to doxygen-generated documentation.

Wed Jul 09 01:23:55 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,docs/todo.xml: Added check for SWIG version (require
	  at least 1.3.14).

Tue Jul  8 20:59:08 2003  James Aylett  <james@tartarus.org>

	* common/utils.h: missing #include <ctype.h>

Tue Jul  8 18:06:23 2003  James Aylett  <james@tartarus.org>

	* bindings/swig/xapian.i: over-enthusiastic automatic
	  conversion of termname to std::string

Tue Jul 08 17:45:16 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h: Improved mingw implementation of rmdir().

Tue Jul 08 17:43:21 BST 2003  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.7.1.

Sun Jul 06 21:35:08 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Minor tweak.

Sun Jul 06 21:34:30 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h: Compile fixes for mingw.

Sun Jul 06 17:59:26 BST 2003  Olly Betts <olly@survex.com>

	* docs/scalability.html: Fixed typo.

Sun Jul 06 13:02:09 BST 2003  Olly Betts <olly@survex.com>

	* docs/scalability.html: Fixed typo.

Sun Jul 06 12:56:08 BST 2003  Olly Betts <olly@survex.com>

	* docs/Makefile.am,docs/index.html,docs/scalability.html: Added new
	  document on Xapian's scalability.

Sun Jul 06 12:15:34 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/: Made quartz block count unsigned, which should
	  nearly double the size of database for a given block size.

Sun Jul 06 11:47:46 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/: Use BLK_UNUSED rather than literal -1.

Sun Jul 06 11:47:14 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h: Fixed last check-in to compile.

Sun Jul 06 11:01:03 BST 2003  Olly Betts <olly@survex.com>

	* common/utils.h,tests/btreetest.cc,tests/quartztest.cc,
	  testsuite/backendmanager.cc: Replaced system("rm -rf ...") with
	  rmdir() function and added two ms windows implementations for
	  Sam to try.

Sat Jul 05 10:37:35 BST 2003  Olly Betts <olly@survex.com>

	* getopt/getopt.c: Suppress "unused variable" warnings from getopt.c.

Sat Jul 05 02:21:11 BST 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sat Jul 05 02:09:06 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,backends/quartz/btree.cc: Use pread() and pwrite() if
	  available - this avoids one syscall per block read/write.

Fri Jul 04 22:05:14 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Added results from building 0.7.0 on my Linux dev box.

Fri Jul 04 18:52:07 BST 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Distribute symboltab.h.

Fri Jul 04 18:04:53 BST 2003  Olly Betts <olly@survex.com>

	* common/Makefile.am: Distribute documentterm.h.

Fri Jul 04 15:30:28 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Disabled guile, tcl8, and php4 here as well as in
	  bindings/Makefile.am.

Fri Jul  4 11:27:53 2003  James Aylett  <james@tartarus.org>

	* bindings/Makefile.am: change commenting so mkdoc.pl doesn't
	  choke

Fri Jul  4 10:51:04 2003  James Aylett  <james@tartarus.org>

	* bootstrap: add missing ';;' as case pattern delimiter

Thu Jul 03 23:46:14 BST 2003  Olly Betts <olly@survex.com>

	* bindings/Makefile.am,bindings/python/Makefile.am: Fixed to work with
	  "make dist".

Thu Jul 03 23:29:06 BST 2003  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.7.0.

Thu Jul 03 22:57:22 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated (Linux GCC 2.95 and Linux to mingw cross).

Thu Jul 03 22:55:54 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Allow more than one
	  adjacent phrase generating character.

Thu Jul 03 22:12:18 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Always ignore phrase
	  generating characters at start and end of query.

Thu Jul 03 21:02:10 BST 2003  Olly Betts <olly@survex.com>

	* extra/Makefile.am: Fixed for mingw compile.

Thu Jul 03 19:24:50 BST 2003  Olly Betts <olly@survex.com>

	* buildall,docs/OMAims: Removed unwanted old files.

Thu Jul 03 19:18:41 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/runquartztest: Obsolete, so removed.

Thu Jul 03 01:26:03 BST 2003  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h: Fix for building with GCC 3.3.

Thu Jul 03 01:02:54 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Wed Jul 02 22:18:07 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/bcursor.cc,backends/quartz/bcursor.h:
	  Made Bcursor::get_key(string * key) const.

Wed Jul 02 21:51:43 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/: Workaround for shared_level problem turns out to
	  be arguably the better approach, so made it permanent and tidied up
	  code.

Mon Jun 23 21:39:50 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated in preparation for 0.7.0 release.

Mon Jun 23 21:18:23 BST 2003  Olly Betts <olly@survex.com>

	* extra/omparsequery.h: Corrected include protection token comment on
	  #endif to match that used in the #ifdef.

Mon Jun 23 21:10:33 BST 2003  Olly Betts <olly@survex.com>

	* bootstrap: Check for Bison 1.875 which doesn't work with Xapian.

Mon Jun 23 21:08:35 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Automake 1.7 works reliably with Xapian; CFLAGS=-Werror can
	  now be used as we suppress the warnings from the Snowball generated
	  C code.

Mon Jun 23 16:55:54 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,backends/quartz/,
	  bindings/swig/om_util_python.i,bindings/swig/xapian.i,common/,
	  include/Makefile.am,include/xapian.h,include/om/om.h,include/xapian/,
	  matcher/localmatch.h,matcher/phrasepostlist.h,tests/api_db.cc,
	  tests/api_posdb.cc,tests/quartztest.cc:
	  Xapian::Xapian::PostListIterator -> Xapian::PostingIterator;
	  Xapian::PositionListIterator -> Xapian::PositionIterator;
	  xapian/postlistiterator.h -> xapian/postingiterator.h;
	  xapian/positionlistiterator.h -> xapian/positioniterator.h.

Mon Jun 23 15:31:30 BST 2003  Olly Betts <olly@survex.com>

	* backends/database.cc,backends/inmemory/inmemory_database.h,
	  backends/muscat36/,backends/quartz/,bindings/python/Makefile.am,
	  bindings/swig/om_util.i,bindings/swig/omstem.i,docs/quickstart.html,
	  docs/todo.xml,include/xapian/database.h,include/xapian/enquire.h,
	  include/xapian/errortypes.h,tests/api_db.cc,tests/quartztest.cc,
	  testsuite/backendmanager.cc,testsuite/textfile_indexer.cc:
	  Xapian::OpeningError renamed to Xapian::DatabaseOpeningError.
	* include/om/om.h: OmOpeningError now maps to
	  Xapian::DatabaseOpeningError.

Mon Jun 23 01:44:45 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/inmemory/inmemory_database.cc,
	  backends/muscat36/da_database.cc,backends/muscat36/db_database.cc,
	  backends/net/net_database.cc,backends/net/net_termlist.cc,
	  backends/net/net_termlist.h,backends/quartz/,bin/omprogsrv.cc,
	  bin/quartzdump.cc,common/,include/xapian/error.h,
	  include/xapian/errorhandler.h,matcher/emptymatch.h,net/,
	  tests/quartztest.cc,tests/stemtest.cc,testsuite/testsuite.cc,
	  testsuite/textfile_indexer.cc: Use '#include <...>' for headers
	  in include/.

Thu Jun 19 17:55:07 BST 2003  Olly Betts <olly@survex.com>

	* common/netserver.h,common/socketserver.h,matcher/localmatch.cc,
	  matcher/multimatch.cc,net/socketserver.cc: Removed unused header
	  inclusion; pass Stats and Xapian::Database by const reference, not
	  value.

Thu Jun 19 14:50:49 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/symboltab.h: Force control characters to
	  spaces; Added note that accent normalisation is perhaps done at the
	  wrong time...

Thu Jun 19 14:40:36 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Added test for control characters.

Thu Jun 19 14:31:12 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Added checks for weird whitespace in
	  queries.

Wed Jun 18 19:02:14 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: Reworked parsing of boolean operators to
	  improve error reporting.
	* extra/queryparsertest.cc: Added 2 more testcases and fixed to better
	  handle tests for expected errors.

Wed Jun 18 19:00:55 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: Trim leading and trailing whitespace before
	  attempting to parse the query.

Wed Jun 18 17:58:56 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy: `using namespace Xapian;'

Fri Jun 06 01:33:33 BST 2003  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Commented out the section on the Lexicon,
	  which we no longer use.

Thu Jun 05 22:40:21 BST 2003  Olly Betts <olly@survex.com>

	* bindings/python/.cvsignore,bindings/python/Makefile.am,
	  bindings/python/dothemake.txt,bindings/swig/om_util_python.i:
	  Cleaned up building of python bindings by making better use of
	  automake.

Thu Jun 05 22:17:40 BST 2003  Olly Betts <olly@survex.com>

	* languages/Makefile.am: Reenable standard warnings apart from the
	  -Wunused.

Thu Jun 05 20:21:08 BST 2003  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc: Fixed a couple of problems with the new
	  query serialisation.

Thu Jun 05 17:55:21 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,configure.in: Flex is no longer used, so removed configure
	  tests and note in HACKING.

Thu Jun 05 17:53:30 BST 2003  Olly Betts <olly@survex.com>

	* tests/remotetest.cc: In test netexpand1, use TEST() rather than
	  Assert() so that the check is made in non-debug builds too.

Thu Jun 05 17:52:17 BST 2003  Olly Betts <olly@survex.com>

	* api/omqueryinternal.cc,common/socketcommon.h,docs/todo.xml,
	  include/xapian/query.h,net/: Reworked query serialisation so that
	  the code is now all in api/omqueryinternal.cc.  Serialisation is
	  now rather more compact and no longer relies on flex for parsing.

Thu Jun 05 17:45:00 BST 2003  Olly Betts <olly@survex.com>

	* bin/Makefile.am: omprogsrv depends on libtest.la, so it need to be
	  in check_PROGRAMS.

Thu Jun 05 17:09:10 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Moved bindings after extra in SUBDIRS - the bindings
	  wrap Xapian::QueryParser so they need to be built after it.

Thu Jun 05 01:28:01 BST 2003  Olly Betts <olly@survex.com>

	* bindings/python/Makefile.am: Use $(SWIG) (as detected by configure).

Thu Jun 05 00:46:16 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,bindings/Makefile.am,bindings/python/Makefile.am:
	  Check for python and find the correct paths for building python
	  bindings; Added dependencies for building _xapian.so.

Wed Jun  4 17:19:37 2003  James Aylett  <james@tartarus.org>

	* configure.in, Makefile.am, bindings: build system will build
	  bindings as part of normal build process.  No longer build
	  Perl or Java bindings; for Perl, use Search::Xapian; Java will
	  be replaced with SWIG-based bindings.

	* bindings: bindings now use Xapian:: namespace names rather than
	  the old Om* ones. Almost all of the API should now be wrapped.

Wed Jun 04 02:52:38 BST 2003  Olly Betts <olly@survex.com>

	* docs/overview.html: Added start of "Design Principles" section.
	* docs/todo.xml: Added a couple more items.

Wed Jun 04 02:51:56 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Build testsuite later - it now doesn't need to be built
	  until just before tests.

Wed Jun 04 02:43:08 BST 2003  Olly Betts <olly@survex.com>

	* backends/muscat36/: Split up spec into comments in the appropriate
	  header files; fixed to build after recent Om -> Xapian changes.

Wed Jun 04 01:56:46 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Bison 1.75 and 1.875a both checked with parsequery.yy
	  - no problems found.

Mon Jun 02 20:14:22 BST 2003  Olly Betts <olly@survex.com>

	* ChangeLog.0: Fixed 2 typos.

Mon Jun 02 20:09:01 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated in preparation for 0.7.0 release.

Mon Jun 02 16:25:18 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Fix m4 quoting so that MINOR_VERSION is set correctly.

Mon Jun  2 15:22:30 2003  James Aylett  <james@tartarus.org>

	* bindings/swig/xapian.i: move QueryParser wrapping to use
	  the new namespace location, and fix include so it can work
	  out of the build directory rather than just the installed
	  library

Mon Jun 02 14:15:14 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,configure.in,bindings/Makefile.am,docs/todo.xml:
	  Added --enable-bindings to configure - if this is specified and
	  swig is detected, try to build the language bindings.

Mon Jun 02 12:46:18 BST 2003  Olly Betts <olly@survex.com>

	* backends/database.cc: Fixed parsing of port number in remote stub
	  databases.

Sat May 31 15:03:47 BST 2003  James Aylett  <james@tartarus.org>

	* bindings/swig: update so can build Python bindings against
	  latest Xapian; untested, and other languages are likely to
	  fail

Fri May 30 02:59:48 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Embedded '.' is
	  now a phrase maker; Ignore `""' in query; Ignore ')' at start
	  of query.

Fri May 30 01:22:49 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparsertest.cc: Added another 405 queries which fail to
	  parse (courtesy of Arjen van der Meijden).

Thu May 29 19:08:28 BST 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml,extra/queryparsertest.cc: Extracted two more
	  queryparser testcases which need fixing from the old todo list.

Thu May 29 17:14:04 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: A phrasemaker isn't
	  a phrasemaker unless it's preceded by an alphanumeric, "+", or "-";
	  If a single term is in (), ignore the ().

Thu May 29 16:45:39 BST 2003  Olly Betts <olly@survex.com>

	* extra/queryparser.yy,extra/queryparsertest.cc: Improved handling
	  of various odd queries encountered in real life applications.

Thu May 29 01:50:51 BST 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated more.

Thu May 29 01:26:50 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/database.cc,backends/inmemory/,backends/multi/,
	  backends/muscat36/,backends/net/,backends/quartz/,common/,
	  docs/overview.html,docs/quickstart.html,
	  docs/quickstartexpand.cc.html,extra/queryparser.yy,include/om/om.h,
	  include/xapian/,matcher/,net/,tests/api_db.cc,tests/api_posdb.cc,
	  tests/quartztest.cc,testsuite/: Converted remaining om_xxx types
	  to Xapian::xxx.

Wed May 28 23:06:18 BST 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Wed May 28 22:59:17 BST 2003  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Spelling correction: accross -> across.

Wed May 28 20:24:32 BST 2003  Olly Betts <olly@survex.com>

	* extra/: OmQueryParser -> Xapian::QueryParser, etc.

Wed May 28 20:03:48 BST 2003  Olly Betts <olly@survex.com>

	* api/omdocument.cc: Removed include of defunct header
	  modifieddocument.h.

Wed May 28 20:00:56 BST 2003  Olly Betts <olly@survex.com>

	* api/maptermlist.h,api/omdocument.cc,api/omvalueiterator.cc,
	  backends/inmemory/inmemory_document.cc,
	  backends/inmemory/inmemory_document.h,backends/muscat36/,
	  backends/net/net_document.cc,backends/net/net_document.h,
	  backends/quartz/quartz_document.cc,backends/quartz/quartz_document.h,
	  common/Makefile.am,common/document.h,common/modifieddocument.h,
	  include/xapian/document.h,tests/api_db.cc: Fixed bug in refactored
	  Xapian::Document when modifying a copy.  Added regression test.

Wed May 28 19:23:26 BST 2003  Olly Betts <olly@survex.com>

	* common/omenquireinternal.h,include/xapian/database.h,
	  include/xapian/enquire.h,include/xapian/query.h: Where possible,
	  declare classes rather than including headers (in public headers).

Wed May 28 17:32:14 BST 2003  Olly Betts <olly@survex.com>

	* include/xapian/document.h: Just declare "class TermIterator;" rather
	  than including <xapian/termiterator.h>.

Tue May 27 16:59:34 BST 2003  Olly Betts <olly@survex.com>

	* common/progserver.h,common/socketserver.h,net/socketserver.cc:
	  Reduced needless header inclusion.

Tue May 27 16:53:40 BST 2003  Olly Betts <olly@survex.com>

	* bin/omprogsrv.cc,tests/api_db.cc: Use variable name "dbs" in
	  preference to "dbgrp".  OmDatabaseGroup hasn't existed for
	  years!

Tue May 27 16:51:30 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Fixed typo: "bin" should be "net" in remote_subdirs.

Tue May 27 02:43:32 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am: Removed -I referencing testsuite
	  directory.

Tue May 27 02:39:43 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/,docs/tests.html,tests/: Moved quartztest and
	  btreetest to tests/ directory.

Tue May 27 02:03:07 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,configure.in,xapian.spec.in,backends/quartz/,bin/,
	  docs/remote.html,netprogs/,tests/api_db.cc,tests/remotetest.cc,
	  testsuite/backendmanager.cc,testsuite/testsuite.cc: Sorted out
	  the source tree structure so that programs which aren't tests which
	  were previously built by "make check" are now be built by "make".

Tue May 27 01:01:40 BST 2003  Olly Betts <olly@survex.com>

	* autoconf/dir_contents,backends/dir_contents,
	  backends/inmemory/dir_contents,backends/multi/dir_contents,
	  backends/muscat36/dir_contents,backends/net/dir_contents,
	  backends/quartz/dir_contents,bindings/dir_contents,
	  common/dir_contents,docs/dir_contents,include/om/dir_contents,
	  include/xapian/dir_contents,include/dir_contents,
	  indexer/dir_contents,indexer/indexgraph/dir_contents,
	  languages/dir_contents,m4/dir_contents,tests/dir_contents:
	  Updated all the dir_contents files - many were out-of-date.

Tue May 27 00:42:54 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Filter any .la files out of dependency_libs.

Tue May 27 00:11:18 BST 2003  Olly Betts <olly@survex.com>

	* netprogs/.cvsignore,netprogs/Makefile.am,netprogs/nettest.cc,
	  tests/.cvsignore,tests/Makefile.am,tests/remotetest.cc:
	  netprogs/nettest -> tests/remotetest.

Mon May 26 23:49:49 BST 2003  Olly Betts <olly@survex.com>

	* netprogs/nettest.cc: Removed test tcpclient1 - the functionality it
	  tests is also tested by tcpmatch1, and it introduces dependencies on
	  internal headers.

Mon May 26 22:00:01 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_manager.cc: Give a better error message
	  if asked to open a pre-0.6 Quartz database.

Mon May 26 20:43:21 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,backends/Makefile.am,docs/mkdoc.pl,
	  net/Makefile.am: Fixed to never leave partial files in place of the
	  expected output if a build is interrupted.

Mon May 26 16:50:59 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Added note adapted from an old email noting why compile-time
	  options are generally best avoided.

Mon May 26 12:03:29 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc,testsuite/textfile_indexer.cc: Corrected
	  odd uses of std::string::erase() (instead of `str = str.erase(n, m)'
	  just use `str.erase(n,m)').

Sun May 25 22:59:44 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Sun May 25 22:58:28 BST 2003  Olly Betts <olly@survex.com>

	* languages/Makefile.am: Suppress "unused" warnings in Snowball
	  generated C code.

Sun May 25 21:43:34 BST 2003  Olly Betts <olly@survex.com>

	* api/omtermlistiterator.cc: Removed iostream.h include left over from
	  debugging.

Sun May 25 12:27:11 BST 2003  Olly Betts <olly@survex.com>

	* docs/,extra/omparsequery.h,extra/parsequery.yy,include/Makefile.am,
	  include/xapian.h,include/om/om.h,tests/,testsuite/backendmanager.cc,
	  testsuite/backendmanager.h,testsuite/testutils.h: Created xapian.h
	  header and changed everything to use it.

Sat May 24 23:35:46 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_document.h,
	  backends/quartz/quartz_database.cc,backends/quartz/quartztest.cc,
	  common/,include/Makefile.am,include/om/om.h,
	  include/om/omvalueiterator.h,include/xapian/,
	  testsuite/backendmanager.cc: OmValueIterator -> Xapian::ValueIterator
	  etc.

Fri May 23 15:32:29 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/database.cc,backends/inmemory/,backends/muscat36/,
	  backends/net/net_database.cc,backends/net/net_document.cc,
	  backends/net/net_document.h,backends/quartz/,common/,docs/,
	  include/Makefile.am,include/om/om.h,include/om/omdocument.h,
	  include/om/omvalueiterator.h,include/xapian/,indexer/omindexer.h,
	  matcher/,net/,netprogs/nettest.cc,tests/api_db.cc,tests/api_posdb.cc,
	  tests/internaltest.cc,testsuite/: OmDocument -> Xapian::Document, etc.
	* include/Makefile.am: Fixed library headers to install in xapian and
	  om subdirectories as they should.

Fri May 23 15:31:05 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Consistently use int4 for block number -
	  it really should be unsigned and this is a first step.

Mon May 19 13:20:46 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Create include/xapian if it doesn't exist so that
	  VPATH builds work.

Mon May 19 13:17:16 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am: Disabled exported symbol regex for now.

Tue May 13 05:08:54 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/database.cc,backends/dir_contents,backends/inmemory/,
	  backends/multi/,backends/muscat36/,backends/net/,backends/quartz/,
	  common/,docs/,extra/omparsequery.h,include/,matcher/,net/,netprogs/,
	  tests/: OmDatabase -> Xapian::Database, etc.

Tue May 13 05:07:41 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Corrected spelling: "maintainance" to "maintenance".

Tue May 13 00:40:47 BST 2003  Olly Betts <olly@survex.com>

	* ChangeLog.0,NEWS,backends/inmemory/inmemory_database.h,
	  backends/muscat36/da_database.h,backends/muscat36/db_database.h,
	  backends/quartz/quartz_postlist.h,
	  indexer/indexgraph/omstopwordnode.cc: Spelling correction:
	  "occurence" should be "occurrence".

Mon May 12 22:39:27 BST 2003  Olly Betts <olly@survex.com>

	* api/ompositionlistiteratorinternal.h,
	  include/om/ompositionlistiterator.h: Removed unused files.

Mon May 12 20:51:03 BST 2003  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc,backends/database.cc: Moved database
	  factory functions from api to backends.

Fri May 09 04:02:29 BST 2003  Olly Betts <olly@survex.com>

	* common/expandweight.h: Removed cruft.

Fri May 09 03:50:36 BST 2003  Olly Betts <olly@survex.com>

	* common/rset.h: Removed unused RSetI ctor variant.

Fri May 09 02:00:03 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/,docs/overview.html,include/om/om.h,
	  include/xapian/enquire.h,include/xapian/output.h,matcher/,
	  net/socketclient.cc,net/socketcommon.cc,net/socketserver.cc,
	  netprogs/nettest.cc,tests/api_db.cc: OmRSet -> Xapian::RSet.

Fri May 09 01:06:32 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc: Fixed MSet::Internal::get_description() to include
	  class name.

Fri May 09 01:04:12 BST 2003  Olly Betts <olly@survex.com>

	* common/rset.h,matcher/expand.cc,matcher/rset.cc: RSetI now uses
	  set<Xapian::docid> (as OmRSet::Internal) rather than
	  vector<RSetItem>.

Fri May 09 00:41:20 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/,docs/quickstartexpand.cc.html,matcher/:
	  RSet internal class renamed to RSetI to aid upcoming OmRSet ->
	  Xapian::RSet change.  RSetI looks like it can be eliminated
	  later.

Thu May 08 23:54:44 BST 2003  Olly Betts <olly@survex.com>

	* tests/: Removed make_dbgrp() helper function from apitest as it
	  makes the test code less clear without making it easier to write.

Thu May 08 01:24:53 BST 2003  Olly Betts <olly@survex.com>

	* api/ompostlistiterator.cc,docs/overview.html,tests/api_db.cc:
	  Fixed OmWeight and OmMatchDecider in comments, docs, and
	  testsuite.

Thu May 08 01:16:30 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,backends/multi/multi_postlist.h,common/,
	  include/om/om.h,include/xapian/enquire.h,matcher/,
	  net/socketclient.cc,net/socketserver.cc: OmMatchDecider ->
	  Xapian::MatchDecider; OmWeight -> Xapian::Weight; BoolWeight,
	  TradWeight, BM25Weight -> Xapian::.

Wed May 07 23:06:47 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btreetest.cc,backends/quartz/quartztest.cc,
	  configure.in,netprogs/nettest.cc,tests/,testsuite/: Minor overhaul
	  of testsuite.

Wed May 07 17:54:34 BST 2003  Olly Betts <olly@survex.com>

	* backends/,common/document.h,matcher/Makefile.am,matcher/document.cc:
	  Removed do_ wrappers for Document methods get_value(),
	  get_all_values() and get_data().  The wrappers used to perform
	  thread locking, but now they're just pointless overhead.

Wed May 07 17:24:00 BST 2003  Olly Betts <olly@survex.com>

	* HACKING: Started section of API structure.

Wed May 07 02:16:03 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/expand.h,common/omenquireinternal.h,
	  common/omstringstream.h,docs/quickstart.html,include/om/om.h,
	  include/xapian/enquire.h,include/xapian/output.h,matcher/expand.cc,
	  matcher/multimatch.cc,net/socketcommon.cc,netprogs/nettest.cc,
	  tests/api_db.cc,testsuite/testutils.cc: OmMSet -> Xapian::MSet,
	  similarly for OmMSetIterator, OmESet, and OmESetIterator.

Tue May 06 19:31:42 BST 2003  Olly Betts <olly@survex.com>

	* include/xapian/query.h: New file I failed to checkin on Friday.

Tue May 06 14:16:41 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,configure.in,tests/.cvsignore,tests/Makefile.am,
	  tests/runtest.in,testsuite/testsuite.cc: Sorted out autodetection
	  of valgrind for running testsuite.
	* HACKING: Added note about how to run gdb on dynamically linked
	  binaries built using libtool.
	* HACKING: Recommend libtool 1.5 as in 1.4.2 libtool --mode=execute
	  doesn't seem to handle programs with arguments.

Tue May 06 00:25:03 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Fri May 02 16:58:15 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Improved check that LEX is flex - it will now accept
	  "flex" with a path and/or prefix.

Fri May 02 16:12:46 BST 2003  Olly Betts <olly@survex.com>

	* api/,common/,include/,matcher/,net/,netprogs/nettest.cc,
	  netprogs/omtcpsrv.cc,tests/api_db.cc,tests/api_posdb.cc,
	  testsuite/testutils.cc,testsuite/testutils.h: OmEnquire ->
	  Xapian::Enquire, OmQuery -> Xapian::Query, etc.

Fri May 02 03:14:28 BST 2003  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: Reenabled tests for leak checking and fixed
	  them up to work with valgrind.

Fri May 02 02:14:28 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc,testsuite/testsuite.h: If a testsuite program
	  is run using "valgrind --logfile-fd=255 ./footest" then the harness
	  will show valgrind's output for tests which fail because valgrind
	  spotted errors or leaks (untested under valgrind).

Thu May 01 21:25:01 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omquery.cc,api/omqueryinternal.cc,common/,
	  docs/overview.html,docs/quickstart.html,extra/omparsequery.h,
	  extra/parsequery.yy,extra/parsequerytest.cc,include/,matcher/,
	  net/,netprogs/nettest.cc,tests/api_db.cc,tests/api_nodb.cc,
	  tests/api_posdb.cc: OmQuery -> Xapian::Query, etc.  For now
	  I've had to expose Xapian::Query::Internal in xapian/query.h
	  which isn't ideal.

Wed Apr 30 20:37:27 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,include/:
	  typedefs om_* -> Xapian::*, but not changed all internal uses yet.

Wed Apr 30 03:51:52 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/,common/,extra/omparsequery.h,extra/parsequery.yy,
	  include/,matcher/localmatch.h,matcher/orpostlist.h,tests/api_db.cc:
	  OmPostListIterator -> Xapian::PostListIterator, etc.

Wed Apr 30 02:13:31 BST 2003  Olly Betts <olly@survex.com>

	* docs/matcherdesign.html,include/om/omenquire.h: Merged docs
	  discussing OmMSetIterator::get_collapse_count() into the doxygen
	  documentation comments - they're docs aimed at the API user so
	  really don't belong in the internal matcher design docs.

Wed Apr 30 01:08:39 BST 2003  Olly Betts <olly@survex.com>

	* .cvsignore: Added config.guess.

Tue Apr 29 21:08:40 BST 2003  Olly Betts <olly@survex.com>

	* include/om/om.h,include/xapian/base.h,include/xapian/error.h,
	  include/xapian/errorhandler.h,include/xapian/expanddecider.h,
	  include/xapian/positionlistiterator.h,include/xapian/stem.h,
	  include/xapian/termiterator.h: OM_HGUARD_* -> XAPIAN_INCLUDED_*.

Tue Apr 29 20:37:01 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/,common/,include/,indexer/omnodeinstanceiterator.h,
	  indexer/ompaditerator.h,net/readquery.h,testsuite/indexer.h:
	  om/omoutput.h -> xapian/output.h; om/omtypes.h -> xapian/types.h.

Tue Apr 29 18:28:27 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/,common/,include/,matcher/,net/socketserver.cc,tests/,
	  testsuite/backendmanager.cc,testsuite/testsuite.cc: OmTermIterator
	  -> Xapian::TermIterator, etc.

Tue Apr 29 17:39:34 BST 2003  Olly Betts <olly@survex.com>

	* common/omdebug.cc: Setting XAPIAN_DEBUG_LOG caused an exception
	  (with GCC 3.0 at least) unless the value contained %% - fixed.

Tue Apr 29 14:29:36 BST 2003  Olly Betts <olly@survex.com>

	* api/ompositionlistiterator.cc: Fixed to compile in debug mode.

Tue Apr 29 01:06:02 BST 2003  Olly Betts <olly@survex.com>

	* xapian.spec.in: Removed %changelog - it hasn't been reliably updated
	  and only really makes sense when the packaging is done by a third
	  party anyway.

Tue Apr 29 01:03:20 BST 2003  Fabrice Colin

	* xapian.spec.in: Fixed packaging of docs.

Tue Apr 29 00:33:21 BST 2003  Olly Betts <olly@survex.com>

	* HACKING,testsuite/testsuite.cc,testsuite/testsuite.h: valgrind is
	  now mostly hooked into the testsuite.
	* HACKING: Bison 1.875 doesn't work but Bison 1.875a probably does;
	  suggest CXXFLAGS=-Werror, not CFLAGS.

Tue Apr 29 00:14:00 BST 2003  Olly Betts <olly@survex.com>

	* INSTALL: Updated.

Wed Apr 23 14:31:51 BST 2003  Olly Betts <olly@survex.com>

	* api/omtermlistiterator.cc,api/omtermlistiteratorinternal.h,
	  api/omvalueiteratorinternal.h,backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_positionlist.cc,
	  common/inmemory_positionlist.h: Added InMemoryPositionList ctor
	  which takes the positions data to avoid needing to construct and
	  immediately call set_data().

Wed Apr 23 14:14:34 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/,common/,include/,matcher/: OmPositionListIterator
	  -> Xapian::PositionListIterator, etc.

Wed Apr 23 13:47:49 BST 2003  Olly Betts <olly@survex.com>

	* xapian.spec.in: Minor tweaks.

Sun Apr 20 22:55:04 BST 2003  Olly Betts <olly@survex.com>

	* extra/omparsequery.h,include/xapian/stem.h,tests/api_db.cc,
	  tests/api_nodb.cc,tests/api_posdb.cc,testsuite/backendmanager.cc:
	  OmStem -> Xapian::Stem; OmExpandDecider -> Xapian::ExpandDecider.

Sun Apr 20 22:52:42 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,api/omenquire.cc,common/expand.h,
	  common/omenquireinternal.h,docs/overview.html,include/,
	  matcher/expand.cc,tests/api_db.cc: OmExpandDecider ->
	  Xapian::ExpandDecider, etc.

Sun Apr 20 22:42:32 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS,api/,backends/,common/,docs/,include/,matcher/,net/,
	  netprogs/,tests/,testsuite/: OmError -> Xapian::Error, etc.

Fri Apr 18 22:40:31 BST 2003  Sam Liddicott <sam@liddicott.com>

	* matcher/multimatch.cc: Fixed so that it updates the OmMSetItem in
	  the MSet with the collapse_count from the OmMSetItem twin in
	  collapse_tab or we lose collapse_count if newer collapsing hits are
	  less relevant than the hits they collapse over.  I think we need
	  collapse_tab maybe to keep a reference to the item in the mset?  But
	  this works for now.
	* xapian.spec.in: Fixed to also install include/xapian stuff

Fri Apr 18 19:17:56 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,include/Makefile.am,include/om/.cvsignore,
	  include/om/Makefile.am,include/om/om.h,include/om/om.h.in,
	  include/xapian/.cvsignore,include/xapian/Makefile.am,
	  include/xapian/dir_contents,include/xapian/version.h.in:
	  C++ ABI version checking is now done by xapian/version.h.

Fri Apr 18 17:57:21 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,api/omstem.cc,include/Makefile.am,include/om/om.h.in,
	  include/om/omstem.h,include/xapian/.cvsignore,
	  include/xapian/Makefile.am,include/xapian/base.h,
	  include/xapian/stem.h: Reworked OmStem to use reference counted
	  internals; renamed OmStem to Xapian::Stem and added a #define for
	  compatibility with existing code.

Fri Apr 18 17:02:56 BST 2003  Olly Betts <olly@survex.com>

	* api/,backends/,common/,docs/overview.html,docs/quickstart.html,
	  docs/quickstartexpand.cc.html,extra/,include/om/,matcher/,net/,
	  tests/,testsuite/: Use std::string instead of typedef-ing it as
	  om_termname.  The typedef doesn't really buy us anything.  Keep
	  a typedef for compatibility with existing code for now.

Fri Apr 18 16:12:32 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: GCC 3.2.2 on Redhat 7.1 works with CXXFLAGS=-Werror

Thu Apr 10 20:05:27 BST 2003  Olly Betts <olly@survex.com>

	* common/Makefile.am,common/indexer.h,testsuite/Makefile.am,
	  testsuite/indexer.h: Moved indexer.h from common to testsuite
	  and altered it to use iosfwd instead of iostream and to
	  declare OmDocument as a class instead of include omdocument.h.

Thu Apr 10 18:55:55 BST 2003  Olly Betts <olly@survex.com>

	* xapian-config.nodep.in: Removed --prefix and --exec-prefix - you
	  can't reliably install Xapian with a different prefix to the one
	  it was configured with, yet these options give the impression you
	  can.

Thu Apr 10 18:53:53 BST 2003  Olly Betts <olly@survex.com>

	* .cvsignore: Added config.sub.

Thu Apr 10 02:41:50 BST 2003  Olly Betts <olly@survex.com>

	* NEWS,configure.in: Updated for 0.6.5 release.

Thu Apr 10 02:29:12 BST 2003  Olly Betts <olly@survex.com>

	* docs/doxygen_api_footer.html_tmpl,docs/doxygen_full_footer.html_tmpl,
	  docs/overview.html: Use http://www.doxygen.org/ as URL for doxygen.
	* docs/overview.html: Fixed bad link to our own website!

Thu Apr 10 02:12:00 BST 2003  Olly Betts <olly@survex.com>

	* Makefile.am,backends/Makefile.am,backends/net/.cvsignore,
	  backends/net/Makefile.am,netprogs/.cvsignore: Renamed libnetdb.la
	  to libremote.la, and LIB_REMOTE1 to LIBNET_LA.

Thu Apr 10 02:08:24 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated mingw notes to reflect the change to
	  automatically disable the remote backend when fork() isn't
	  available.

Thu Apr 10 01:56:34 BST 2003  Olly Betts <olly@survex.com>

	* docs/mkdoc.pl: Fixed to only look at directories listed in
	  DIST_SUBDIRS.

Thu Apr 10 00:23:28 BST 2003  Olly Betts <olly@survex.com>

	* configure.in: Automatically disable the remote backend if we don't
	  have fork() since the remote backend requires it in several places;
	  AM_CONDITIONAL ENABLE_SHARED isn't used anywhere so commented it
	  out.

Wed Apr 09 22:48:20 BST 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated with recent changes.

Wed Apr 09 22:43:31 BST 2003  Olly Betts <olly@survex.com>

	* docs/remote_protocol.html: Talk about Server/Client rather than
	  ProgServer/ProgClient; reworked first paragraph.

Wed Apr 09 13:23:05 BST 2003  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Install docs in /usr/share/doc/xapian-core to be
	  FHS compliant.
	* xapian.spec.in: Package quartzcheck and quartzcompact too; sorted
	  out docs so they all install in the right place.

Wed Apr 09 01:16:11 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,backends/quartz/quartz_log.cc,
	  backends/quartz/quartz_table_manager.cc,common/omdebug.cc,
	  common/omdebug.h: Don't use HAVE_GETPID - if it's not set we assume
	  GetCurrentProcessId() works, so it's cleaner to test with
	  #ifdef WIN32 instead.

Tue Apr 08 19:56:57 BST 2003  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with the results of many test builds.

Tue Apr 08 19:55:15 BST 2003  Olly Betts <olly@survex.com>

	* configure.in,backends/quartz/Makefile.am,backends/quartz/btree.cc,
	  netprogs/nettest.cc,common/getopt.h,common/omtime.h,common/utils.cc,
	  common/utils.h,tests/Makefile.am,tests/api_db.cc: Now builds with
	  Linux to mingw cross-compiler.
	* tests/Makefile.am: don't include findheaders.pl in the tarball -
	  it's no longer used.
	* tests/internaltest.cc: removed "#include <dlfcn.h>" and disabled
	  code which used to use it.
	* testsuite/backendmanager.cc,testsuite/backendmanager.h: fixed to
	  work if any backends are disabled.

Tue Apr 08 16:09:11 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/quartz_log.cc,
	  backends/quartz/quartz_table_manager.cc,testsuite/testsuite.cc:
	  Some fixes for building with Linux to mingw cross-compiler.

Tue Apr 08 02:26:51 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/btreetest.cc: If we don't have <sstream> and so are
	  using our own stringstream implementation, we can't pass it as an
	  ostream reference so BtreeCheck::check() can't be run in btreetest.
	  This is only an issue on old compilers (for GCC <= 2.95.2 it seems)
	  so just disable the checking in that case - it's probably not worth
	  the effort of trying to make our stringstream a subclass of ostream.

Tue Apr 08 01:20:36 BST 2003  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Updated unfinished hooks to use valgrind in
	  the test harness.

Fri Apr 04 03:12:27 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omstem.cc,common/omdebug.cc: Fixed to compile
	  when configure-d with --enable-debug-verbose --enable-debug=full.

Fri Apr 04 03:10:53 BST 2003  Olly Betts <olly@survex.com>

	* common/omstringstream.h: Removed unused code for writing
	  vector<string> to our own implementation of om_ostringstream.

Fri Apr 04 03:08:35 BST 2003  Olly Betts <olly@survex.com>

	* api/ompostlistiterator.cc: Use "using namespace std;"; replaced
	  gratuitous use of om_ostringstream.

Fri Apr 04 03:07:05 BST 2003  Olly Betts <olly@survex.com>

	* tests/api_nodb.cc: Use "using namespace std;"; removed stray cout
	  debug line.

Wed Apr 02 16:54:50 BST 2003  Olly Betts <olly@survex.com>

	* tests/internaltest.cc: More Sun C++ fixes.
	* PLATFORMS: Updated.

Wed Apr 02 16:39:48 BST 2003  Olly Betts <olly@survex.com>

	* tests/api_db.cc,net/tcpserver.cc,common/tcpserver.h: More Sun C++
	  fettling.

Wed Apr 02 15:42:54 BST 2003  Olly Betts <olly@survex.com>

	* matcher/emptymatch.h,tests/api_db.cc: More fixes for Sun C++.

Wed Apr 02 15:13:58 BST 2003  Olly Betts <olly@survex.com>

	* api/omenquire.cc,api/omqueryinternal.cc,
	  backends/inmemory/inmemory_database.h,common/document.h,
	  common/netclient.h,common/netserver.h,common/networkstats.h,
	  common/omlinebuf.h,common/stats.h,include/om/omerror.h,
	  include/om/omerrorhandler.h,indexer/indexgraph/nodetest.cc,
	  indexer/indexgraph/omindexerbuilder.cc,
	  indexer/indexgraph/omindexerinternal.h,
	  indexer/indexgraph/omstopwordnode.cc,
	  indexer/indexgraph/regexcommon.h,indexer/indexgraph/toposort.h,
	  tests/api_db.cc,tests/api_nodb.cc,testsuite/backendmanager.h:
	  More fixes for Sun C++; removed many superfluous ";" after "}".

Wed Apr 02 03:45:42 BST 2003  Olly Betts <olly@survex.com>

	* api/omdocument.cc,api/omenquire.cc,api/omtermlistiteratorinternal.h,
	  backends/inmemory/inmemory_database.h,backends/quartz/btree.cc,
	  backends/quartz/btree.h,common/alltermslist.h,common/expandweight.h,
	  common/getopt.h,common/utils.h,include/om/omenquire.h,
	  matcher/expandweight.cc,matcher/multimatch.cc,
	  testsuite/backendmanager.h: Resolved various issues so that
	  libxapian now builds with Sun's C++ compiler.  However
	  libomqueryparser and the test programs don't yet.

Tue Apr 01 02:52:57 BST 2003  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_types.h: use "unsigned int" rather than
	  "unsigned long int" so that quartz_tablesize_t matches om_doccount
	  on 64 bit machines.

Mon Mar 31 19:34:54 BST 2003  Olly Betts <olly@survex.com>

	* AUTHORS,xapian.spec.in: Merged in changes to RPM packaging from
	  Fabrice Colin and reworked further.

Fri Mar 28 20:04:04 GMT 2003  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Fri Mar 28 19:53:59 GMT 2003  Olly Betts <olly@survex.com>

	* README: Removed out-of-date sourceforge references; tidied up
	  wording in places.

Fri Mar 28 19:52:11 GMT 2003  Olly Betts <olly@survex.com>

	* HACKING: Removed out-of-date sourceforge references; tidied up
	  wording in places; docs/tests.txt is now docs/tests.html .

Fri Mar 28 17:35:15 GMT 2003  Olly Betts <olly@survex.com>

	* NEWS: Wrote most of the entries for the next release.

Fri Mar 28 17:34:57 GMT 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Thu Mar 27 05:42:41 GMT 2003  Olly Betts <olly@survex.com>

	* .cvsignore,Makefile.am,configure.in,docs/.cvsignore,docs/Makefile.am,
	  docs/index.html,docs/todo2html.pl: removed machinery to generate
	  TODO, TODO.release, docs/todo.html, and docs/todo-release.html from
	  docs/todo.xml - bug and todo items will be tracked in bugzilla
	  instead.

Thu Mar 27 05:25:12 GMT 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml: Removed completed items and those already fed into
	  bugzilla.

Thu Mar 27 05:17:05 GMT 2003  Olly Betts <olly@survex.com>

	* api/omstem.cc,include/om/omstem.h: Added default OmStem ctor,
	  and "none" language.  Both of these give a stemmer object which
	  leaves terms unchanged which should allow for simpler logic
	  in programs using Xapian.  The default ctor also removes the
	  need to mess with pointers in some cases.

Thu Mar 27 04:52:27 GMT 2003  Olly Betts <olly@survex.com>

	* NEWS: Started to prepare for next release.

Thu Mar 27 04:49:52 GMT 2003  Olly Betts <olly@survex.com>

	* include/om/omenquire.h,include/om/omerror.h: Improved documentation
	  comments.

Thu Mar 27 01:09:04 GMT 2003  Olly Betts <olly@survex.com>

	* docs/todo.xml,tests/api_db.cc: Added regression test for Quartz
	  bug which caused problems with long terms on machines with signed
	  chars.

Wed Mar 26 20:30:18 GMT 2003  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: fixed interaction of collapsing and
	  sort_bands == 1.

Wed Mar 26 01:04:30 GMT 2003  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fixed sort_bands == 1 bug which would
	  incorrectly reject many documents with a low score.

Thu Mar 06 13:04:06 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

	* docs/matcherdesign.html: Add writeup about document collapsing.

Thu Mar 06 11:32:05 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

	* Add collapse_count threshold checking to ensure that most
	  relevant collapsed-away hit is more relevant than threshold
	  (if specified)

Mon Mar 03 14:04:56 GMT 2003  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Corrected 2kB to 2KB.

Fri Feb 28 10:11:04 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

	* Add get_collapse_count() to OmMSetIterator
	* Add collapse_count to OmMSetItem
	* Add collapse_count tracking to get_mset()

Thu Feb 27 15:28:08 GMT 2003  Olly Betts <olly@survex.com>

	* common/match.h,common/multimatch.h,matcher/multimatch.cc: Optimise
	  the common sort_bands == 1 case better.
	* tests/api_db.cc: sortbands2 now tests 1 sortband as well as 10.

Wed Feb 26 09:58:01 GMT 2003  Sam Liddicott <sam.liddicott@orange.co.uk>

	* bootstrap: Fix success message when building in non-src dir
	  as configure is written to the src dir.

Mon Feb 24 10:33:52 GMT 2003  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Disabled (for now) sort_bands
	  optimisation which is misbehaving.  Fixed forward ordered boolean
	  optimisation broken by last check-in.
	* tests/api_db.cc: Added test_sortbands2 based on James' test code.

Sun Feb 23 20:28:47 GMT 2003  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: Fixed problem with sort_bands when asking
	  for an m-set which didn't start with the first match.

Sun Jan 05 22:20:33 GMT 2003  Olly Betts <olly@survex.com>

	* testsuite/index_utils.cc: Handling of ^x was just downright wrong
	  due to a typo.

Sun Jan 05 22:19:56 GMT 2003  Olly Betts <olly@survex.com>

	* backends/quartz/.cvsignore: Ignore quartzcompact binary.

Sun Jan 05 22:18:57 GMT 2003  Olly Betts <olly@survex.com>

	* extra/parsequerytest.cc: Fixed to build with GCC 2.95.

Tue Dec 24 20:21:03 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Added omega 0.6.4 changes.

Tue Dec 24 19:53:10 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.6.4.

Tue Dec 24 19:29:27 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,backends/quartz/quartz_table.cc:
	  Don't bother checking is position_list is empty - just delete it and
	  let the layer below handle not having anything to delete.
	* backends/quartz/quartz_termlist.cc,docs/todo.xml: Fixed unpacking
	  of termlist on platforms where char is signed.

Tue Dec 24 05:48:06 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Fixed double setting of position
	  list when updating a document with term position information.  The
	  behaviour before was correct, just inefficient.

Mon Dec 23 04:44:46 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Mon Dec 23 03:22:19 GMT 2002  Olly Betts <olly@survex.com>

	* extra/parsequery.yy: If a stemmed form with a "." is in the query,
	  include the "." on the form in the unstem multimap.

Sun Dec 22 21:44:06 GMT 2002  Olly Betts <olly@survex.com>

	* extra/omparsequery.h,extra/parsequery.yy,extra/parsequerytest.cc:
	  Added support for searching probabilistic fields (using
	  <field>:<term>).

Sat Dec 21 01:38:59 GMT 2002  Olly Betts <olly@survex.com>

	* configure.in: Don't include "om.h" in APIDOC_SRC, otherwise
	  people building from source will need to regenerate the source
	  docs which will require them to have doxygen installed.

Fri Dec 20 15:39:51 GMT 2002  James Aylett  <james@tartarus.org>

	* Bindings build using SWIG 1.3.14u-20020706-1222, with very
	  basic functionality tested with the Python target.

Fri Dec 20 12:38:26 GMT 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Tidied up some bindings-related issues, including changes to
	  the Python bindings to work with Python 2.2. This probably won't
	  compile as it stands, but it's disabled anyway.

Sun Dec 15 18:23:42 GMT 2002  Olly Betts <olly@survex.com>

	* api/omdatabase.cc,backends/muscat36/da_database.cc,
	  backends/muscat36/db_database.cc,matcher/phrasepostlist.cc:
	  Muscat 3.6 DA and DB databases don't have word position information.
	  Instead of throwing an exception when this information is requested,
	  return an empty position list (i.e. behave as a quartz database with
	  no position information would).

Sun Dec 15 03:08:28 GMT 2002  Olly Betts <olly@survex.com>

	* backends/muscat36/: DADatabase and DBDatabase ctors need to public
	  so that they can called from the database factory functions.
	* api/omenquire.cc,backends/muscat36/,backends/quartz/btree.cc,
	  tests/api_db.cc: Fixed compilation warnings.

Sat Dec 14 23:02:55 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html,docs/todo.xml: Updated.

Sat Dec 14 22:57:41 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am,backends/quartz/quartzcheck.cc,
	  backends/quartz/quartzcompact.cc,backends/quartz/quartzdump.cc:
	  Enhanced quartzcheck to check all the btrees in a quartz database
	  if passed a directory name.  It also default to "v" rather than
	  "+" which is more appropriate for an end user checking if tables
	  in a non-trivial sized database are corrupt.  Added quartzcompact
	  utility to make a copy of a quartz database with full compaction
	  turned on - this results in a smaller database which is faster to
	  search.  The next update will result in a lot of block splitting
	  though (since all blocks are as full as possible).

Sat Dec 14 16:28:11 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated for 0.6.3 release.

Sat Dec 14 04:28:16 GMT 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,configure.in: Version 0.6.3.

Sat Dec 14 03:54:08 GMT 2002  Olly Betts <olly@survex.com>

	* extra/omparsequery.h,extra/parsequery.yy: Create an "unstem" multimap
	  so users can convert the stemmed terms back into their query
	  representation.

Sat Dec 14 03:48:27 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sat Dec 14 02:37:41 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sat Dec 14 02:26:29 GMT 2002  Olly Betts <olly@survex.com>

	* docs/remote_protocol.html,net/socketclient.cc,net/socketserver.cc:
	  Updated remote protocol description.

Sat Dec 14 02:05:59 GMT 2002  Olly Betts <olly@survex.com>

	* docs/: Updated.

Fri Dec 13 23:43:23 GMT 2002  Olly Betts <olly@survex.com>

	* include/om/om.h.in: Removed bogus // in the middle of a comment.

Fri Dec 13 22:17:41 GMT 2002  Olly Betts <olly@survex.com>

	* configure.in,testsuite/testsuite.cc: Added hooks for using valgrind
	  to find leaks in the test suite.  Just need to sort out suitable
	  hooks in valgrind now!

Fri Dec 13 19:57:23 GMT 2002  Olly Betts <olly@survex.com>

	* docs/: OmSettings removal updates.

Fri Dec 13 19:44:23 GMT 2002  Olly Betts <olly@survex.com>

	* bindings/: Made a start updating bindings for OmSettings removal.

Fri Dec 13 19:13:36 GMT 2002  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,include/om/omenquire.h,
	  net/socketclient.cc,tests/api_db.cc: Finished removal of OmSettings
	  - all tests now pass once more!

Fri Dec 13 16:35:12 GMT 2002  Olly Betts <olly@survex.com>

	* api/,backends/quartz/quartz_table_manager.h,common/,docs/,include/,
	  matcher/,net/,tests/internaltest.cc: Removed last use of OmSettings.
	  Just a check-point check in - the code compiles, but doesn't pass
	  tests yet.

Fri Dec 13 12:53:01 GMT 2002  Olly Betts <olly@survex.com>

	* netprogs/nettest.cc: Updated disabled code to use new database
	  factory functions; Added "using namespace std;".

Thu Dec 12 23:52:32 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Tidied my desk and converted lots of scraps of paper
	  to todo entries.

Thu Dec 12 16:43:22 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Added workaround for shared_level problem;
	  Improved error reporting.

Thu Dec 12 01:05:00 GMT 2002  Olly Betts <olly@survex.com>

	* docs/overview.html: Updated docs on stub databases.

Wed Dec 11 20:49:11 GMT 2002  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc,include/om/omdatabase.h,tests/api_db.cc:
	  Reimplemented stub databases in the new scheme of things.
	* backends/inmemory/: fully disabled inmemory_errornext and
	  inmemory_abortnext code.

Tue Dec 10 13:47:44 GMT 2002  Olly Betts <olly@survex.com>

	* HACKING: Added note that Bison 1.50 seems to work with Xapian's
	  .yy files.

Mon Dec 09 20:13:00 GMT 2002  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,docs/todo.xml,
	  include/om/omenquire.h,tests/api_db.cc: OmEnquire::get_eset()
	  now takes a flags argument of bit constants |-ed together
	  instead of 2 bools.

Mon Dec 09 12:52:38 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: Applied patch
	  from Martin Porter with better fix for sequential addition bug.

Mon Dec 09 09:57:42 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Mon Dec 09 07:32:46 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartztest.cc: Corrected name of database used
	  by test adddoc2 (was using testdb_adddoc1!)

Mon Dec 09 05:10:09 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc,backends/quartz/quartz_table.cc:
	  More fettling.

Mon Dec 09 04:48:39 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: Minor code fettle.

Mon Dec 09 03:32:11 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: Gratuitous layout fettling.

Mon Dec 09 03:30:27 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Improved wording and punctuation in 3
	  places.

Mon Dec 09 03:25:09 GMT 2002  Olly Betts <olly@survex.com>

	* common/,docs/todo.xml,include/om/omenquire.h,matcher/,
	  net/socketclient.cc,net/socketserver.cc,netprogs/omprogsrv.cc,
	  netprogs/omtcpsrv.cc: Fixed the remote backend to handle non-default
	  weighting schemes.  You can now even implement your own weighting
	  scheme and use it with the remote backend provided you register it
	  with SocketServer at runtime.

Sat Dec 07 21:18:39 GMT 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Sat Dec 07 21:09:52 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Version 0.6.2.

Sat Dec 07 20:24:46 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Sat Dec 07 20:21:41 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quickstart.html: Fixed parameters passed to OmQuartz__open().

Sat Dec 07 20:17:42 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartztest.cc: Fixed parameters passed to
	  OmQuartz__open().

Sat Dec 07 16:41:25 GMT 2002  Olly Betts <olly@survex.com>

	* docs/tests.html,testsuite/testsuite.cc: The testsuite won't install
	  its signal handler if XAPIAN_SIG_DFL is set.

Sat Dec 07 16:39:01 GMT 2002  Olly Betts <olly@survex.com>

	* HACKING: OM_DEBUG_XXX -> XAPIAN_DEBUG_YYY.

Sat Dec 07 04:48:37 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: max_item_size wasn't being set due to
	  some over-zealous code pruning.  It was defaulting to 0, and
	  was causing the code to write off the end of allocated memory
	  blocks.

Sat Dec 07 03:22:05 GMT 2002  Olly Betts <olly@survex.com>

	* backends/inmemory/,matcher/multimatch.cc: Minor code tidying.
	* backends/quartz/btree.cc: Added Assert in Btree::add() to detect
	  running off end of buffer.

Sat Dec 07 03:20:52 GMT 2002  Olly Betts <olly@survex.com>

	* matcher/localmatch.cc: fixed handling of wtscheme() - we were
	  trying to use it for the extra weights, and then double
	  deleting it!

Fri Dec 06 23:05:22 GMT 2002  Olly Betts <olly@survex.com>

	* api/omstem.cc,backends/quartz/,common/omdebug.cc,common/utils.h,
	  matcher/tradweight.cc,net/socketcommon.cc,net/tcpclient.cc,
	  tests/api_db.cc: Fixed to build with configure --enable-debug=full.

Fri Dec 06 23:01:08 GMT 2002  Olly Betts <olly@survex.com>

	* common/omdebug.cc,common/omdebug.h: Fixed permissions on newly
	  created log file (was getting 000!); Simplified class internals;
	  Renamed env vars: OM_DEBUG_FILE is now XAPIAN_DEBUG_LOG,
	  OM_DEBUG_TYPES is now XAPIAN_DEBUG_FLAGS (old versions still work
	  for now).

Fri Dec 06 22:58:57 GMT 2002  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Fixed so running "gdb .libs/apitest"
	  finds srcdir (for an in-tree build at least).

Fri Dec 06 03:51:35 GMT 2002  Olly Betts <olly@survex.com>

	* common/,include/om/omenquire.h,matcher/localmatch.h,matcher/rset.cc,
	  matcher/stats.cc: Fixed to compile with GCC 3.0.

Thu Dec 05 23:28:29 GMT 2002  Olly Betts <olly@survex.com>

	* include/om/omdatabase.h: Added missing "std::".

Thu Dec 05 23:27:57 GMT 2002  Olly Betts <olly@survex.com>

	* docs/remote.html: Updated from OmSettings to factory functions.

Thu Dec 05 23:26:42 GMT 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: ixion is actually Linux 2.2.

Thu Dec 05 04:32:40 GMT 2002  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Fixed BackendManager::do_getdb_quartz()
	  and do_getwritedb_quartz() to work correctly and so resolved some
	  test failures.

Wed Dec 04 03:35:12 GMT 2002  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc,backends/quartz/,docs/todo.xml,
	  include/om/omdatabase.h: Replace create and allow_overwrite
	  boolean flags with OM_DB_XXX constants.  And we now support
	  OM_DB_CREATE_OR_OPEN which is a common action to want to
	  perform, but was fiddly to achieve before.

Tue Dec 03 23:59:30 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Tue Dec 03 23:26:27 GMT 2002  Olly Betts <olly@survex.com>

	* api/omenquire.cc,backends/quartz/quartz_postlist.h,common/,
	  docs/omsettings,docs/todo.xml,include/om/omenquire.h,matcher/,
	  net/socketcommon.cc,net/socketserver.cc,tests/api_db.cc,
	  tests/api_posdb.cc: Weighting schemes are now specified by passing
	  in a weighting object, rather than via OmSetttings.  The weight
	  class can be sub-classed by the library user to allow them to
	  specify their own weighting scheme).  Everything works apart
	  from the remote backend where the weighting scheme type and
	  parameters aren't passed across the link.

Mon Dec 02 20:12:31 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated with changes since 0.6.1.

Mon Dec 02 19:44:37 GMT 2002  Olly Betts <olly@survex.com>

	* api/ompostlistiterator.cc,backends/multi/multi_postlist.h,
	  common/irweight.h,common/leafpostlist.h,matcher/: IRWeight
	  renamed to OmWeight in preparation for making it externally
	  visible.

Mon Dec 02 18:10:55 GMT 2002  Olly Betts <olly@survex.com>

	* matcher/bm25weight.cc,matcher/irweight.cc,matcher/tradweight.cc,
	  matcher/tradweight.h: Started to rework weighting scheme code.

Mon Dec 02 17:36:21 GMT 2002  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc,backends/quartz/quartz_table_manager.cc:
	  Tidying up after the recent backend reworking.

Mon Dec 02 03:59:39 GMT 2002  Olly Betts <olly@survex.com>

	* matcher/: Changed BoolWeight ctor not to take an OmSettings
	  parameter which is simply ignored.

Mon Dec 02 01:35:41 GMT 2002  Olly Betts <olly@survex.com>

	* include/om/omdatabase.h: Added documentation comments for all of
	  the database factory functions.

Sun Dec 01 21:45:49 GMT 2002  Olly Betts <olly@survex.com>

	* include/om: Added \file documentation comments so doxygen
	  extracts documentation for functions too.
	* docs/: Made a start on updating for the new database factory
	  functions.

Sun Dec 01 15:38:10 GMT 2002  Olly Betts <olly@survex.com>

	* api/,backends/,common/,docs/omsettings,docs/todo.xml,
	  include/om/omdatabase.h,netprogs/,tests/,testsuite/backendmanager.cc,
	  testsuite/backendmanager.h: No longer use OmSettings to specify
	  parameters for constructing databases.  Instead there's a factory
	  function for each database type - temporary naming scheme is
	  OmXxx__open(), mostly because it's easy to grep for later.  At
	  present stub databases and the machinery in InMemory to allow
	  the multierrhandler1 test aren't working.  Everything else should
	  be.

Thu Nov 28 20:15:47 GMT 2002  Olly Betts <olly@survex.com>

	* api/omenquire.cc,common/omenquireinternal.h,docs/omsettings,
	  docs/overview.html,include/om/omenquire.h,tests/api_db.cc:
	  No longer use OmSettings in OmEnquire::get_eset(); fixed
	  reversed sense of use_query_terms (and fixed reversed sense
	  test in apitest which meant this wasn't spotted).

Thu Nov 28 20:14:54 GMT 2002  Olly Betts <olly@survex.com>

	* docs/index.html: Link to annotated class lists in doxygen generated
	  documentation rather than rather empty index page.

Thu Nov 28 02:23:33 GMT 2002  Olly Betts <olly@survex.com>

	* configure.in,NEWS: Version 0.6.1.

Thu Nov 28 01:38:05 GMT 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Thu Nov 28 01:33:25 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: Fixed to compile with GCC 3.0.

Thu Nov 28 01:32:31 GMT 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated with test results from 0.5.4 release.

Wed Nov 27 22:11:38 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.h: fixed "public:" bodge added during
	  factoring-out of BtreeCheck.

Wed Nov 27 05:01:14 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: Updated for 0.6.0 release.

Wed Nov 27 05:00:39 GMT 2002  Olly Betts <olly@survex.com>

	* AUTHORS,HACKING: Removed or replaced sourceforge.net URLs.

Wed Nov 27 04:58:29 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Reworded "under development" warning;
	  Updated Btree::check(), which is now BtreeCheck::check().

Wed Nov 27 01:36:26 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btreecheck.cc,backends/quartz/btreecheck.h,
	  backends/quartz/btreetest.cc: Tidied up BtreeCheck - btreetest now
	  sends check output to tout so it's only displayed if the check fails
	  (or btreetest is run with -v).

Tue Nov 26 19:47:24 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: Split the btree checking code out into a separate
	  file, so it's not linked in when we don't need it.

Tue Nov 26 05:47:32 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Suppress all output from a successful
	  Btree::Check() is no options are specified, so that btreetest
	  generates clean output when all tests pass.

Tue Nov 19 02:08:30 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated.

Tue Nov 19 01:46:35 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h,
	  backends/quartz/btreetest.cc,backends/quartz/quartztest.cc,
	  docs/quartzdesign.html: Quartz B-tree minimum blocksize is
	  now 2048 bytes (as was in fact documented already).  This
	  means the max term length is now always 252 bytes.

Mon Nov 18 22:16:57 GMT 2002  Olly Betts <olly@survex.com>

	* api/omenquire.cc,matcher/expand.cc,matcher/expandweight.cc:
	  Bit of an expand tidy up.

Mon Nov 18 19:49:09 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_termlist.cc: I'd put the new termlist stuff
	  in the disabled branch of a "#ifdef" so it wasn't being used!  Fixed
	  this and made it actually compile as an encore.

Mon Nov 18 02:51:55 GMT 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Retargetted 0.6 tasks for 0.7 or 0.8; updated a few
	  entries.

Mon Nov 18 02:28:55 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html,backends/quartz/: We can just store the term
	  name raw in position list key, since we know its length from the key
	  length; tweaked storing of deltas to store (delta - 1) as 0 is
	  invalid.

Mon Nov 18 00:47:54 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_termlist.cc: First cut of compressed term
	  lists.

Sun Nov 17 20:19:23 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_lexicon.cc,backends/quartz/quartz_values.cc:
	  Use new pack_uint_last() and unpack_uint_last() where appropriate.

Sun Nov 17 20:03:24 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h:
	  Added a more compact integer packing for the last integer in
	  a key or tag.

Sun Nov 17 18:54:05 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: more
	  int -> bool changes.
	* backends/quartz/btree_base.cc: Clarified comments.

Sun Nov 17 14:19:30 GMT 2002  Olly Betts <olly@survex.com>

	* docs/quartzdesign.html: Updated to reflect removal of Btree_item.

Sun Nov 17 14:12:12 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: Eliminate Btree_item - wherever it's used we
	  only actually want the tag or key, so it's cleaner and clearer
	  to just pass a pointer to a string.

Sun Nov 17 13:34:08 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/,docs/quartzdesign.html: Quartz mini-overhaul:
	  Removed Btree::Bcursor_create() and just made Bcursor's ctor
	  public - now you can just create a Bcursor on the stack rather
	  than being forced to use AutoPtr; removed valid_handle - the
	  code is clearer without it; sys_close now inlined from header;
	  changed int/char to bool where appropriate; changed some methods
	  which now always throw on error to return void not bool; moved
	  quartztest's test_btree1 to btreetest as test_simple1; changed
	  a few remaining uses of "struct Btree" to just plain "Btree";
	  brought the btree docs in quartzdesign.html up-to-date, apart
	  from the error handling section.

Sat Nov 16 01:45:28 GMT 2002  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.cc,
	  backends/inmemory/inmemory_database.h,
	  backends/quartz/quartz_table.cc: Tidying up odds and ends.

Fri Nov 15 17:46:38 GMT 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated ready for 0.6.0 with changes made so far.

Fri Nov 15 17:06:58 GMT 2002  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Avoid double debug output if we get a
	  signal inside the testsuite code itself.

Fri Nov 15 17:00:15 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree_api.txt,docs/Makefile.am,docs/index.html,
	  docs/quartzdesign.html,docs/remote_protocol.html,
	  net/README_progprotocol.txt: Converted Btree API documentation
	  to HTML and add it to the quartz design document; converted the
	  (seriously out of date) remote protocol document to HTML, moved it
	  into docs/, and linked it in.

Fri Nov 15 13:05:06 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_record.cc,backends/quartz/quartz_utils.h,
	  docs/quartzdesign.html: Changed encoding of keys for quartz record
	  and termlist tables.

Fri Nov 15 12:54:39 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_table_entries.cc: Fixed
	  QuartzTableEntries::empty() which would never return true before.

Fri Nov 15 03:08:49 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree_api.txt: Fixed typos.

Fri Nov 15 03:06:41 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartztest.cc,backends/quartz/btreetest.cc:
	  added another test (btreetest: emptykey1) and added extra
	  checks to existing tests.

Thu Nov 14 01:59:06 GMT 2002  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc,tests/api_db.cc,docs/todo.xml:
	  match_sort_bands code fettled, and added regression test for the
	  >100% problem (test_sortbands1).

Tue Nov 12 00:00:44 GMT 2002  Olly Betts <olly@survex.com>

	* backends/inmemory/inmemory_database.h,backends/quartz/,
	  include/om/omtypes.h: Pushed average length calc down into
	  QuartzRecordManager; removed unnecessary types om_totlength
	  and om_termid.

Mon Nov 11 18:10:23 GMT 2002  Olly Betts <olly@survex.com>

	* docs/index.html: Fixed broken link.

Mon Nov 11 18:07:41 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/,docs/quartzdesign.html: Store next free docid
	  and total doc length in the same tag in QuartzRecord.

Wed Nov 06 22:38:40 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc,backends/quartz/quartz_database.h:
	  Eliminated QuartzDatabase::get_doccount_internal() and
	  QuartzDatabase::get_avlength_internal() - now the thread
	  locking code has gone, the indirection serves no purpose.

Wed Nov 06 17:50:12 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: Removed QuartzBufferedTable::write() (unused and
	  unimplemented), and merged QuartzBufferedTable::write_internal()
	  into QuartzBufferedTable::write_internal().

Wed Nov 06 01:56:41 GMT 2002  Olly Betts <olly@survex.com>

	* backends/quartz/: disable quartz lexicon table unless USE_LEXICON
	  is defined.

Wed Nov 06 01:54:30 GMT 2002  Olly Betts <olly@survex.com>

	* docs/overview.html: Corrected link to API docs on website.

Mon Nov 04 02:35:22 GMT 2002  Olly Betts <olly@survex.com>

	* include/om/omerror.h,net/omerr_string.cc,netprogs/omprogsrv.cc,
	  netprogs/omtcpsrv.cc,testsuite/testsuite.cc: don't use typeid().

Mon Nov 04 01:31:47 GMT 2002  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Catch by const reference.

Mon Nov 04 01:18:53 GMT 2002  Olly Betts <olly@survex.com>

	* HACKING: Added note about use of various C++ features.  Also
	  tidied up various odds and ends.

Sun Nov 03 22:59:34 GMT 2002  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc: Eliminated entirely superfluous use of
	  dynamic_cast.

Sun Nov 03 22:46:34 GMT 2002  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc,common/database.h,common/net_database.h:
	  Replace Database::is_network() with Database::as_networkdatabase()
	  which returns a pointer or NULL.  This eliminates the need to use
	  dynamic_cast in MultiMatch.

Wed Oct 23 05:24:14 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Resolved TODO entry by consulting Stroustrup
	  (it is safe to throw and catch an exception in a destructor,
	  even when that destructor is being called during a stack unwind
	  caused by an exception being thrown).

Wed Oct 16 20:05:39 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btreetest.cc: Suppress (most) output from
	  Btree::check unless verbose (-v) is enabled.

Mon Oct 14 15:13:18 BST 2002  Olly Betts <olly@survex.com>

	* testsuite/testsuite.cc: Fixed compilation problem with std:: on
	  GCC 3.2.

Mon Oct 14 15:07:03 BST 2002  Olly Betts <olly@survex.com>

	* api/omstem.cc: French and Finnish stemmers were switched!

Mon Oct 14 02:49:12 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_utils.h: change sort preserving packing for
	  strings.  This one does better provided the strings being packed
	  don't contain many zero bytes (which is true of the termnames which
	  we pack with this).

Mon Oct 14 02:45:20 BST 2002  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Updated to reflect new naming of stemming test
	  data.

Sun Oct 13 17:06:26 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sun Oct 13 16:40:24 BST 2002  Olly Betts <olly@survex.com>

	* api/omstem.cc,backends/quartz/,common/,extra/omparsequery.h,matcher/,
	  net/socketclient.cc: Added private copy ctors and assignment
	  operators to classes with pointer members (which shouldn't be
	  copied).

Sun Oct 13 15:12:40 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Sun Oct 13 02:33:57 BST 2002  Olly Betts <olly@survex.com>

	* .cvsignore: Added install-sh.

Sun Oct 13 02:16:31 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/{quartz_lexicon.cc,quartz_lexicon.h}: key to lexicon
	  is now simply the termname - no need to encode the length there too
	  since the Btree knows how long the key is.
	* backends/quartz/{quartz_table_manager.cc,quartz_values.cc}: finished
	  the terminology change from "attribute" to "value" (including
	  renaming the btree files, which is why it wasn't done before).

Sun Oct 13 02:09:00 BST 2002  Olly Betts <olly@survex.com>

	* tests/api_db.cc: Snowball stems "this" to "this" rather than "thi",
	  so update apitest source to reflect this.

Sun Oct 13 01:03:04 BST 2002  Olly Betts <olly@survex.com>

	* configure.in: Removed references to languages/*/Makefile.

Sun Oct 13 00:50:01 BST 2002  Olly Betts <olly@survex.com>

	* docs/indexerquickstart.html,docs/quartzdesign.html: Updated.

Sat Oct 12 23:34:52 BST 2002  Olly Betts <olly@survex.com>

	* languages/{api.c,api.h,header.h,utilities.c}: 4 new files.

Sat Oct 12 23:29:50 BST 2002  Olly Betts <olly@survex.com>

	* languages/: removed all the old .cvsignore files.

Sat Oct 12 22:34:01 BST 2002  Olly Betts <olly@survex.com>

	* api/omstem.cc,docs/stemming.html,docs/todo.xml,languages/: Replaced
	  our stemmers with those from Snowball.  Note that these give better
	  results, but this also means that existing databases won't work
	  quite correctly if they contain stemmed terms.

Sat Oct 12 17:17:26 BST 2002  Olly Betts <olly@survex.com>

	* configure.in,NEWS: Version 0.5.3.

Sat Oct 12 16:49:50 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,api/omvalueiteratorinternal.h,extra/parsequery.yy,
	  include/om/omdocument.h: Fixed std:: namespace issues to
	  allow compilation with GCC 3 once again.

Sat Oct 12 15:43:22 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Fri Oct 11 02:14:47 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/Makefile.am: Include test data for btreetest
	  in distribution tarball.

Fri Oct 11 01:43:03 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/{z_note,z_sequence,z_Cversion/,z_make/,z_test/}:
	  Removed all the unused old C btree stuff.

Thu Oct 10 17:32:10 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/{btree.cc,btree.h}: More Btree tidying.

Thu Oct 10 17:14:28 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/{bcursor.cc,btree.cc,btree.h}: Btree::prev* and
	  Btree::next* are no longer static methods.
	* backends/quartz/btree.h: Tweaked comments so doxygen will
	  understand them.

Thu Oct 10 16:12:29 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_postlist.cc: return docids rather
	  than passing in a pointer to fill in.

Thu Oct 10 16:08:22 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartzcheck.cc: Fixed #include-d files;
	  Example in usage message now uses the directory where
	  omega looks for its database by default.

Thu Oct 10 15:25:10 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc,backends/quartz/btree.h: More comment
	  improvements; Removed superfluous Cursor parameter from
	  Btree::add_kt() - it always gets passed the C member of Btree
	  which we have available anyway.

Thu Oct 10 14:49:11 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/btree.cc: Removed "struct" from in front of
	  Btree and Cursor; Updated and reformatted many comments.

Thu Oct 10 03:45:56 BST 2002  Olly Betts <olly@survex.com>

	* testsuite/backendmanager.cc: Reworded comment to make it clearer.

Thu Oct 10 03:29:52 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Wed Oct 09 14:05:07 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/{quartz_alltermslist.cc,quartz_alltermslist.h,
	  quartz_database.cc}: Implemented
	  QuartzAllTermsList::get_approx_size().

Wed Oct 09 10:46:42 BST 2002  Olly Betts <olly@survex.com>

	* extra/omparsequery.h,include/om/omvalueiterator.h: Don't use
	  "using std::foo;" in externally visible headers.

Wed Oct 09 10:26:05 BST 2002  Olly Betts <olly@survex.com>

	* extra/omparsequery.h: fixed unused parameter warning.

Tue Oct 08 20:32:46 BST 2002  Olly Betts <olly@survex.com>

	* tests/stemtest.cc: Added missing space to output.

Tue Oct 08 20:10:35 BST 2002  Olly Betts <olly@survex.com>

	* With GCC, add warning flags "-Wall -W" rather than "-Wall -Wunused"
	  (-Wall implies -Wunused anyway).  Fixed all the warnings this throws
	  up, except in languages/ (that code is to be replaced with Snowball
	  soon).

Tue Oct 08 19:57:03 BST 2002  Olly Betts <olly@survex.com>

	* testsuite/: Disable colour test output if stdout isn't a terminal;
	  reworked check for broken exception handling as the previous
	  version never seemed to fire; added "using" for all the things
	  we want from std::; improved how signal handlers are set and
	  unset; report exception class for exceptions derived from OmError
	  rather than a blanket "OMEXCEPT"; added private copy ctor and
	  assignment to test_driver to prevent copying.

Tue Oct 08 19:53:02 BST 2002  Olly Betts <olly@survex.com>

	* include/om/Makefile.am: remove include/om/om.h on "make distclean",
	  not "make clean".  Otherwise "./configure ; make clean ; make"
	  fails which is wrong.

Sun Oct 06 18:37:39 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.
	* docs/: Removed Martin's paper - background information for stemmers
	  is best left to the Snowball documentation.

Sat Oct 05 20:31:55 BST 2002  Olly Betts <olly@survex.com>

	* NEWS,configure.in: 0.5.2 release.

Sat Oct 05 03:01:49 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Sat Oct 05 02:09:35 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Fri Oct 04 22:34:12 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,testsuite/testutils.h: Code to spot mishandled exceptions
	  doesn't always work - noted this in PLATFORMS, and tweaked the code
	  a little.

Fri Oct 04 19:08:08 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/.cvsignore: Added quartzcheck.

Fri Oct 04 18:24:55 BST 2002  Olly Betts <olly@survex.com>

	* docs/: converted all text docs to HTML (except omsettings which will
	  has odd markup (LaTeX?) and will probably soon be obsolete anyway).
	* docs/todo.xml: updated.

Fri Oct 04 17:18:33 BST 2002  Olly Betts <olly@survex.com>

	* net/socketcommon.cc: Fixed handling of timeouts in the past.

Fri Oct 04 13:51:39 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,testsuite/testutils.h: Use typeid() to spot when GCC 2.95
	  mishandles an exception, and don't count this as a test failure.

Fri Oct 04 03:59:29 BST 2002  Olly Betts <olly@survex.com>

	* api/omdatabaseinternal.cc,backends/multi/multi_termlist.h,
	  matcher/multimatch.cc,matcher/networkmatch.cc,matcher/networkmatch.h:
	  pulled uses of dynamic_cast<> to higher up in the code.

Fri Oct 04 03:53:44 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,backends/quartz/{btree.cc,quartz_metafile.cc}: Fixed quartz
	  problems on platforms where sizeof(long) != 4.
	* PLATFORMS: Updated in the light of investigations into test failures
	  on x86 Redhat Linux - only multierrhandler1 with the remote backend
	  is actually a problem.

Wed Oct 02 16:32:48 BST 2002  Olly Betts <olly@survex.com>

	* NEWS: Updated for 0.5.1 release.

Wed Oct 02 16:01:50 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS,configure.in: 0.5.1 release.

Tue Oct 01 13:34:24 BST 2002  Olly Betts <olly@survex.com>

	* docs/: tweaked navigation links in index.html; converted bm25
	  text document to HTML and linked it in; added todo entry to
	  locate the "illusion of control" paper.

Tue Oct 01 12:48:41 BST 2002  Olly Betts <olly@survex.com>

	* docs/: renamed intro.html to install.html, and userman.html to
	  overview.html; changed navbar on index.html.

Tue Oct 01 12:37:20 BST 2002  Olly Betts <olly@survex.com>

	* bootstrap: fixed adding of directory with xapian.m4 in to
	  ACLOCAL_FLAGS; added trap to tell user if bootstrapping failed.

Tue Oct 01 12:33:38 BST 2002  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,bootstrap,buildall,xapian.spec.in,
	  autoconf/dir_contents,docs/todo.xml: Added bootstrap script as a
	  replacement for buildall (buildall left in place for now until
	  bootstrap receives wider testing).

Tue Oct 01 12:19:32 BST 2002  Olly Betts <olly@survex.com>

	* HACKING,Makefile.am,configure.in,PLATFORMS: require automake 1.6.3
	  (and hence autoconf 2.54) to fix problem building tests/internaltest
	  with Solaris make.

Mon Sep 30 20:30:42 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Improved wording about bogus OMEXCEPT failures);
	  Added results for OpenBSD 3.0 and Solaris 8 on x86 (both work).

Mon Sep 30 20:25:03 BST 2002  Olly Betts <olly@survex.com>

	* docs/: Pruned .cvsignore; removed cvs.html (link to CVS info
	  on website directly); removed using_stemmers.html - those
	  wishing to use the C API to the stemmers ought to look at
	  Snowball instead; include HTML versions of quickstart*.cc
	  in tarballs; improved wording in various places.

Mon Sep 23 19:33:31 BST 2002  Olly Betts <olly@survex.com>

	* net/Makefile.am: Fixed building of readquery.cc from readquery.ll.

Sun Sep 22 03:57:20 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Updated.

Fri Sep 20 15:09:25 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Added note about bogus OMEXCEPT test failures with
	  GCC 2.95.

Fri Sep 20 01:36:35 BST 2002  Olly Betts <olly@survex.com>

	* NEWS,PLATFORMS,configure.in: 0.5.0 release!

Fri Sep 20 01:01:52 BST 2002  Olly Betts <olly@survex.com>

	* Makefile.am: Perl module we need to process todo.xml is XML::Parser
	  not XML, so corrected error message.
	* configure.in: Commented out MSG_WARN() when Perl modules XML::Parser
	  or Text::Format aren't found.  In a release tarball, this only
	  matters if you modify docs/todo.xml, and the warning message(s) may
	  alarm those building the software.

Thu Sep 19 00:57:23 BST 2002  Olly Betts <olly@survex.com>

	* .cvsignore: Added depcomp, missing, mkinstalldirs.

Thu Sep 19 00:49:01 BST 2002  Olly Betts <olly@survex.com>

	* HACKING: Added note about safe way to generate files in make rules.

Thu Sep 19 00:45:51 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: Tested on Solaris 7 with GCC 2.95.3 (works) and Solaris 8
	  Sun Workshop C++ compiler (fails to compile).

Thu Sep 19 00:41:53 BST 2002  Olly Betts <olly@survex.com>

	* ar-wrapper-solaris,ltconfig,Makefile.am: libtool 1.4 doesn't use
	  ltconfig, and that's the only thing that uses ar-wrapper-solaris,
	  so removed both.  Fairly sure the problem they address was fixed
	  in libtool so time ago.  Xapian doesn't build with Sun's C++
	  compiler at the moment anyway, so it's moot for the release.

Thu Sep 19 00:26:37 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo2html.pl: Handle release "*" specially - it indicates
	  tasks to be done for each release.

Thu Sep 19 00:05:40 BST 2002  Olly Betts <olly@survex.com>

	* configure.in,include/om/om.h.in: Tweaked how generation of om.h
	  works to avoid problems with Sun's C++ compiler.

Wed Sep 18 19:21:47 BST 2002  Olly Betts <olly@survex.com>

	* net/Makefile.am,net/readquery.ll: #include <config.h>
	  must be included before any other headers, but that seems to be
	  impossible to arrange in lex/flex so we use echo and cat in the
	  Makefile to arrange this.

Wed Sep 18 17:35:00 BST 2002  Olly Betts <olly@survex.com>

	* include/om/Makefile.am: We want to install om/om.h, but not
	  distribute it or people with a different compiler to whoever
	  ran "make dist" will get the "ABI mismatch" error.

Wed Sep 18 13:16:14 BST 2002  Richard Boulton <richard@tartarus.org>

	* docs/.cvsignore: Add docs/doxygen_full_warnings.
	* include/om/.cvsignore: Add include/om/om.h.

Wed Sep 18 11:06:12 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* include/om/Makefile.am: We really should install om/om.h, or
	  applications can't build against us.

Wed Sep 18 05:10:24 BST 2002  Richard Boulton <richard@tartarus.org>

	* docs/doxygen_{api,full}_header.html_tmpl: Remove meta robots tag -
	  why shouldn't this be indexed?  Now the omega I set up pointing
	  at copies of this should actually index something.

Wed Sep 18 04:52:20 BST 2002  Olly Betts <olly@survex.com>

	* configure.in: Merged two sed invocations into one - we don't want
	  configure to run any slower than it has to.

Wed Sep 18 04:17:58 BST 2002  Richard Boulton <richard@tartarus.org>

	* configure.in: Don't put confdefs.h into SOURCEDOC_H_SRC - this
	  file only exists during the configure run.  Fixes failure of
	  "make doxygen_docs" in docs/

Tue Sep 17 13:07:39 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Updated PLATFORMS file.

Mon Sep 16 19:40:02 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: Updated.

Mon Sep 16 18:09:29 BST 2002  Olly Betts <olly@survex.com>

	* tests/api_db.cc: don't run consistency1 test on the remote backend
	  - it's particularly slow with that, and testing it there doesn't
	  actually improve the test coverage really.

Mon Sep 16 17:15:46 BST 2002  Olly Betts <olly@survex.com>

	* configure.in,docs/Makefile.am: Added workaround for pattern length
	  limits in Solaris sed.

Mon Sep 16 17:13:20 BST 2002  Olly Betts <olly@survex.com>

	* include/om/om.h.in: Added explanatory comments for developers.

Mon Sep 16 14:22:48 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* om/om.h needs to be in CLEANFILES or make distcheck fails

Mon Sep 16 13:37:04 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Now om/om.h is built from om/om.h.in, it may be in the build
	  directly. Consequently, we need to add that to the include path
	  for VPATH builds. Plus (also for VPATH), om/om.h needs to be
	  output after AC_OUTPUT, because otherwise the destination
	  directory may not exist.

Mon Sep 16 04:19:54 BST 2002  Olly Betts <olly@survex.com>

	* configure.in,docs/todo.xml,include/om/Makefile.am,include/om/om.h,
	  include/om/om.h.in: When building the library with GCC, generate
	  include/om/om.h with preprocessor code to check that any version
	  of GCC used to build applications has a matching C++ ABI.

	  This means that users get a nice explanatory error message rather
	  than a confusing link failure (or worse a program which builds
	  but crashes).  Another benefit is that the check happens near the
	  start of compilation of the first source file which uses Xapian
	  in the user's application, rather than during the first attempt
	  to link with Xapian.

Sun Sep 15 01:42:19 BST 2002  Olly Betts <olly@survex.com>

	* net/tcpserver.cc: Solved std mystery - "using namespace std;" was
	  inside a #ifdef which wasn't enabled!

Sun Sep 15 01:21:34 BST 2002  Richard Boulton <richard@tartarus.org>

	* tests/tcpserver.cc: Hacky fix to compile with gcc-3.2 snapshot in
	  Debian unstable - add a FIXME to work out why this is needed.
	* todo: add entry about checking ABI versions using
	  __GXX_ABI_VERSION macro.

Sat Sep 14 22:39:11 BST 2002  Olly Betts <olly@survex.com>

	* configure.in,tests/Makefile.am,tests/internaltest.cc: It turns out
	  that internaltest *does* need -fno-access-control, so put it back.
	  Not quite sure how I missed this.  Changed to skip refcnt tests
	  when -fno-access-control isn't available (rather than omitting them
	  entirely).

	* tests/api_db.cc: Fixed compile problem.

Sat Sep 14 21:44:34 BST 2002  Olly Betts <olly@survex.com>

	* internaltest: doesn't actually need -fno-access-control these
	  days, so removed it and the configure tests for it.

	* stemtest: recoded to be all in C++ and removed use of intermediate
	  files for random data tests - now runs ~15% faster; no longer need
	  HAVE_PERL so removed from configure.

	* apitest: use C++ streams rather than stdio; stubdb1 now cleans up
	  the temporary file it creates.

Sat Sep 14 12:54:52 BST 2002  Olly Betts <olly@survex.com>

	* docs/Makefile.am: fix "mv apidoc/latex/refman.ps avidoc.ps" which
	  fails after recent change.

Sat Sep 14 11:15:33 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Renamed simple* programs in quickstart docs to quickstart* to
	  avoid confusion with the simple* programs in xapian-examples.
	  (Thanks to Alex Bowley for pointing out the confusion.)

Sat Sep 14 10:00:35 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* configure.in: returned AC_CONDITIONAL for HAVE_PERL

Sat Sep 14 09:29:08 BST 2002  Richard Boulton <richard@tartarus.org>

	* buildall: change to srcdir before testing for necessary tools
	  so that scripts which guess which autotools version to use have more
	  information available to guess with: for example, the Debian
	  autoconf version guessing script looks for "configure.ac" as a sign
	  that autoconf 2.50+ is required.

Sat Sep 14 02:50:23 BST 2002  Olly Betts <olly@survex.com>

	* docs/distributed.txt,docs/quartzdesign.html,docs/todo.xml: assorted
	  documentation updates.

Sat Sep 14 02:10:12 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS: removed note about VPATH problems.

Sat Sep 14 02:02:58 BST 2002  Olly Betts <olly@survex.com>

	* btree.cc,btree.h: rearranged Btree::del() so control flow is clearer.

Sat Sep 14 01:56:44 BST 2002  Olly Betts <olly@survex.com>

	* HACKING,docs/Makefile.am: added evil hack to allow VPATH builds to
	  work with BSD make.

Wed Sep 11 11:29:07 BST 2002  Olly Betts <olly@survex.com>

	* backends/database_builder.cc: Quartz is fairly mature - change
	  comment which suggests that the btree names will change.

Wed Sep 11 11:13:43 BST 2002  Olly Betts <olly@survex.com>

	* configure.in: Don't double quote `$MISSING foo' as autoconf adds them
	* docs/Makefile.am: Use `test a = b' rather than `test a == b'

Tue Sep 10 14:50:16 BST 2002  Olly Betts <olly@survex.com>

	* configure.in: tweaked test for perl modules - stderr is now
	  fully suppressed on sh (which behaves slightly differently to bash).

Tue Sep 10 14:27:15 BST 2002  Richard Boulton <richard@tartarus.org>

	* backend_manager.cc: Fix stub database code so that it doesn't use
	  the gnu extension "getline()".

Tue Sep 10 13:51:20 BST 2002  Olly Betts <olly@survex.com>

	* quartz_table.cc: don't form tag when we just want to check if a
	  key is present before calling Btree::del().  Working out why
	  we can't call Btree::del() would still be worthwhile though.

Tue Sep 10 13:02:04 BST 2002  Olly Betts <olly@survex.com>

	* quartztest.cc: removed unused #include-s; describe valid options
	  in usage message.

Tue Sep 10 02:07:29 BST 2002  Olly Betts <olly@survex.com>

	* remote backend: implemented term_exists() and get_termfreq();
	  added test to check they work.

Mon Sep  9 12:59:15 BST 2002  Richard Boulton <richard@tartarus.org>

	* Add stub databases: if backend type is auto, and auto_dir points
	  to a file, read in settings from the file (overwriting the
	  existing ones), and then use them to open the database.
	  This allows, for example, omega to open a remote database by
	  putting in a stub database file in the omega directory.
	  Updated documentation for opening databases in userman.html.
	* apitest: Added test for stub databases.

Mon Sep 09 02:26:36 BST 2002  Olly Betts <olly@survex.com>

	* Documentation updates: move suggested books into intro_ir.html
	  and added URL for citeseer reference Richard posted to mailing
	  list recently; clarified wording in a couple of places.

Sat Sep  7 12:52:12 2002  James Aylett  <tartarus@users.sourceforge.net>

	* docs: fixed references to OmDocumentContents (now OmDocument)
	  which had clearly been broken for a while. Also fixed get_data()
	  and set_data() example usage so it reflects reality (I hope).

Wed Sep 04 22:46:17 BST 2002  Olly Betts <olly@survex.com>

	* Corrected min_item.wt to min_wt in two assertions.

Thu Aug 15 11:42:20 BST 2002  Richard Boulton <richard@tartarus.org>

	* buildall: Only add the directory derived from xapian-config
	  to ACLOCAL_FLAGS if it actually exists.

Mon Aug 12 01:13:55 BST 2002  Richard Boulton <richard@tartarus.org>

	* quartz_table.cc: Check that a key exists before calling
	  Btree::del() - there seems to be a bug in the btree code
	  causing a failure when deleting keys if they don't exist.
	  This work around appears to make things work correctly, but
	  won't be terribly efficient.

Mon Aug 12 00:09:21 BST 2002  Richard Boulton <richard@tartarus.org>

	* quartz_table_manager.cc: When unable to apply modifications,
	  call cancel on the buffered table after reopening disk table
	  at old revision - otherwise, the entry count gets messed up.
	* quartz_table.cc, quartz_database.cc: Improve debugging and
	  error reporting: I'm trying to work out why the failure Olly
	  reported is occurring.

Sat Aug 10 15:12:42 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed missing include in quartzcheck.cc

Sat Aug 10 14:57:17 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed typo in quartzcheck.cc

Tue Jul 23 22:12:34 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Added a note to the effect that the indexgraph stuff isn't
	  really considered useful to the HTML document introducing it.

Tue Jul 23 22:09:39 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Added some comments in quartztest test_create1(), in case anyone
	  else who didn't write it needs to understand it.

	* Added Olly as an active participant to the AUTHORS file :)

Tue Jul 23 21:59:50 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Reworded quickstart document so it does not refer to the example
	  code (it was never actually in sync).

Mon Jul 22 14:07:18 BST 2002  Sam Liddicott <sam@ananova.com>

	* Forgot to actually add the quartzcheck.cc file last time

Mon Jul 22 13:28:09 BST 2002  Sam Liddicott <sam@ananova.com>

	* Add buildprereq to package
	  Add quartzcheck which runs btree::check to backends

Tue Jul 16 09:44:56 BST 2002  Sam Liddicott <sam@ananova.com>

	* Fix banding problem; bands are now based on the percentage
	  not the weight, and using integer maths to avoid problems
	  with ceil() rounding up supposed integers which are really
	  slightly larger due to precision errors

Thu Jul 11 00:16:22 BST 2002  Olly Betts <olly@survex.com>

	* configure.in, docs/Makefile.am: configure fixes for Solaris - clear
	  cached result for fdatasync since it may be wrong if we decide we
	  need to link librt; split SOURCEDOC_SRC into two to avoid hitting
	  4096 char line length in Solaris sed.

Tue Jul 09 17:47:31 BST 2002  Olly Betts <olly@survex.com>

	* PLATFORMS, tests/Makefile.am: improved internaltest.cc automake rules
	  - they should now work in VPATH builds with Solaris make.

Tue Jul 09 03:30:41 BST 2002  Olly Betts <olly@survex.com>

	* configure.in, docs/Makefile.am: Fixed up apidoc and sourcedoc
	  dependencies so that they work correctly in VPATH builds.  Also
	  only use portable find arguments to generate SOURCEDOC_SRC.

Sat Jul 06 13:53:27 BST 2002  Olly Betts <olly@survex.com>

	* xapian.spec.in: Updated in preparation for release.

Sat Jul 06 13:04:45 BST 2002  Olly Betts <olly@survex.com>

	* docs/Makefile.am: Run latex twice to get forward references resolved.

Fri Jul 05 18:23:08 BST 2002  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: better (perhaps even completely correct) fix
	  for sorting into bands.

	* matcer/localmatch.cc: removed entirely bogus comment from over-eager
	  cut-and-paste.

	* tests/api_db.cc: added otherwise pointless statement to deldoc3
	  which seems to fix occasional miscompilation by GCC 2.95.

Fri Jul 05 16:37:12 BST 2002  Olly Betts <olly@survex.com>

	* docs/Makefile.am: "make dist" now fails if dot (part of graphviz)
	  isn't installed.

Fri Jul 05 08:54:33 BST 2002  Sam Liddicott <sam@ananova.com>

	* bindings/: removed some typemap hacks as swig has better typemaps now

Fri Jul 05 08:46:06 BST 2002  Sam Liddicott <sam@ananova.com>

	* matcher/multimatch.cc: Quick hack to stop 100% being in a band all on
	  its own.  The real problem is that bands need to include the integer
	  at the upper end of the range, rather than the lower end.

Thu Jul 04 16:23:52 BST 2002  Olly Betts <olly@survex.com>

	* docs/mkdoc.pl: Fixed to work in VPATH builds.

Thu Jul 04 12:42:06 BST 2002  Olly Betts <olly@survex.com>

	* configure.in, docs/Makefile.am: use "missing" to give more helpful
	  errors when we don't find tools we need.

Wed Jul 03 12:39:15 BST 2002  Olly Betts <olly@survex.com>

	* NEWS: incorporated recent changes into provisional version.

	* docs/: sorted out make rules for running doxygen; don't tell doxygen
	  to build man pages which we aren't using.

Tue Jul 02 16:36:54 BST 2002  Olly Betts <olly@survex.com>

	* docs/: run through ispell; fixed OM_MOP to OmQuery::OP; other
	  corrections.

Fri Jun 28 02:59:49 BST 2002  Olly Betts <olly@survex.com>

	* Backend "auto" now works when creating an OmWritableDatabase which
	  doesn't already exist - it'll pick a backend which supports writing
	  and is compiled in (currently this means quartz).

Thu Jun 27 20:31:13 BST 2002  Richard Boulton <richard@tartarus.org>

	* backends/quartz/btreetest.cc (sequent1): Add regression test for
	  recently fixed bug with sequential addition.
	* backends/quartz/z_data/ordnum[+-]: Data files for new test.

Thu Jun 27 13:13:37 BST 2002  Olly Betts <olly@survex.com>

	* Documentation fettling: removed docs/Notes and
	  docs/coding_policy.txt moving relevant content into HACKING,
	  common/postlist.h, docs/todo.xml, and include/om/omtypes.h; install
	  docs as PostScript rather than DVI; include text docs in tarball and
	  install them; "make dist" will now fail if a tool needed to build
	  docs is missing; removed last vestiges of Doc++ support;
	  doc/Makefile no longer uses include (include isn't portable);
	  improved doc/tests.txt.

Thu Jun 27 12:10:37 BST 2002  Olly Betts <olly@survex.com>

	* apitest: doesn't directly use anything from utils.h, so don't
	  #include it.

Thu Jun 27 12:05:53 BST 2002  Olly Betts <olly@survex.com>

	* Removed includetest - it was useful early in development, but isn't
	  really now.

Wed Jun 26 22:09:57 BST 2002  Olly Betts <olly@survex.com>

	* apitest: deldoc2 and deldoc3 now pass when the library is compiled
	  with --enable-debug.

Wed Jun 26 19:35:56 BST 2002  Olly Betts <olly@survex.com>

	* Removed code which causes quartztest to fail with an --enable-debug
	  build.

Wed Jun 26 13:55:11 BST 2002  Olly Betts <olly@survex.com>

	* todo.xml: added note to fix 100% being in its own sort band.

Wed Jun 26 13:46:02 BST 2002  Richard Boulton <richard@tartarus.org>

	* btree.cc: Fix splitting of blocks in sequential mode to ensure
	  that split happens no earlier than the midpoint.

Wed Jun 26 12:32:47 BST 2002  Richard Boulton <richard@tartarus.org>

	* btree.cc: Asserts to check that add_item in sequential mode
	  when splitting a block is not trying to add to the wrong block,
	  or to add to a new block which is not empty (or containing more
	  than one item).

Tue Jun 25 17:53:19 BST 2002  Olly Betts <olly@survex.com>

	* Assert that the value of c is sane in GETINT1, etc.

Tue Jun 25 16:30:09 BST 2002  Olly Betts <olly@survex.com>

	* btreetest.cc: use C++ IO rather than C stdio; removed commented out
	  LFSinsertdelete1 test (it was never written and a test suite which
	  creates 2G files is probably a bit too resource hungry).

Tue Jun 25 13:56:01 BST 2002  Olly Betts <olly@survex.com>

	* btree/quartz: More use of const pointers; more use of C++ strings.

Wed Jun 19 08:56:00 BST 2002  Sam Liddicott <sam@ananova.com>

	* Fixed spec file to build for prefix=/usr not just install there

Fri Jun 14 16:35:04 BST 2002  Olly Betts <olly@survex.com>

	* docs/todo.xml: added 4 new tasks.

Fri Jun 14 16:33:08 BST 2002  Olly Betts <olly@survex.com>

	* backends/quartz/quartz_database.cc: Cosmetic changes.

Wed Jun 12 16:31:11 BST 2002  Olly Betts <olly@survex.com>

	* QuartzDbKey, QuartzDbTag: just use a string instead of a string
	  wrapped in a structure.  We've stopped inflicting this on external
	  developers (OmData, OmKey/OmValue) so why inflict it on ourselves?

Wed Jun 12 12:26:04 BST 2002  Olly Betts <olly@survex.com>

	* Btree_item: use C++ strings rather than trying to reimplement them.

	* Fix a few warnings about unused parameters.

Wed Jun 12 02:53:16 BST 2002  Olly Betts <olly@survex.com>

	* Btree_full_compaction, Btree_close: removed - they just wrap methods
	  of Btree.

Wed Jun 12 02:28:30 BST 2002  Olly Betts <olly@survex.com>

	* Btree_item_create and Btree_item_lose subsumed into Btree_item
	  and ~Btree_item.

	* Pass C++ strings rather than const char * into various Btree open
	  methods.

	* Removed pointless wrapper functions for Btree open methods.

	* Btree_quit removed (just use delete directly).

	* Btree_create removed (just use Btree::create directly).

Wed Jun 12 00:48:52 BST 2002  Olly Betts <olly@survex.com>

	* form_key is now a method of Btree; more passing of strings rather
	  than pointer/length pairs); buffer overrun check added to btreetest.

Tue Jun 11 18:04:08 BST 2002  Olly Betts <olly@survex.com>

	* More C++ like interfaces (e.g. bool returns, strings rather than
	  pointer/length pairs).

Tue Jun 11 16:40:08 BST 2002  Richard Boulton <richard@tartarus.org>

	* quartz/btree.cc: Fix so that it compiles when BTREE_FULL_DEBUG is on,
	  and added a couple of Assert()s.

Tue Jun 11 13:09:39 BST 2002  Olly Betts <olly@survex.com>

	* Removed a number of btree functions which were simply wrappers for
	  calling methods on their first parameter, and most of which weren't
	  even used!

	* btree_api.txt: updated to better reflect the object-ized API.

Tue Jun 11 02:01:53 BST 2002  Olly Betts <olly@survex.com>

	* Btree::make_index_item(): Added check for buffer overflow.

Tue Jun 11 01:49:51 BST 2002  Olly Betts <olly@survex.com>

	* Still more...

Tue Jun 11 01:08:03 BST 2002  Olly Betts <olly@survex.com>

	* More btree and quartz tidying.

Mon Jun 10 20:33:24 BST 2002  Olly Betts <olly@survex.com>

	* btree.cc,btree.h: cleaned up further.

Mon Jun 10 15:54:49 BST 2002  Olly Betts <olly@survex.com>

	* Further btree and quartz cleanups.

Mon Jun 10 14:46:00 BST 2002  Olly Betts <olly@survex.com>

	* Fixed typo in recent quartzdump change.

Mon Jun 10 13:20:20 BST 2002  Olly Betts <olly@survex.com>

	* Quartz clean-ups - especially QuartzTermList.

Mon Jun 10 12:18:40 BST 2002  Olly Betts <olly@survex.com>

	* Bcursor_create made a method of class Btree as suggested by a FIXME.

Mon Jun 10 01:57:53 BST 2002  Olly Betts <olly@survex.com>

	* More btree fixes and tidying.  Fixed bug introduced by typo in
	  previous change which causes tests to fail.

Sun Jun 09 17:50:28 BST 2002  Olly Betts <olly@survex.com>

	* btree_util.h: use inlines rather than macros.

	* Fix CompileTimeAssert() to avoid potential clashes.

Sun Jun 09 12:46:25 BST 2002  Olly Betts <olly@survex.com>

	* btree.cc,btree.h: fixed bug caused by local variable masking member
	  variable with same name.  Tidied up a lot.

Wed Jun  5 12:22:57 BST 2002  Sam Liddicott <sam@ananova.com>

	* Fix OmQuery::op enum handling.

Mon May 27 14:28:06 BST 2002  Sam Liddicott <sam@ananova.com>

	* Add crash-protected next() to OmMSetIterator

	* Add ->valid() method to iterator which returns FALSE if
	  the iterator has reached the end

	* Added namespace fixes for latest cvs swig to be released next month

Fri May 24 15:28:18 BST 2002  Sam Liddicott <sam@ananova.com>

	* Took out the string typemaps as swig now has them in stl.i

	* Added om_percent to omtypes.i - I wonder if we might just
	  read omtypes.h instead, as swig can

	* Added OmMSetIterator and made changes to OmMSet

Fri May 24 11:46:50 BST 2002  Sam Liddicott <sam@ananova.com>

	* Now support get_matching_terms via swig
	  I'm not sure how to generally map iterators to php but in
	  cases where we know only a small number of items exist
	  to be iterated over it makes sense to return them as a
	  php array

Tue May 21 15:28:40 BST 2002  Richard Boulton <richard@tartarus.org>

	* multi_postlist.cc (get_doclength):  Get the document length from
	  the appropriate sub-postlist, rather than from the database.
	  This causes a huge speedup in some cases, since it avoids having
	  to go to the termlist database for every document considered for
	  an mset to get the document length.
	  Added an AssertParanoid to check that the value from the postlist
	  is the same as that from the database.
	  This problem was noticed because "delve -v" was running several
	  orders of magnitude slower than without -v - it is now of
	  comparable speed.

Tue May 21 15:27:37 BST 2002  Richard Boulton <richard@tartarus.org>

	* quartz_values.cc: Small fixes to enable it to compile with debug
	  turned on.

Fri May 17 14:52:45 BST 2002  Olly Betts <olly@survex.com>

	* OmQueryParser::set_database() method added.

	* Added disabled code to search for a keyword used in the query.

	* Added ' and * to the list of "phrase making characters".

	* To make a phrase, a phrase-maker must be followed by an alphanumeric
	  rather than just a non-space.

Fri May 17 14:49:54 BST 2002  Olly Betts <olly@survex.com>

	* INSTALL: GCC 3.1 release version works, so noted this.

	* HACKING: Added note about warning-free compilation being desirable
	  and suggesting using "./configure CFLAGS=-Werror" to promote this.

	* NEWS: Minor updates.

Thu May 16 16:57:42 BST 2002  Olly Betts <olly@survex.com>

	* Minor tweaks to get a warning-less compile with GCC 3.1.

Thu May 16 13:36:19 BST 2002  Sam Liddicott <sam@ananova.com>

	* Clean up the spec file

Thu May 16 12:20:09 BST 2002  Olly Betts <olly@survex.com>

	* Documented match_sort_key.

Thu May 16 10:42:47 BST 2002  Sam Liddicott <sam@ananova.com>

	* A few quick tips from Olly, now the tarfile name and version no.
	  stuff comes from autoconf so the spec file won't need tweaking
	  each time the version number changes

Wed May 15 15:48:42 BST 2002  Sam Liddicott <sam@ananova.com>

	* This can build RPM packages.
	  Get the make-dist tarball and do:
	  rpm -ta xapian-core-0.4.1-cvs.tar.gz
	  and it will make source and binary rpms
	  It doesn't build bindings packages yet but this will come when I
	  build them

Wed May 15 13:27:21 BST 2002  Richard Boulton <richard@tartarus.org>

	* buildall: Allow use of automake 1.6.1 and later, and CVS
	  automake (versions 1.6[a-z])

Wed May 15 11:40:58 BST 2002  Sam Liddicott <sam@ananova.com>

	* SWIG cvs (php4) now writes all output files to the same directory as
	  the main output file, so need for hacks to move these, also no more
	  clobbering our source files when building in the checkout dir

Tue May 14 21:54:02 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Updated PLATFORMS file.

Tue May 14 16:48:07 BST 2002  Olly Betts <olly@survex.com>

	* Removed multiple-include protection from config.h - if it's
	  included more than once it's now a bug and we want to know!

Tue May 14 15:25:05 BST 2002  Olly Betts <olly@survex.com>

	* OmQueryParser: parse acronyms as a single term (so "E.T." -> "ET"
	  and "N.A.T.O" -> "NATO").

Tue May 14 15:23:20 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed config.h includes: source definition (ie not header) files
	  #include <config.h> as their first action.

Tue May 14 14:47:00 BST 2002  Olly Betts <olly@survex.com>

	* Updated todo.

	* extra/parsequery.yy: Fettled indentation.

Tue May 14 13:14:51 BST 2002  Olly Betts <olly@survex.com>

	* Added test case for new "embedded &" rule, and fix problem bug it
	  revealed.

Tue May 14 13:10:33 BST 2002  Olly Betts <olly@survex.com>

	* OmQueryParser: Parse <word>&<word> as a single term (e.g. AT&T,
	  M&S, A&P).

Tue May 14 11:50:03 BST 2002  Olly Betts <olly@survex.com>

	* When including config.h, always specify it as <config.h>, not
	  "config.h", and always do it first.  Both are recommended by
	  the autoconf documentation.

Mon May 13 17:17:13 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* missing fallback rule all-local in docs/Makefile.am was failing
	  the build on Solaris

Mon May 13 15:50:31 BST 2002  Sam Liddicott <sam@ananova.com>

	* Use new %extends notation for swig.

	* Update for new omValue usage

	* Add omqueryparser support

Mon May 13 15:12:30 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* shipped getopt will now build in absence of system getopt

Mon May 13 15:09:17 BST 2002  Olly Betts <olly@survex.com>

	* configure.in: Moved AH_TOP/AH_BOTTOM to more logical place.

	* docs/todo.xml: Updated.

Mon May 13 14:13:27 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* added getopt to DIST_SUBDIRS so distributions work

Fri May 10 14:54:06 BST 2002  Olly Betts <olly@survex.com>

	* getopt/: Checked in files I missed last time.

Fri May 10 14:35:52 BST 2002  Olly Betts <olly@survex.com>

	* Make sure GNU getopt is linked to everything which might need it so
	  we build in non-glibc environments.

Fri May 10 13:42:59 BST 2002  Olly Betts <olly@survex.com>

	* Replaced second match_sort_key optimisation with one which is
	  faster and not flawed.

Thu May 09 18:27:30 BST 2002  Olly Betts <olly@survex.com>

	* match_sort_key now runs at a sensible speed (approx. 20x speed
	  up on my test case).

Thu May 09 16:58:11 BST 2002  Olly Betts <olly@survex.com>

	* Added another optimisation for match_sort_key - my test case
	  is now 25% faster (still slow though).

Thu May 09 11:57:59 BST 2002  Olly Betts <olly@survex.com>

	* NEWS, PLATFORMS, README: Updated to something approximating what we
	  want for a release.

	* docs/todo.xml: Updated.

Thu May 09 10:57:59 BST 2002  Olly Betts <olly@survex.com>

	* Removed references to match_max_or_terms (which was replaced
	  by OmQuery::OP_ELITE_SET long, long ago).

Wed May 08 17:38:50 BST 2002  Olly Betts <olly@survex.com>

	* Improved api documentation comments.

Wed May 08 17:09:14 BST 2002  Olly Betts <olly@survex.com>

	* Include findheaders.pl in tarball.

Wed May 08 16:09:14 BST 2002  Olly Betts <olly@survex.com>

	* Killed off acconfig.h.

Wed May 08 15:53:11 BST 2002  Olly Betts <olly@survex.com>

	* Added autom4te-*.cache to .cvsignore.

Wed May 08 15:50:56 BST 2002  Olly Betts <olly@survex.com>

	* Rebuild docs on "make", not just "make dist" or "make install".

Wed May 08 15:07:01 BST 2002  Olly Betts <olly@survex.com>

	* Added workaround for problems with <fcntl.h> on Solaris when LFS
	  is enabled.

Wed May 08 13:44:10 BST 2002  Olly Betts <olly@survex.com>

	* Matcher can now sort on a key.  Can be rather slow at present...

Wed May 08 13:15:21 BST 2002  Olly Betts <olly@survex.com>

	* Updated todo.

Wed May 08 12:22:53 BST 2002  Olly Betts <olly@survex.com>

	* Removed ltmain.sh-s from CVS.

Wed May 08 12:21:32 BST 2002  Olly Betts <olly@survex.com>

	* buildall: run libtoolize; stripped out unnecessary stuff.

Wed May 08 09:44:45 BST 2002  Olly Betts <olly@survex.com>

	* matcher/msetpostlist.cc: Removed bogus comment cut and pasted from
	  matcher/mergepostlist.cc.

Tue May 07 17:51:57 BST 2002  Olly Betts <olly@survex.com>

	* It's "m4_include", not "m4include".

Tue May 07 17:52:36 BST 2002  Olly Betts <olly@survex.com>

	* Added autoconf/type_socklen_t macro.

Tue May 07 16:50:20 BST 2002  Olly Betts <olly@survex.com>

	* Now require autoconf 2.50, which allows us to clean up some of the
	  more unpleasant parts of the build system.

Tue May 07 14:55:37 BST 2002  Olly Betts <olly@survex.com>

	* Added "match_sort_bands" option to sort results within relevance
	  bands.  Currently the sort within each band is by document id, which
	  isn't really very useful.  The plan is to allow sorting by a key.

Tue May 07 14:54:12 BST 2002  Olly Betts <olly@survex.com>

	* Sorted out tests/findheaders.pl wrt last change.

Tue May 07 13:12:23 BST 2002  Olly Betts <olly@survex.com>

	* Run perl scripts from Makefiles explicitly with $(PERL) rather than
	  having them as generated files in AC_OUTPUT.

Mon May  6 16:04:37 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Distribution fixes: make clean should now clear up all
	  required files.

Mon May  6 14:42:46 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Don't include dlfcn.h since we don't use it (and doesn't exist
	  on some target platforms).

Mon May  6 14:07:24 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Minor documentation corrections.

Fri May 03 18:14:14 BST 2002  Olly Betts <olly@survex.com>

	* Changed autoconf/automake project name to xapian-core, and updated
	  the documentation to reflect this.

	* Disabled the bindings from being included in distribution tarballs.

Fri May 03 18:13:43 BST 2002  Olly Betts <olly@survex.com>

	* Updated todo list.

Fri May  3 18:02:06 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Overloading ambiguity resolutions for linux/alpha build on CF

Fri May 03 17:13:36 BST 2002  Olly Betts <olly@survex.com>

	* buildall: Don't run configure or make; removed --no-make and --quiet.

Fri May  3 16:52:01 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* tests/testdata/etext.txt needs to be included in the distribution

Fri May 03 16:18:38 BST 2002  Olly Betts <olly@survex.com>

	* Removed OmValue in favour of simply using a string (analogous to
	  recent OmData change).

Fri May 03 14:52:04 BST 2002  Olly Betts <olly@survex.com>

	* Removed unused om_docname typedef.

Fri May 03 14:42:31 BST 2002  Olly Betts <olly@survex.com>

	* Terminology change - a "key" (in the OmKey sense) is now a "value".

Fri May  3 14:31:57 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed up todo list and HTML generation script to cope with
	  items without an assigned priority.

Fri May 03 14:29:58 BST 2002  Olly Betts <olly@survex.com>

	* It's HACKING (not INSTALL) that has details of developer tools.

Thu May 02 15:57:48 BST 2002  Olly Betts <olly@survex.com>

	* Removed OmData - just return and take a string instead.

Thu May 02 14:40:21 BST 2002  Olly Betts <olly@survex.com>

	* docs/.cvsignore: updated.

Thu May 02 14:38:36 BST 2002  Olly Betts <olly@survex.com>

	* Removed assorted references to pthread locking; updated HACKING.

Thu May 02 14:15:47 BST 2002  Olly Betts <olly@survex.com>

	* Stripped out OmBatchEnquire stuff, as it's unlikely to get sorted
	  out any time soon, and it can be extracted from CVS when someone
	  wants it.

Thu May 02 13:50:04 BST 2002  Olly Betts <olly@survex.com>

	* Check for bison >= 1.35 in buildall.

Wed May 01 17:39:57 BST 2002  Olly Betts <olly@survex.com>

	* Removed lingering references to Omsee and OpenMuscat.

Wed May 01 16:34:13 BST 2002  Olly Betts <olly@survex.com>

	* Removed unused methods from NetClient (read_data and write_data).

Wed May 01 14:01:12 BST 2002  Olly Betts <olly@survex.com>

	* Added test consistency1 to check matcher optimisations don't
	  result in inconsistent results (i.e. that same matches and
	  weights are returned regardless of size of mset asked for).

Wed May 01 11:48:10 BST 2002  Olly Betts <olly@survex.com>

	* Fixed mismatched tags in todo.xml.

Wed May 01 11:46:42 BST 2002  Olly Betts <olly@survex.com>

	* Updated todo.

Wed May 01 11:40:47 BST 2002  Olly Betts <olly@survex.com>

	* Corrected configure warning message - it's XML::Parser not XML.

Wed May 01 11:34:49 BST 2002  Olly Betts <olly@survex.com>

	* Tweaks to get queryparser building cleanly.

Tue Apr 30 17:44:48 BST 2002  Olly Betts <olly@survex.com>

	* Updated query parser in extra from the updated one in omega,
	  and fettled it to cope better with multiple instantiations
	  (though it's a long way from being reentrant at the moment).

Tue Apr 30 11:03:44 BST 2002  Olly Betts <olly@survex.com>

	* Updated todo.

Mon Apr 29 19:28:04 BST 2002  Olly Betts <olly@survex.com>

	* More string.c_str() tidying.

Mon Apr 29 17:41:33 BST 2002  Olly Betts <olly@survex.com>

	* Tidied up some uses of string.c_str().

	* Cleaned up todo list.

Mon Apr 29 16:08:21 BST 2002  Olly Betts <olly@survex.com>

	* Updated buildall to check various tools have the required version
	  numbers.

Mon Apr 29 15:58:57 BST 2002  Olly Betts <olly@survex.com>

	* Tweaked use of HAVE_STREAMBUF

Fri Apr 26 14:41:09 BST 2002  Sam Liddicott <sam@ananova.com>

	* Swig is now modified so it can build config.m4 and Makefile.in
	  for php modules so I removed these from bindings/php4

Tue Apr 23 18:21:03 BST 2002  Olly Betts <olly@survex.com>

	* Tried compiling with GCC 3.1 prerelease snapshot and fixed various
	  STL-related warnings (mostly uses of istrstream).

	* Fixed usage of AM_CFLAGS and AM_CXXFLAGS.

Tue Apr 23 15:48:36 BST 2002  Olly Betts <olly@survex.com>

	* Updated buildall (and had to tweak it again, sigh).

Tue Apr 23 14:21:01 BST 2002  Sam Liddicott <sam@ananova.com>

	* Added typemap conversion to generate OmSettings from php hash
	* Changed order of classes in interface file

Tue Apr 23 14:20:05 BST 2002  Olly Betts <olly@survex.com>

	* Revamped xapian-config and xapian.m4.  Important change - it's now
	  "xapian-config --cxxflags" and XAPIAN_CXXFLAGS, not --cflags and
	  _CFLAGS.

Mon Apr 22 17:58:56 BST 2002  Olly Betts <olly@survex.com>

	* Removed leak checker.

Mon Apr 22 13:40:01 BST 2002  Olly Betts <olly@survex.com>

	* Tiny code tweak.

Mon Apr 22 13:11:32 BST 2002  Olly Betts <olly@survex.com>

	* Write debug log using unbuffered IO and O_APPEND which should prevent
	  the log file becoming garbled when used from applications which use
	  Xapian objects in multiple threads.

Mon Apr 22 12:19:18 BST 2002  Olly Betts <olly@survex.com>

	* Updated copyright notices for last change.

Mon Apr 22 11:20:28 BST 2002  Olly Betts <olly@survex.com>

	* Removed thread locks.

Fri Apr 19 17:38:23 BST 2002  Olly Betts <olly@survex.com>

	* Removed completed tasks from todo list.

Fri Apr 19 17:26:23 BST 2002  Olly Betts <olly@survex.com>

	* Removed placeholder code for OmQuery::OP_PERCENT_CUTOFF - it's
	  actually impossible to implement since we started rescaling
	  percentages so that 100% is attainable.

Fri Apr 19 16:42:42 BST 2002  Olly Betts <olly@survex.com>

	* Tracked down and fixed the bug in the quartz backend which was making
	  test poslist2 fail.

Fri Apr 19 16:06:39 BST 2002  Olly Betts <olly@survex.com>

	* Fixed some compilation problems which I somehow failed to notice
	  before the last check-in.

Fri Apr 19 15:04:13 BST 2002  Olly Betts <olly@survex.com>

	* Added more RETURN(...) wrappers.

Fri Apr 19 14:46:19 BST 2002  Olly Betts <olly@survex.com>

	* Added more DEBUGCALL tracing to quartz.

Fri Apr 19 13:29:57 BST 2002  Olly Betts <olly@survex.com>

	* Minor tweaks to quartz_database.cc.

Fri Apr 19 13:07:50 BST 2002  Olly Betts <olly@survex.com>

	* Moved test poslist1 into correct place and renamed it to poslist2
	  since there's already a poslist1...

Fri Apr 19 11:19:15 BST 2002  Olly Betts <olly@survex.com>

	* poslist1 (when actually run!) reveals that Quartz fails to throw
	  errors in this case.  Disabled test for now, as I can't see why it
	  fails to throw...

Thu Apr 18 17:44:56 BST 2002  Olly Betts <olly@survex.com>

	* Added poslist1 test as suggested by a TODO entry.

Thu Apr 18 14:17:24 BST 2002  Olly Betts <olly@survex.com>

	* buildall: Removed search for GNU make (as of automake
	  1.5 it's not needed for automake and we aim to have portable
	  makefiles).  Made buildall more portable.

Thu Apr 18 14:16:18 BST 2002  Olly Betts <olly@survex.com>

	* xapian-config.nodep is a generated file, so don't look for it in
	  srcdir.

Thu Apr 18 12:45:04 BST 2002  Olly Betts <olly@survex.com>

	* Added bindings/php4/xapian/.cvsignore.

Thu Apr 18 12:36:53 BST 2002  Olly Betts <olly@survex.com>

	* Minor tweaks to "Makefile" section in HACKING.

Thu Apr 18 12:26:21 BST 2002  Olly Betts <olly@survex.com>

	* Yet more Makefile portability fixes; added section to HACKING
	  summarising my recent experiences.

Thu Apr 18 11:26:37 BST 2002  Olly Betts <olly@survex.com>

	* Corrected the sense of the test in the previous check-in.

Thu Apr 18 11:08:04 BST 2002  Olly Betts <olly@survex.com>

	* Use case instead of echo/sed to replace dirname.

Thu Apr 18 10:19:01 BST 2002  Olly Betts <olly@survex.com>

	* Another Makefile portability tweak.

Wed Apr 17 16:07:02 BST 2002  Olly Betts <olly@survex.com>

	* bindings/php4/Makefile.am: Fixed a couple of problems with
	  recent changes.

Wed Apr 17 15:32:44 BST 2002  Olly Betts <olly@survex.com>

	* Makefile portability improvements.

Wed Apr 17 14:29:21 BST 2002  Olly Betts <olly@survex.com>

	* Replaced uses of GNU make specific features with more portable
	  ones.

Wed Apr 17 12:43:07 BST 2002  Olly Betts <olly@survex.com>

	* Update todo list.

Wed Apr 17 12:41:03 BST 2002  Olly Betts <olly@survex.com>

	* Removed BrightStation's logo from the documentation.

Wed Apr 17 12:27:07 BST 2002  Olly Betts <olly@survex.com>

	* xapian-config: Removed --uninst support - it's very hard to make it
	  work reliably and we're better off directing our efforts towards
	  improving the library than trying to get it working and keep it
	  working.

Wed Apr 17 10:39:02 BST 2002  Olly Betts <olly@survex.com>

	* Fixed btreetest code to use new names "ord+" and "ord-" for
	  datafiles; disabled LFSinsertdelete1 test as it's exactly the
	  same as insertdelete1 (despite the comment above which suggests
	  it tests files >2G).

Mon Apr 15 17:14:22 BST 2002  Olly Betts <olly@survex.com>

	* Fix a few OmDatabase::InternalInterface uses I'd somehow missed.

Mon Apr 15 16:08:20 BST 2002  Olly Betts <olly@survex.com>

	* Mark internal classes as @internal for doxygen; removed all uses
	  of OmDatabase::InternalInterface as it's no longer needed.

Mon Apr 15 15:42:47 BST 2002  Olly Betts <olly@survex.com>

	* Updated TODO list.

Mon Apr 15 2002  Sam Liddicott <sam@ananova.com>

	* Hacked around bindings and bindings/php to remove some SWIG
	  workarounds.  SWIG cvs + some new non-committed patches is need still.

Mon Apr 15 12:12:05 BST 2002  Olly Betts <olly@survex.com>

	* stemtest: getopt fix.

	* stemtest.pl.in: output now: less verbose by default and coloured.

Mon Apr 15 11:18:58 BST 2002  Olly Betts <olly@survex.com>

	* Updated HACKING to say that automake 1.5 is required, and note that
	  automake 1.6.1 is better than 1.6.

Sat Apr 13 20:35:51 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed stemtest getopt usage so it works again.

Sat Apr 13 20:20:52 BST 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Fixed omtcpsrv getopt usage so it works again.

Fri Apr 12 16:24:06 BST 2002  Olly Betts <olly@survex.com>

	* Require automake 1.5.

Fri Apr 12 12:11:57 BST 2002  Olly Betts <olly@survex.com>

	* omtcpsrv: Namespace fixes.

Fri Apr 12 12:25:42 BST 2002  Olly Betts <olly@survex.com>

	* Fixed everything to use getopt rather than icky handparsing of
	  options.

Fri Apr 12 11:26:57 BST 2002  Olly Betts <olly@survex.com>

	* Removed delve - it's going to be an example program.

Thu Apr 11 18:09:35 BST 2002  Olly Betts <olly@survex.com>

	* Command line argument improvements - added FIXMEs where getopt
	  should be used.

Thu Apr 11 17:01:44 BST 2002  Richard Boulton <richard@tartarus.org>

	* Fixes to work with automake 1.6.1.
	  I recommend using 1.6.1 rather than 1.6, since this fixes many
	  bugs in 1.6.  I havn't tested with 1.6 recently, but it is likely
	  to report problems.

Thu Apr 11 17:25:37 BST 2002  Olly Betts <olly@survex.com>

	* Use GNU getopt.

Thu Apr 11 15:06:15 BST 2002  Olly Betts <olly@survex.com>

	* Updated to recommend automake 1.5, noting problem with automake 1.4
	  and that we'll probably soon insist on 1.5, and later autoconf 2.50.
	  Also added notes on recommended and usable GCC versions.

Thu Apr 11 14:23:44 BST 2002  Olly Betts <olly@survex.com>

	* Cleaning up build system.

Thu Apr 11 13:18:23 BST 2002  Olly Betts <olly@survex.com>

	* Use AndPostList with boolean weights on the RHS instead of
	  FilterPostList - this appears to fix a bug, but I suspect it's
	  actually just moving it around.  Will investigate later.

Thu Apr 11 10:11:11 BST 2002  Olly Betts <olly@survex.com>

	* Sorted out automake for php4 bindings.

Wed Apr 10 14:44:50 BST 2002  Olly Betts <olly@survex.com>

	* Removed a superfluous DEBUGLINE.

Tue Apr  9 19:02:09 BST 2002  Richard Boulton <richard@tartarus.org>

	* Fix some DEBUGLINE() macros in the matcher which had
	  the first parameter missing.

Tue Apr 09 17:50:44 BST 2002  Olly Betts <olly@survex.com>

	* Removed stray bit of debug code.

Tue Apr 09 17:05:09 BST 2002  Olly Betts <olly@survex.com>

	* More debug tracing added.

Tue Apr 09 10:48:42 BST 2002  Olly Betts <olly@survex.com>

	* Disabled pthread support by default.

Sat Apr  6 20:45:21 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Reordered some output generation in configure so it won't
	  complain about directories not existing. (I don't understand
	  what the problem is, but this does fix it.)

Sat Apr 06 20:27:57 BST 2002  Olly Betts <olly@survex.com>

	* Moved a few lingering traces of XML indexer stuff to indexer
	  subdirectory.

Sat Apr 06 17:37:02 BST 2002  Olly Betts <olly@survex.com>

	* Removed -pedantic (read the gcc docs - it's doesn't turn on
	  useful warnings) and fixed all the remaining compilation
	  warnings in a non-debug build.

Fri Apr 05 10:21:28 BST 2002  Olly Betts <olly@survex.com>

	* Removed --enable-profiling, --enable-purify, and --enable-insure.
	  They don't do anything which can't be achieved by passing
	  environment variables and switches to configure (now documented
	  in HACKING).  Adding a separate switch for every profiling and
	  code-quality tool out there isn't a sensible approach.

Thu Apr 04 20:37:12 BST 2002  Olly Betts <olly@survex.com>

	* Updated .cvsignore files.

Thu Apr 04 20:25:41 BST 2002  Olly Betts <olly@survex.com>

	* PTHREAD_CFLAGS was only being used for compiling C, not C++, which
	  was causing builds to fail unless threading was disabled.  This
	  problem has been there a long time, but until recently was hidden
	  by the check for fdatasync erroneously linking in -lrt which pulls
	  in pthreads anyway (at least this is the situation on Linux).

Thu Apr 04 20:06:00 BST 2002  Olly Betts <olly@survex.com>

	* Removed XML indexer stuff from the main xapian library.  All the
	  removed bits are now in the indexer subdirectory, ready to be
	  reassembled into a supplementary library.

Thu Apr 04 15:43:43 BST 2002  Olly Betts <olly@survex.com>

	* More debug tracing in the matcher.

Thu Apr 04 14:17:10 BST 2002  Olly Betts <olly@survex.com>

	* Added debug tracing to most of the matcher.

Thu Mar 28 17:21:16 GMT 2002  Olly Betts <olly@survex.com>

	* Give up trying to make internals private or protected in the
	  header files in include - the consequences are just too ugly, and
	  it's clear enough that they shouldn't be messed with except by the
	  library itself.

Wed Mar 27 10:24:26 GMT 2002  Olly Betts <olly@survex.com>

	* Don't add "-lrt" to the link line unless it's actually needed for
	  fdatasync().

Wed Mar 27 10:11:09 GMT 2002  Olly Betts <olly@survex.com>

	* Fixed two problems in the matcher which were respectively causing
	  problems with boolean filters, and with situations where OR or
	  ANDMAYBE decayed to AND.

Fri Jan 11 18:00:44 GMT 2002  James Aylett  <tartarus@users.sourceforge.net>

	* Various build fixes for libxml2: define CHAR as needed,
	  --enable-validation (off by default), check for and discard
	  'blank' text/cdata nodes as we encounter them

Fri Jan 11 15:40:50 GMT 2002  Sam Liddicott <sam@ananova.com>

	* Added Large File Support in the same way it was added to GNU tar.
	  (If it's good enough for them...)
	  This is by means of autoconf/ac_sys_largefile which I'm told is
	  built in to later versions of autoconf, and may possibly give us
	  trouble redefining it for those versions...  But we'll see about
	  that when/if it happens.

	  It seems to work fine here on some DB's which I had to stop growing
	  cos they got too big; I'm now past the 2G boundary with no problems

	  I guess we should still add overflow detection for 2^31 blocks.
	  Ideas?

	  I need some help on the btreetest.cc as I haven't yet worked out
	  what it does; so while I've added a test, it doesn't yet test
	  what it says it does.  I have changed btreetest.cc so you can
	  tell it where to dump the test DB

Fri Dec 21 17:48:09 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed halflife calculation in OmBiasFunctor.

Fri Dec 21 15:24:58 GMT 2001  Olly Betts <olly@survex.com>

	* Added a temporary API to allow use of OmBiasFunctor.

Fri Dec 21 12:58:23 GMT 2001  Olly Betts <olly@survex.com>

	* Disable conversion of OR to AND/ANDMAYBE in matcher tree - there's
	  a bug which sometimes manifests when there's a date filter and a
	  threshold cutoff in omega, and results in just one match when there
	  should be more.  I don't believe the bug is actually in OrPostList
	  but I've been tracking it for 4 days without success and turning off
	  this optimisation seems to stop it occurring so will have to do for
	  now.

Thu Dec 20 17:41:04 GMT 2001  Olly Betts <olly@survex.com>

	* matcher/multimatch.cc: added more percent_cutoff assertions.

Thu Dec 20 13:41:41 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed incorrectly classified debug message; fixed compiler warning;
	  more comments about matches_* with a percent_cutoff.

Thu Dec 20 13:09:51 GMT 2001  Olly Betts <olly@survex.com>

	* Better OmPostListIterator::get_description() (call get_description
	  on internal->postlist).

Thu Dec 20 12:42:55 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed assorted problems with omtcpsrv and co from recent change.

Thu Dec 20 10:41:57 GMT 2001  Richard Boulton <richard@tartarus.org>

	* In ./configure --help, correctly report muscat36 backend as
	  defaulting to off.

Thu Dec 20 10:36:18 GMT 2001  Olly Betts <olly@survex.com>

	* Don't delete internal in ~OmWritableDatabase - ~OmDatabase
	  does that for us (internal was zeroed after delete, so this
	  was probably harmless)

	* Tweaked OmEnquire::get_description() and
	  OmPostListIterator::get_description() to do less - there's a
	  debug related bug somewhere and get_description() should be a
	  non-intrusive method...

Thu Dec 20 10:32:56 GMT 2001  Richard Boulton <richard@tartarus.org>

	* Fix a couple of misquoted messages in configure.in.

Tue Dec 18 23:22:00 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Use xapian.org where appropriate in documentation references

Tue Dec 18 14:32:32 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Use xapian.org not sourceforge for schemas

Mon Dec 17 18:47:08 GMT 2001  Olly Betts <olly@survex.com>

	* Cured problems with string('x') caused by overzealous search
	  and replace on my part.

Mon Dec 17 16:44:31 GMT 2001  Olly Betts <olly@survex.com>

	* Improved matches_estimated when a percent_cutoff is in effect.

Sun Dec 16 18:09:28 GMT 2001  Olly Betts <olly@survex.com>

	* You can now register a match decider functor by name with an
	  OmEnquire object.  It's not yet used for anything though.

Sun Dec 16 17:31:08 GMT 2001  Olly Betts <olly@survex.com>

	* omtcpsrv: simplified arguments - just list database directories and
	  they'll be opened with the auto backend.  Removed --im as it didn't
	  work as advertised and nobody's noticed (as actually implemented it
	  was useless).

Sat Dec 15 14:10:32 GMT 2001  Olly Betts <olly@survex.com>

	* Minor update to todo.xml.

Sat Dec 15 13:43:47 GMT 2001  Olly Betts <olly@survex.com>

	* More fettling of OmBiasFunctor stuff - still not ready for use yet...

Tue Dec 11 13:06:08 GMT 2001  Olly Betts <olly@survex.com>

	* Don't work out probabilistic weights for boolean bits of the query
	  (rhs of FILTER and AND_NOT) which fixes incorrect percentage weights
	  in filtered queries.

Tue Dec 11 12:26:44 GMT 2001  Olly Betts <olly@survex.com>

	* Added test singlesubq1 to keep an eye on can_replace_by_single_subq.

Mon Dec 10 16:58:21 GMT 2001  Olly Betts <olly@survex.com>

	* can_replace_by_single_subq shouldn't return true for OP_ELITE_SET
	  since you can't call set_elite_set_size() on an arbitrary subquery.

Thu Dec  6 15:02:05 GMT 2001  Richard Boulton <richard@tartarus.org>

	* (omqueryinternal.cc, omtermlistiteratorinternal.h)
	  Fix some compiler warnings (when compiling with no debug) due
	  to methods which should return a value but simply contain
	  "Assert(false);".  Throw an exception in such methods instead
	  (after the Assert).

Mon Dec 03 11:20:42 GMT 2001  Olly Betts <olly@survex.com>

	* New BiasPostList - not yet enabled as it needs more work.

Mon Dec 03 11:16:44 GMT 2001  Olly Betts <olly@survex.com>

	* quartzdump: give syntax error if no tables specified.

Thu Nov 29 14:10:43 GMT 2001  Olly Betts <olly@survex.com>

	* ExtraWeightPostlist wasn't handling prune correctly.

Thu Nov 22 13:46:59 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed segfault when percentage_cutoff emptied the proto-mset.

Thu Nov 22 12:27:49 GMT 2001  Olly Betts <olly@survex.com>

	* Enhanced test emptyquery1.

Fri Nov 16 15:32:09 GMT 2001  Olly Betts <olly@survex.com>

	* Added OmQuery::is_empty() method.

Thu Nov 15 15:36:07 GMT 2001  Olly Betts <olly@survex.com>

	* Updated todo list.

Thu Nov 15 13:03:05 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed percent_cutoff problems.

Wed Nov 14 12:05:44 GMT 2001  Olly Betts <olly@survex.com>

	* Empty OmQuery() now matches no documents (rather than causing an
	  exception).

Thu Nov 08 18:23:21 GMT 2001  Olly Betts <olly@survex.com>

	* SIGSTKFLT isn't portable, so added #ifdef checks for it.

Wed Nov 07 15:34:29 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed 2 GCC 3.0 warnings in muscat36 backend.

Wed Nov 07 14:21:47 GMT 2001  Olly Betts <olly@survex.com>

	* Made doc counts returned from percentage cutoff matches more
	  accurate.

Wed Nov 07 12:30:32 GMT 2001  Olly Betts <olly@survex.com>

	* GCC 3.0 fixes.

Tue Nov 06 11:16:42 GMT 2001  Olly Betts <olly@survex.com>

	* Matcher now calculates percentages like Omega does (or did as I'm
	  about to remove that code from Omega), rather than as a percentage
	  of the theoretical maximum possible weight.  The old way generally
	  gives disappointingly low values, and by pushing the percentage
	  code down into the matcher, it can be used to optimise the query.

Tue Nov 06 11:13:06 GMT 2001  Olly Betts <olly@survex.com>

	* Quick fix for problems with null OmQuery-s.

Mon Nov 05 15:52:55 GMT 2001  Olly Betts <olly@survex.com>

	* Added signal handling to testsuite - if a testcase generates a
	  signal it is caught and reported, then the testsuite continues
	  with further testcases.

Wed Oct 31 14:26:59 GMT 2001  Olly Betts <olly@survex.com>

	* Removed needless complications in matcher when a weight threshold
	  has been set.

Tue Oct 30 16:50:46 GMT 2001  Olly Betts <olly@survex.com>

	* Removed superfluous lines from configure.in; fixed warning from
	  automake 1.5.

Mon Oct 29 11:54:36 GMT 2001  Olly Betts <olly@survex.com>

	* Changed matcher to form proto-mset using a min-heap (as described
	  in "Managing Gigabytes", 2nd ed., pp 211-213).  Compared to the
	  previous "nth-element" approach, this uses about half the memory,
	  allows the min-weight based matcher optimisations to work sooner,
	  and should be inherently faster (not yet benchmarked though).  The
	  code's slightly simpler too.

Mon Oct 29 11:53:38 GMT 2001  Olly Betts <olly@survex.com>

	* Fixed remote backend to pass match_cutoff setting across.

Fri Oct 26 13:43:08 BST 2001  Olly Betts <olly@survex.com>

	* Reserve size needed for mset vector.

Thu Oct 25 18:00:54 BST 2001  Olly Betts <olly@survex.com>

	* Fixed a couple of stray references to the old sleepycat backend.

Tue Oct 23 18:19:32 BST 2001  Olly Betts <olly@survex.com>

	* More cleaning up of MultiMatch.

Tue Oct 23 16:14:27 BST 2001  Olly Betts <olly@survex.com>

	* Removed RemotePostList - it was an experimental idea which proved
	  to be too slow even on a fast network.  Cleaned up code where hooks
	  were bodged in for it.

Tue Oct 23 13:27:12 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Added documentation of the test system (albeit brief). Also
	  mentioned the autotools book in HACKING.

Tue Oct 23 12:07:59 BST 2001  Olly Betts <olly@survex.com>

	* Updated .cvsignore files.

Tue Oct 23 11:29:47 BST 2001  Olly Betts <olly@survex.com>

	* Code tidying while investigating sporadic fails from quartztest.

Mon Oct 22 17:42:30 BST 2001  Olly Betts <olly@survex.com>

	* Minor fettles to quartztest: fixed warnings, whitespace tidying,
	  use mkdir(...) rather than system("mkdir ...")

Mon Oct 22 16:41:12 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Renamed project to Xapian.

Mon Oct 22 14:22:00 BST 2001  Olly Betts <olly@survex.com>

	* Fixed non-ISO C++ code so Xapian will compile under GCC 3.0
	  (and also RedHat's "GCC 2.96").

Mon Oct 22 11:21:45 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Altered omseek-config and the AC m4 macro to make uninst
	  executables link to the right version of the library

Mon Oct 22 10:38:20 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Minor fixes to enable build (and test) under Solaris.

Fri Jun 22 13:24:59 2001  Sam Liddicott <sam@ananova.com>

	* Added some explicit type casts in xmlindexer and quartz backend
	  to help gcc2.96 compile.

Thu Jun 21 11:05:31 2001  James Aylett  <tartarus@users.sourceforge.net>

	* HACKING updated to (a) remove inaccurate statements about
	  copyright assignment, and (b) talk about developer write
	  access to CVS.

Mon Jun 11 13:24:43 2001  James Aylett  <tartarus@users.sourceforge.net>

	* pthread support detected using an automake macro. Should
	  be more portable as a result.

	* We need GNU make: buildall now tries to find it.

Mon Jun 11 12:07:00 2001  Hein Ragas <hragas@users.sourceforge.net>

	* Modified QuartzWritableDatabase::do_add_document and
	  QuartzWritableDatabase::do_replace_document to leave the PositionList
	  empty for a term with no positions associated with it.

Mon May 29 12:17:00 2001  Hein Ragas <hragas@users.sourceforge.net>

	* Modified QuartzPostList::add_entry to allow for adding of entries
	  in the middle of the postlist, not only at the end.

Mon May 28 12:00:00 2001  Hein Ragas <hragas@users.sourceforge.net>

	* Fixed a bug in replace_document for Quartz, added a test to
	  ensure proper working of the fix.

Fri Apr 27 15:16:10 2001  James Aylett  <tartarus@users.sourceforge.net>

	* Project name change to Omseek.

Wed Apr 11 09:06:37 BST 2001 Chris Emerson <chris.emerson@omsee.com>

	* Implemented deleting of items from postlists, and added some
	  tests to check that it works properly.

	* Fixed a potential memory leak in QuartzPostList if an exception
	  was thrown from the constructor.

	* BackendManager now sets the quartz_logfile setting, to make
	  the logs available from the testsuite.

	* Added mention of quartz_logfile to docs/omsettings

	* Removed a bad assert from InMemoryDatabase::get_doclength()

Mon Apr  9 21:48:18 BST 2001 Chris Emerson <chris.emerson@omsee.com>

	* Added #include <cmath> to testutils.cc

Fri Mar 30 17:37:24 BST 2001 Olly Betts

	* Added extra/.cvsignore

Fri Mar 30 17:22:13 BST 2001 Olly Betts

	* Disabled allocation checking of new[] and delete[] since some STL
	  implementations use them which leads to leaks being reported where
	  none exist.  This is addressable longer term...

Thu Mar 29 19:05:46 BST 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add "extra" directory to om source tree, to hold extra libraries
	  for use with omsee, which aren't part of the core.

	* Put a query parser into "extra".  This is roughly the parser
	  from omega.  Needs some work: in particular, it needs to be
	  made reentrant.

	* Added extra/ directory to top level Makefile.am and configure.in.
	  Added AC_PROG_YACC to Makefile.am

	* Add includes of required header files to omquery.h.

Wed Mar 28 17:15:22 BST 2001  Richard Boulton <richard.boulton@omsee.com>

	* Modifications to OmQuery.  Remove the isbool flag: there is
	  no longer any need for the concept of a "pure boolean query".
	  The same effect as was obtained by setting isbool can be
	  obtained by setting the match_weighting_scheme parameter to
	  bool.

	* Also, undefined queries may no longer be used when
	  building up composite queries; the correct behaviour for this
	  is hard to define and implement and harder to document, and
	  removing this removes lots of special case code.

	* Updated network query passing code.

	* Remove special cases for bool weighting in localmatch and irweight.

	* Updated omsettings docs.  Updated comments in omsetting.h.

	* Updated todo.xml

	* Incremented network protocol version.

	* Added test_emptyop1, which checks what happens when an attempt is
	  made to use an empty list of subqueries to build up a query, and
	  then use the query.

	* Remove test_boolsubq1: no such thing as a boolean query now, so
	  no need to test what happens when one is used.

	* Updated testsuite to use "match_weighting_scheme" setting, rather
	  than calling OmQuery::set_bool().

Wed Mar 28 15:05:46 BST 2001 Chris Emerson <chris.emerson@omsee.com>

	* Fixes to InMemoryDatabase:
	  + do_open_post_list returns an EmptyPostList rather than an
	    assertion error if the term doesn't exist
	  + Fixed doccount(), which wasn't decrementing on delete_doc()
	  + Remove terms from the database when they have no more postings.
	  + Implement collection frequencies, and run collfreq tests for
	    inmemory.

Wed Mar 28 14:24:38 BST 2001  Richard Boulton <richard.boulton@omsee.com>

	* Set elite set size to max(10, sqrt(number of subqueries)) by
	  default.  This is rather more useful than the old default of 0.

Wed Mar 28 10:25:35 BST 2001 Chris Emerson <chris.emerson@omsee.com>

	* QuartzDatabase now implements replace_document(), and
	  delete_document() now removes keys/attributes as well.
	  However, postlist entries are not yet correctly removed,
	  so this will cause problems.

	* Added a test for deleting/replacing documents, which passes.

Tue Mar 27 17:31:58 BST 2001 Chris Emerson <chris.emerson@omsee.com>

	* QuartzAttributes now has a method to delete a document's
	  attributes, and QuartzRecordManager has a replace_ method.
	  (But the code which uses these isn't in this commit).

Thu Mar 22 15:58:08 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Change definition of OmQuery::is_defined(), so that elite set
	  queries are undefined until a size is specified for the set.

Wed Mar 21 14:29:04 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Implemented delete_document and replace_document in inmemory
	  database.

Wed Mar 21 12:39:13 GMT 2001 Olly Betts

	* Tweak to docs/quickstart.html.

Wed Mar 21 02:50:19 GMT 2001 Olly Betts

	* Entirely removed sleepcat backend and all references to it.

	* Disable muscat36 backend by default.

Tue Mar 20 18:47:12 GMT 2001 Olly Betts

	* open_document() now takes a lazy flag - if not set we need to check
	  that the docid given actually exists.

	* heavy_duty flag now a bool instead of an int.

Mon Mar 19 19:16:34 GMT 2001 Olly Betts

	* Added test getdoc1 to check exceptions are thrown for out-of-range
	  docids (currently they aren't for quartz and muscat36 backends).

Mon Mar 19 17:17:31 GMT 2001 Olly Betts

	* New simpler implementation of leak detection in testsuite.
	  Currently doesn't support malloc/calloc/realloc/free.

Mon Mar 19 16:46:16 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Further small modification to omsee-config: will now look in
	  .libs subdirectories, too.

Mon Mar 19 15:57:18 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Update omsee-config to work when a prefix is specified that
	  points directly to the directory with the library, rather than
	  expecting the library to be in a subdir "libs/".  (libs/ is
	  still used if it exists).

	* Update omsee.m4, to use omsee-config even when using an
	  uninstalled version of omsee.  This in turn fixes problems using
	  uninstalled versions of omsee with STLport.

Fri Mar 16 18:14:52 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Updated licenses, to include year 2001.

Fri Mar 16 15:40:49 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Fix up small bug in quartztest causing it to fail for lack of an
	  expected exception.  Initialise values in quartz_positionlist.cc
	  when position list is not present.

Thu Mar 15 17:40:38 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Make timeout absolute, rather than cumulative, when fetching
	  multiple documents from database: if two nodes fail, the total
	  timeout should still be that specified, not twice it.

	* Make the timeout set by SocketClient::set_query() get reset
	  correctly if an exception happens (which used to prevent
	  SocketClient::get_mset() ever getting called).

Thu Mar 15 17:06:51 GMT 2001 Olly Betts

	* Oops, checked in too much - backing out the wrong stuff.

Thu Mar 15 16:30:14 GMT 2001 Olly Betts

	* Include autoconf/definedir.m4 in tarball.

Thu Mar 15 16:06:02 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Updated network protocol number to reflect change adding
	  OP_ELITE_SET.

Thu Mar 15 15:31:35 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* QuartzPositionList should no longer complain if positional
	  information isn't available for a particular term / document
	  combination.

	* Updated todo.

Thu Mar 15 13:55:53 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Removed OmDocument::set_wdf() and OmDocument::add_term().
	  Replaced with OmDocument::add_term_nopos(), which adds a term
	  without specifying positional information, taking an optional
	  wdfinc parameter.  Updated testsuite correspondingly.

Thu Mar 15 13:14:10 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Update TODO

Wed Mar 14 17:51:40 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Added new operator OP_ELITE_SET, which replaces match_max_or_terms
	  option.  Can now specify exactly which terms to apply max_or_terms
	  to.  max_or_terms is obsolete: an error will be thrown if an
	  attempt is made to use it.

Wed Mar 14 15:56:20 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Added test for and implementation of multiple XOR queries.

	* Fix small bugs with get_termfreq_est() for xor and andnot
	  postlists.

Mon Mar  5 16:08:01 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Catch exceptions within the loop in SocketServer - exceptions
	  should normally not kill the server.  This means that that a
	  client still works after eg an OmDocNotFoundError, which was
	  causing problems before.

Fri Mar  2 18:15:47 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add a new query operator, OP_WEIGHT_CUTOFF, which returns only
	  those documents from a query which have a weight greater than a
	  specified cutoff value.  Also added OP_PERCENT_CUTOFF, but this
	  is not yet implemented.

	* Added test of new cutoff function, cutoff2.

	* Updated network protocol to pass new queries.  Increased protocol
	  version number (to 10).

	* Added set_cutoff() function to OmQuery, to set cutoff parameter.

	* Updated TODO.

	* Remove unused member "PostList * postlist" of LocalSubMatch.

Thu Mar  1 12:04:53 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Updates to HACKING.

Wed Feb 28 18:42:47 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Fixes to neaten up configure output, and to test for the Perl
	  Text::Format module, thanks to James Aylett (patch slightly
	  modified, so if it doesn't work it's probably my fault).

	* configure.in checks for presence of ftime() and gettimeofday()

	* Added OmTime, a class to deal with times to an accuracy of
	  microseconds, or whatever the best accuracy the system supports
	  is.

	* Use OmTime in network code instead of time(NULL).

Wed Feb 28 14:23:11 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Merge common code from OmSocketLineBuf::wait_for_data() and
	  OmSocketLineBuf::do_readline() into
	  OmSocketLineBuf::attempt_to_read(), and thus fix bug in
	  wait_for_data() when 0 bytes returned from read().

Tue Feb 27 18:40:33 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Fixes to remote matcher code to cope better with failure of
	  submatchers:
	  - Timeout for all submatches now correctly start at same time.

	* Added more extensive testing of above code, involving adding
	  new parameters to inmemory to cause abort()s at various stages of
	  the match.

	* Remove obsolete (and unused) method
	  SocketServer::read_global_stats()

	* Errors are now generated from strings by using omerrortypes.h with
	  suitable #defines before including it.  Updated todo accordingly.

	* Extend scope of try{} clause in socketserver, so that
	  SocketServerFinished exception never escapes.

	* Default timeout in progserver increased to 30000.

	* Default timeout in tcpserver increased to 15000.

Mon Feb 26 23:51:23 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Split query generation into stages: make new query, add subqueries,
	  then finalise.  Add private methods to OmQuery reflecting this, and
	  convert constructors into template methods, allowing any iterator
	  to be used for constructing queries.  Removed reference to
	  <vector> from omquery.h

	* Add omqueryinternal.cc, containing implementation of query
	  internals. (surprise!)

	* OmQuery::Internal now has some helper functions to determine the
	  properties of each particular query.  These should be converted
	  into a lookup table, and the remaining hard-coded properties (for
	  AND_MAYBE, AND_NOT and FILTER) factored out.

	* window property removed from constructor.  This can now be set by a
	  separate call, to "OmQuery::set_window()"

	* Added a deleter_vector class, to store subquery pointers in a more
	  exception-safe way.

	* Represent undefined queries by the new OP_UNDEF operation, rather
	  than a dedicated flag - cleaned up some logic.

	* Some modifications to XOR handling: should now behave like OR and
	  AND - doesn't need to be binary.  (*untested*)

	* Fixes to serialisation code in socketcommon.cc to work with new
	  OmQuery::Internals - this should really be done in
	  OmQuery::Internal.

	* One tiny fix in tcpclient.cc - an &fdset was missed for exception
	  conditions in a select() call.

	* Testsuite modified and expanded to check changes to OmQuery.

Mon Feb 26 18:20:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Fixed some compiler warnings reported by James Aylett.

Mon Feb 26 14:27:09 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Avoid waiting for a timeout when closing a SocketClient.

Fri Feb 23 14:38:09 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Updated todo.xml

Thu Feb 22 18:14:41 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* OmRegexFilterNode has an output for non-matching strings as
	  well as matching.  "out" output renamed to "matching".

Thu Feb 22 16:56:33 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Fixed a bug in the fetch() bits: requesting documents at the
	  same time from different OmMSet instances could cause a
	  document to disappear from the cache at the wrong moment.

Thu Feb 22 15:39:49 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Updated todo.

Thu Feb 22 12:14:12 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Some small changes in quartz to improve exception safety and
	  error checking.

	* Remove unwanted OmExpandWeight::get_expand_k() method.

Wed Feb 21 19:02:44 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Overhauled the OmMSet::fetch() etc. methods.  Documents are
	  requested when fetch() is called, but are only fetched (all
	  at once) when the first get_document() is called.

Wed Feb 21 19:30:20 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add an errorhandler member to MultiMatch, and remove it from
	  various calls which used to pass it about.

	* Add an EmptyMatch object, which always returns an emptypostlist.

	* Implement errorhandlers at start of query for initially down
	  nodes.  Improve test for errorhandlers to cover many more cases.

	* Add many debug messages to error handling code.

Wed Feb 21 14:33:50 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Use a deque<> directly instead of a queue, due to conflict
	  with Solaris headers.

	* Split the collect_doc loop into a separate function

	* SocketClient should be more robust against request_doc() being
	  used without collect_doc().

Tue Feb 20 18:01:13 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* SocketClient implements a queue/cache system which means that
	  collect_doc() doesn't need to be called in the same order as
	  request_doc().

Mon Feb 19 15:43:49 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Converted btree code to use new/delete instead of [mc]alloc/free.

Mon Feb 19 13:52:23 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Added new test collapsekey2 designed to work with muscat36
	  databases, which have different key handling.  Added two new
	  categories of tests to cope with this.

	* Adjusted BackendManager's key generation, and updated
	  test_specialterms1() accordingly.

Fri Feb 16 17:26:59 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Implemented a test for keep-alives

	* Added "-tNNNN" option to omprogsrv to pass a timeout value in.

	* Added get_network_database() in apitest to set the timeout.

Fri Feb 16 16:13:47 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Incremented the remote protocol version, since a new message
	  type has been added.

Fri Feb 16 15:55:31 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Added an OmDatabase keep_alive() method to gently prod any
	  remote databases.  Applications can use it to avoid the remote
	  servers timing out between queries.  Not properly tested yet...

Thu Feb 15 19:05:24 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* The remote server now supports a separate timeout used while
	  idle, rather than actually servicing a request from the client.
	  Options --idle-timeout and --active-timeout added to omtcpsrv,
	  and --timeout sets both timeouts.

	* Added a documentation comment or two.

Wed Feb 14 18:43:00 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* In Muscat3.6 backends, don't read the key from the keyfile unless
	  keyno is 0.

Tue Feb 13 13:57:34 GMT 2001 Andy MacFarlane <andym@omsee.com>

	* Added parameter expand_k in omsettings in order to change
	  value of weighting in expand process.

Tue Feb 13 13:25:45 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Network timeouts now apply to write() operations as well
	  as read().

	* SocketLineBuf::do_writeline() now correctly deals with EAGAIN.

	* SocketServer has new method writeline() which handles write
	  access to the OmLineBuf.

Mon Feb 12 12:35:41 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Make OmPositionListIterators and any other appropriate iterators
	  (postlist, termlist) have a default constructor allowing them to
	  be declared uninitialised.

Mon Feb 12 10:51:41 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Updated todo.xml

Thu Feb  8 17:59:44 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Moved omnodepad.h from include/om to indexer/indexgraph/

	* Updated todo.xml

Thu Feb  8 17:35:45 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Updated todo.xml

Thu Feb  8 17:00:02 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Quartz now has a metafile which for now has a magic string
	  and a version number.

	* sys_open_to_read() and delete_file() exported from btree.cc.
	  The latter was renamed to sys_unlink_if_exists().

	* Include btree_types.h from btree_util.h

Wed Feb  7 17:33:00 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Fix to InMemory databases: terms can be added even if they
	  don't have any positions.  (Was causing adddoc2 to fail).

Tue Feb  6 18:06:13 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Rename OmMSet::fetch_items() to fetch().  Add an overloaded
	  fetch() method taking a single iterator, to fetch a single item.

	* Fix some documentation comments.

Mon Feb  5 19:16:45 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Update TODO

Mon Feb  5 19:12:39 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Test behaviour of OmDocument methods add_term(), set_wdf(),
	  remove_posting() and remove_term().  Fails for inmemory databases.

Mon Feb  5 17:46:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Modified the behaviour of timeouts during a match.  Internally,
	  an absolute timeout time is set from start_match().  Now remote
	  nodes should timeout at NOW + remote_timeout, rather than
	  waiting remote_timeout milliseconds for each read().  Needs
	  some more testing.

Mon Feb  5 17:21:52 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix a missing #include in socketcommon.h

Mon Feb  5 17:15:46 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Sort generated todo lists.

Fri Feb  2 17:44:54 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add an OmDocument::add_term() method.

	* Remove an unwanted check that wdf's are greater than 0: wdf of 0
	  _is_ allowed.

Fri Feb  2 15:04:08 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Hopefully, a fix for segfaults/assertions when network errors
	  happen halfway through a match, when handled by OmErrorHandler
	  objects: give the place-holder EmptyTermLists weighting objects.

Thu Feb  1 19:03:10 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Fixes to OmDocument interface: add parameters specifying the
	  changes to be made to the wdf to add_posting and remove_posting,
	  properly implement remove_posting and remove_term, including
	  throwing of exceptions, and add a set_wdf() method to set the wdf
	  to an absolute value.  Corresponding modifications to
	  OmDocumentTerm.

	* Fix commented out errorhandler code in multimatch.cc, so it still
	  compiles.

	* Add a check to avoid division by zero in bm25weight.cc

Thu Feb  1 15:59:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add a missed #include to omqueryinternal.h

Thu Feb  1 14:44:04 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add some error handler code, with a "#if 0"ed out comment,
	  to multimatch.cc

Wed Jan 31 15:45:16 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Remote servers should close down more gracefully when the
	  client closes down in the middle of a request.

Tue Jan 30 16:52:05 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Removed unneeded #includes of STL headers from API headers.

	* All #includes of files which are not installed use "" rather than
	  <>.  This means all #includes of OM files except for those which
	  are in example programs (and hence might be compiled against the
	  installed library).  "" search paths are a superset of <> search
	  paths: hence this should ensure that the om headers work however
	  they are used.

	* Moved supplied OmExpandDecider subclasses into
	  include/om/omexpanddecider.h

	* Remove om_termname_list from API: not used except by code which
	  displays it, and in testsuite.

Tue Jan 30 12:45:22 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Removed #include <vector> from omstem.h

Tue Jan 30 11:09:29 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* OmStem::get_available_languages() now returns a string
	  rather than a vector.  Languages are space-separated.
	  Updated apitest.

	* Added definition of RTLD_DEFAULT to internaltest.cc

Mon Jan 29 16:11:15 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* OmIndexerMessage's copy-on-write slightly more careful.

	* Improved debugging in OmIndexerNode

	* Fixed a bug in the termlistadd node - it tried to append to a
	  non-vector.

Fri Jan 26 16:21:09 GMT 2001 Olly Betts

	* indexerxml.cc: Removed some dead code.

Fri Jan 26 16:11:13 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Added omindexerdescinternal.h to the Makefile

Fri Jan 26 15:50:32 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Move OmQuery definition into a separate header file.

Fri Jan 26 15:46:42 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Move OmQuery::OP_LEAF out of public visibility, by taking it out
	  of the enum, making it a static const member of OmQuery::Internal,
	  and introducing an OmQuery::Internal::op_t to store query
	  operators in internally.  We lose the ability for the compiler to
	  warn us if we forget to check for a particular operator in a
	  switch statement, but this can't really be avoided.

Fri Jan 26 13:49:33 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Added get_output_{node,pad} to OmIndexerDesc

	* Implemented and testes OmNodeInstanceIterator

	* Implemented OmIndexerBuilder::build_from_desc, which somehow
	  hadn't been.  indextest now uses it.

Thu Jan 25 18:47:08 GMT 2001 Olly Betts

	* Fixed various .cvsignore files (omus -> omsee, and
	  bindings/java/.cvsignore which seemed to have been copied from
	  the top level one at some point).

	* Fixed bug in OrPostList when used in a pure boolean context
	  (uninitialised variables).

	* tests/internaltest.cc: removed unused reference to getopt.h.

	* tests/stemtest.pl.in: removed lots of bogus semicolons after
	  closing braces.

Thu Jan 25 17:53:08 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Turn debugging messages (OM_DEBUG_TYPES) off by default.

	* Add todo items for release to pages generated for website.

Thu Jan 25 15:11:14 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Add a couple of documentation comments: we need many more of
	  these.  No method, and certainly no class, in the API should be
	  without an explanatory comment (not least so that they're
	  accessible from the doxygen browser).

Thu Jan 25 14:51:55 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Hide the internals of OmIndexerDesc, and adding member functions
	  to do all the necessary operations (not all yet implemented).

	* Indexer internals mostly deal with OmIndexerDesc::Internal

	* Removed '#include <vector>' from omindexerdesc.h

Thu Jan 25 13:45:49 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* When setting up an RSet, allow documents to be referenced by
	  OmMSetIterator, for convenience.

	* Allow OmMSetIterators and OmESetIterators to be created without
	  initialising, also for convenience.

	* Include CFLAGS for STLPORT in the flags produced by omsee-config.

	* Change several more missed "omus"s to omsee.

Thu Jan 25 13:50:06 GMT 2001 Chris Emerson <chris.emerson@omsee.com>

	* Changed a mention of libomus in netprogs/Makefile.am to libomsee

Thu Jan 25 12:33:46 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Build only the API docs when making dist / install.  Full source
	  docs only get built if explicitly asked for.

Thu Jan 25 11:36:39 GMT 2001  Richard Boulton <richard.boulton@omsee.com>

	* Project name changed to Omsee.

	  Ramifications from a technical viewpoint are:

	  - library name changed from libomus.* to libomsee.*
	  - libomus-config renamed to omsee-config
	  - Autoconf macro file libomus.m4 renamed to omsee.m4,
	    macro name OM_PATH_LIBOMUS changed to OM_PATH_OMSEE
	    and macro now defines OMSEE_CFLAGS and OMSEE_LIBS rather
	    than LIBOMUS_CFLAGS and LIBOMUS_LIBS.  configure arguments
	    changed name, also.

Wed Jan 24 15:57:10 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Improve test of OmMSetIterators equality comparisons.

	* Update TODO

Wed Jan 24 15:11:11 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Renamed OmNodeConnection to OmNodePad.  The old name was
	  confusing.

	* Added OmPadIterator, and OmNodeDescriptor::{in,out}puts_{begin,end}.
	  Also implemented OmNodeDescriptor::get_type()

	* Added output function for OmPadIterator

	* Added test for OmPadIterators

Tue Jan 23 19:01:29 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Remove OmBatchEnquire from system: it may return at a later date,
	  but for now it is simply out of date and a maintenance liability,
	  and gives no significant advantage.  Code now exists in
	  ombatchenquire.h in CVS, but is not part of build process.

	* Make OmEnquire and OmMSet have reference counted internals: this
	  introduces a further layer of indirection, but tidies up things
	  greatly.

	* Remove get_docs() and get_doc() methods from OmEnquire.
	  get_doc(docid) is catered for by OmDatabase::get_document(docid).
	  Added OmMSetIterator::get_document() to replace get_doc on a
	  MSetIterator.  Added OmMSet::fetch_items() to replace get_docs():
	  it prefetches the documents (or just those specified by some
	  MSetIterators into a cache in the Mset).

	* OmMSet internals now have a reference to the creating OmEnquire
	  object: this is set up after the mset returns from the matcher.
	  If the reference is null, the Mset was created standalone, and
	  get_doc methods will fail.

	* OmMSetIterators now have a reference to the MSet, instead of a
	  percent_factor stored.  This allows the percent_factor to be
	  lazily calculated, and also allows get_doc to work.

	* Add get_rank() method to OmMSetIterators.

	* Improve introspection on OmDocument, and fix a bug with assignment
	  of OmDocument (wasn't assigning most of the internals).

	* Add a missing std:: on a string in omstopwordnode.

	* Fixed several documentation comments.

	* Add some more debugging to quartz.

	* Update TODO.

	* Add test_fetchdocs1 to apitest.  Disable test_batchquery1.

	* Remove sign comparison error in VectorTermList.

Tue Jan 23 16:24:04 GMT 2001 Olly Betts

	* No longer compile with -ansi under gcc - it causes problems by
	  preventing Linux system headers defining various functions we need.

	* testsuite/testsuite.cc: when reporting exceptions, display
	  exception's errno value if set.

Tue Jan 23 15:13:58 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Killed OmIndexerBuilder::NodeType.  Now use OmNodeDescriptor
	  in its place, getting rid of another vector usage in the API.

	* OmNodeDescriptor adjusted for its new role: internals are
	  refcounted, and some query as well as setting functions.

	* Cast the fourth argument to getsockopt() to void *.  On Solaris
	  that argument is char *.

Tue Jan 23 11:24:13 GMT 2001 Olly Betts

	* Tiny tweak to da_document.cc.

Fri Jan 19 18:36:15 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Removed get/set vector methods from OmSettings

	* Remote/prog arguments now passed in a string separated be spaces,
	  not a vector.

	* split_words() moved from netutils.h to utils.{h,cc}

	* Some unnecessary #include <vector> lines removed from API headers

	* Removed get_config_vector() from OmIndexerNode

	* OmConstantNode no longer handles vector values, and
	  OmStopWordNode and OmSelectItemsNode use space-separated
	  values instead.

Thu Jan 18 17:31:55 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Removed mentions of std::vector from OmIndexerMessage, and
	  updated the relevant bits.

	* Fixed a bug with the copy-on-write parts of OmIndexerMessage.

Thu Jan 18 17:09:43 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix to btreetest.cc: shouldn't fail if test data files are not
	  available.

	* Fix to multimatch.cc: clamp hits values to number of documents
	  matched after collapsing and match functors, rather than before.

Thu Jan 18 14:13:21 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix error messages thrown by quartz when a database doesn't exist /
	  already exists and isn't to be overwritten.

	* Make quartz clean up an old database directory, if
	  database_allow_overwrite is specified, so that old base files don't
	  confuse things.

Wed Jan 17 18:18:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Added all used toplevel directories to DIST_SUBDIRS

Wed Jan 17 18:13:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Martin committed changes to btree.cc which should fix some random
	  problems experienced with quartz.

	* Added in a test framework for the btree code, which exhibited the
	  bug fixed by martin until updating to his fixed version.

Wed Jan 17 16:10:02 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Moved the socklen_t definition so that tcpclient.cc could see
	  it.

Tue Jan 16 20:35:18 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix creation of quartz databases in backendmanager: all tests should
	  now pass.

Tue Jan 16 20:28:46 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix quartztest so that the tables / databases get created.
	  Implement new test "create1" to check that creation of databases
	  works as specified.

	* Fix test for whether we are allowed to overwrite a database.

	* Implement much better logging from quartz when making new databases.

	* Clean up an error message from btree.cc

Tue Jan 16 19:24:49 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Don't display messages about allocation failures in the first
	  iteration: if the failures go away when repeating, we're not
	  interested.

Tue Jan 16 18:28:03 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add two new OmSettings, for use when opening databases:
	  database_create and database_allow_overwrite.  The idea is that
	  databases will only be created if database_create is specified,
	  and that when they are being created an exception will be thrown
	  if there's an existing database unless database_allow_overwrite
	  is specified.

	* Implemented database_create and database_allow_overwrite for
	  Quartz, which is the only relevant type for now.  Note that this
	  breaks the testsuite, quite badly.

	* Add OmDatabaseCreateError, which is thrown when creating a database
	  fails.

Tue Jan 16 17:08:47 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed a typo in -ldl detection

Tue Jan 16 15:15:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Remove OmNeedRecoveryError, and quartz's quartz_perform_recovery
	  parameter.  Quartz now always performs recovery if needed: there
	  is no need for this added complication.

	* Update TODO

Tue Jan 16 14:25:03 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Changed references to SIGCLD to SIGCHLD as it's more portable.

Tue Jan 16 14:02:34 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Added check for whether -ldl is necessary.

Tue Jan 16 11:51:25 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Added compatibility bits for early libxml1 versions.

Mon Jan 15 18:18:01 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Removed use of hstrerror, which isn't portable.

Mon Jan 15 18:02:42 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix assertion which was the wrong way round in multimatch.cc

Mon Jan 15 17:46:13 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix initialisation of Btree_base::sequential when creating database.

Mon Jan 15 15:43:46 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Renamed some uses of XML node structure for libxml2 compatibility.

Mon Jan 15 15:35:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add some fixes to sequential access to btrees from Martin.

Mon Jan 15 12:23:02 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Set matches_* to the known value of the number of hits if we have
	  been unable to return as many hits as were requested, and therefore
	  know the exact number.

	* Update test_matches1() to check this works correctly.  Passes.

Fri Jan 12 17:45:27 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Implement get_doclength() for QuartzDatabase

	* Remove unused parameter from QuartzRecordManager::add_record()

Fri Jan 12 17:14:16 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed MultiAllTermsList, which had stopped working.

Fri Jan 12 15:32:34 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add test to apitest (postlist6) that doclengths got from postlists
	  are the same as those from databases.  Fails for Quartz for the
	  moment.

	* Add test to quartztest (disktable3) to try and bring out a bug in
	  adding to tables.

Fri Jan 12 15:20:09 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix STLport macro so that it will accept an STLport installation
	  with foo/include/stlport and foo/lib instead of foo/stlport and
	  foo/lib.

Fri Jan 12 14:04:37 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed buglet in configure.in which produced a bogus warning
	  about regex libraries.

	* Added an AC_MSG_RESULT corresponding to an AC_MSG_CHECKING
	  for the libxml flags

Fri Jan 12 13:18:07 GMT 2001 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed skip_to() in QuartzAllTermsList

Fri Jan 12 12:52:57 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Turn debugging off in btree.cc: accidentally committed a version
	  with lots of verbose debugging on.

Fri Jan 12 11:16:17 GMT 2001 Olly Betts

	* glibc 2.2 needs `#define _GNU_SOURCE' to give us RTLD_NEXT.

	* C++ comments changed to C comments in malloccheck.c.

Thu Jan 11 16:42:07 GMT 2001 Olly Betts

	* Removed unnecessary `#include "alltermslist.h"' from
	  d[ab]_database.h.

Wed Jan 10 14:28:10 GMT 2001 Olly Betts

	* Updated various .cvsignore files.

Tue Jan 09 19:03:12 GMT 2001 Olly Betts

	* Tidied up dead code from OmAllTermIterator.

Tue Jan 09 18:41:21 GMT 2001 Olly Betts

	* OmAllTermsIterator merged into OmTermIterator.

	* When iterating over all terms, skip_to() doesn't set at_end()
	  when it skips off the end.  Fixed except for quartz and added
	  regression test (allterms3).

Tue Jan  9 18:14:04 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add some extra debugging code into btree code in quartz.

Tue Jan  9 17:22:12 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Make skip_to() work (ie, do nothing) on OmTermIterators, when the
	  term iterator is at_end() already.

Tue Jan  9 13:32:08 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Updates to make the quartzdump utility more useful.

	* Added new test to test cursor behaviour in quartz.

Tue Jan  9 11:31:26 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Remove an item from TODO

Tue Jan  9 10:27:35 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add a missing \ in tests/Makefile.am

Mon Jan  8 19:03:42 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Increment format number in quartz/btree_base.cc.  This isn't
	  actually due to a change in the btree format, but to ensure that
	  some databases which were causing problems are rebuilt.

	  We need to add quartz format numbers, separate from the btree format
	  numbers, to check this kind of thing.

Mon Jan  8 15:13:04 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add some debugging, and fix a test data file.

Mon Jan  8 13:49:50 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix failure to initialise OmMSet::Internal::have_percent_factor.

Thu Jan  4 17:21:24 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add new test for a postlist with many documents, designed to fail
	  and exhibit the bug andy has found.  So far doesn't fail.

Wed Jan  3 19:30:30 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Add get_percent method to OmMSetIterator.  Untested.

	* Add om_percent type to om_types.

	* Add test of sort order of terms in get_matching_terms.

Tue Jan  2 15:05:53 GMT 2001  Richard Boulton <richard.boulton@open.muscat.com>

	* Move documentation of parameters for OmSettings out of omsettings.h
	  and into docs/.  Not in distribution at the moment: it is awaiting
	  placement into a permanent home (I think the user manual is the
	  correct place).

	* Add a bm25weight_min_normlen parameter: this specifies a cutoff
	  on the minimum value that can be used for a normalised document
	  length: smaller values will be forced up to this cutoff.  This
	  prevents very small documents getting a huge bonus weight.

Wed Dec 20 16:54:41 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix warning in QuartzTable

Wed Dec 20 15:13:05 GMT 2000 Olly Betts

	* OmTermListIterator merged into OmTermIterator.

	* Added OmRSet::contains() - checks if an RSet contains a given
	  docid.

	* Methods returning `const om_termname' now just return
	  `om_termname'.

Tue Dec 19 16:55:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Implemented AllTermsIterator for DA and Multi databases.
	  Added a test which actually uses a multidatabase, but
	  disabled it as it currently fails for both Quartz and DA.

Tue Dec 19 12:14:05 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Adjusted TODO

Tue Dec 19 20:06:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Escaping for termnames in remote database communication modified
	  to use only characters in range 33 to 126.  Should now work on all
	  architectures.

	* Increased OM_SOCKET_PROTOCOL_VERSION to 8.

Mon Dec 18 17:23:48 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added "match_cutoff" option to get_mset OmSettings.

	* Added test for "match_cutoff" to apitest.

	* Updated todo.xml

Mon Dec 18 17:19:40 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Implemented opening positionlists from inmemory databases.  Added
	  a testcase as well, which is run for quartz and inmemory.

Mon Dec 18 15:48:16 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Implemented AllTermsIterator for quartz.  Interaction with
	  QuartzPostList needs to be cleaned up.

	* Added new functions [un]pack_string_preserving_sort(), which
	  pack a string in a way which preserves sort order.  Added a
	  testcase to quartztest.

	* Now use [un]pack_string_preserving_order() on postlist keys, so
	  that we can get at terms in sorted order.  (And get_tname_from_key()
	  added to separate out the term-unpacking as well as the packing)

	* Enabled test_allterms1 in apitest, but put it in a group of
	  tests only run for inmemory and quartz.  This should be extended
	  to other backends.

Mon Dec 18 14:33:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Implemented tests of msetiterator and esetiterator copying and
	  assignment.

	* Fix segfault when assigning to [me]setiterator to end.

	* Updated todo.xml

Mon Dec 18 13:52:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Move creation of first key in a quartz postlist into a named
	  function (was scattered through the code).

Mon Dec 18 11:19:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Update todo.xml

Mon Dec 18 10:47:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Remove const from reverse_iterators in api_db.cc, so get around
	  brokenness of egcs 1.1.2

Mon Dec 18 09:41:54 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added apitest_space.txt to the Makefile.am

Sun Dec 17 16:15:03 GMT 2000 Olly Betts

	* Replaced all API uses of om_termname_list with OmTermIterator.

Fri Dec 15 18:54:10 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Implemented OmAllTermsIterator interface in API.  It works for
	  inmemory - the rest haven't been implemented yet.  The test
	  is commented out.

Fri Dec 15 15:47:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Updated TODO.

	* database returns positionlists as AutoPtrs; this neatens some of
	  the code from the previous changelog entry, and makes explicit the
	  ownership of the pointer.  postlists and termlists should be
	  AutoPtrs, likewise.

Fri Dec 15 14:59:41 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Make OmPositionListIterators retrieved from OmPostListIterators
	  valid indefinitely (were only valid until OmPostListIterator was
	  moved).  This makes them consistent with OmPositionListIterators
	  retrieved from OmDatabases.

	* Renamed PostList::get_position_list() to read_position_list.
	  Added PostList::open_position_list() which opens a new positionlist
	  and returns it as an AutoPtr.

Fri Dec 15 13:09:51 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Make TODO.release file, containing TODO items for next release.

Fri Dec 15 12:06:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* QuartzDatabases now autoflush after 1000 changes.

Fri Dec 15 11:40:37 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix segfault in quartz_table

Fri Dec 15 11:23:15 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Removed begin/end_session() from quartztest

Thu Dec 14 19:19:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Done todo item: For writable databases, make the behaviour currently
	  obtained by calling begin_session() and later end_session() the
	  default behaviour.  If users want the changes to be applied
	  immediately following a change, they should call flush().

Thu Dec 14 17:48:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix problem with recalc_maxweight() not being called before a
	  get_maxweight() in multimatch.cc if a node prunes at the top level,
	  since recalculate_w_max wasn't being checked at this point.
	  Introduced helper function getorrecalc_maxweight() to tidy this up.

	* Tidy up Asserts in common/netutils.h.

Thu Dec 14 17:11:17 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Adjusted todo.xml

Thu Dec 14 16:21:27 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Removed handling of OmDatabaseModifiedError in the API - it's
	  up to the users to know what to do.  Disabled quartzoverwrite2
	  as it's now inappropriate.

	* Added OmDatabase::reopen() to help them do so.

	* Adjusted todo.xml

Thu Dec 14 14:38:39 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added another quoting regression test.

Thu Dec 14 14:36:53 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed the quoting _again_, since it broke with backslashes.

Thu Dec 14 12:49:58 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix problems with recalculation of maxweight in postlists, causing
	  AssertParanoid at multimatch.cc:393.  When a prune was happening,
	  recalc_maxweight flag was not always being set, because some
	  {next,skip_to}_handling_prune() methods weren't being passed the
	  matcher, and a default argument of 0 was being used.  I've now
	  removed the default argument and pass the matcher always.

	  Sometimes the recalc could perhaps be avoided, but this is
	  certainly safer for now.

Thu Dec 14 12:30:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Sleepcat is now disabled by default.

	* Fixed a problem with tabs not being quoted in the remote case.  All
	  control characters are now quoted.  Incremented the protocol ver
	  number.

Thu Dec 14 11:54:17 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added regression test to check that all characters can be
	  are safe to exist in document keys.

	* Fixed OmDebug so that it can display messages containing zero bytes
	  (use fwrite instead for fprintf)

Wed Dec 13 18:43:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add regression tests to apitest to check that OmMSet and OmESet
	  begin() and end() iterators compare equal if the mset is empty.
	  Fix matchfunctor used in test_matchfunctor1 so that it works for
	  Muscat3.6 databases.

Wed Dec 13 18:35:05 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed bugs in OmMSet and OmESet iterators: begin() when the set
	  was empty produced an invalid iterator, and the assignment
	  operators would have failed when end iterators were involved.

	* Added a check in test_matchfunctor1() that the mset returned is
	  not empty.

Wed Dec 13 18:18:09 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Turn off tests involving terms with newlines or zero bytes in terms
	  with Muscat3.6 backends; these can't be expected to work.

Wed Dec 13 18:06:29 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Uncommented the code in pctcutoff1 - test now passes.

Wed Dec 13 17:53:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix: m36_key_file parameter wasn't being set with DA flimsy
	  databases (thanks to Mark Hagger).

	* indextest.cc changed to use "\n" instead of endl - compiles
	  with STLport again.

Wed Dec 13 17:27:17 GMT 2000 Olly Betts

	* OmMSet is now an STL compatible container.

	* Om*Iterator::difference_type was unsigned - now signed.

	* net/readquery.ll: fixed compiler warning.

	* Remote backend was defaulting to collapse on key 0.

Wed Dec 13 16:48:49 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Add handling of DatabaseModified to OmEnquire::get_mset()

Wed Dec 13 16:28:47 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Escape zero bytes in the network protocol, since these were
	  breaking things when being passed across as part of keys.

	* Add test of having zero bytes in the collapse keys.

	* In testsuite, only display the context of errors if there is one
	  present.

Wed Dec 13 14:44:46 GMT 2000 Olly Betts

	* Implemented OmMSet::operator[]().

Wed Dec 13 14:30:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added support for handling overwritten database conditions.
	  Currently works for OmDocument::get_{data,key}().

Wed Dec 13 13:20:45 GMT 2000 Olly Betts

	* Elaborated API hitlist in todo.xml.

Wed Dec 13 12:28:18 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fix to BackendManager to stop it removing tables prematurely.

Wed Dec 13 11:49:53 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Apply the stemmer to query terms used in spaceterms1.  (Not doing
	  so caused the test to fail spuriously on local databases, since the
	  terms are stemmed at index time).  The test still fails with da and
	  db databases.

	* Fixed a problem when stats were unpacked from the network stream,
	  where term names were not correctly unquoted.  This led to double
	  quoting of global statistics.

Wed Dec 13 02:49:05 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Implement copy and assignment methods for OmPositionListIterator.

Wed Dec 13 02:37:14 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* ESet and MSet iterators now cope with being copied / assigned when
	  the internals are null.

	* Added copy method to OmPositionListIterator interface.  No
	  implementation for this yet though, or for the already existing
	  assignment method.

	* Added a couple of easy items to the todo list to check regarding
	  iterators.

Wed Dec 13 02:19:50 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix small bug in mset_range_is_same{,_weights}()

Wed Dec 13 02:07:59 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* And add copy and assignment for OmESet, similarly.

Wed Dec 13 01:58:38 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add copy and assignment operators to OmMSet so that the internals
	  get copied (rather than just the pointer to them).  Really want a
	  small internals class, holding a refcount to the real internals, or
	  else to use refcntptrs for the members of OmMSet::Internal which are
	  potentially large (eg, items)

Wed Dec 13 01:05:44 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add Asserts to api/omdatabaseinternal.cc to ensure that there is at
	  least one database present when opening termlists, etc.  This should
	  really be done by throwing errors.

	* Add destructor to OmMSet, deleting internals.

	* Implement getting positionlists from QuartzDatabases.

	* Fix bug in copy constructor of OmDocument::Internal - some fields
	  were not being copied.

	* Fix api_db.cc so it compiles: code referring to mset by subscripting
	  temporarily commented out.

Tue Dec 12 20:05:10 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix bug with truncation of intermediate keys in btrees.

Tue Dec 12 18:33:12 GMT 2000 Olly Betts

	* OmMSet::get_docs() now takes sane parameters.

	* Various test programs updated to nearly work with new OmMSet
	  interface.

Tue Dec 12 17:18:33 GMT 2000 Olly Betts

	* Finished cleaning up OmMSet; updated TODO to reflect this.

Tue Dec 12 17:16:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix bug with sorting keys in btrees.

	* Various fixes to quartzdump.

Tue Dec 12 15:40:28 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Nettest compiles with new OmMSet interface.

Tue Dec 12 15:09:14 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed an endless loop in QuartzWritableDatabase::do_delete_document.

Tue Dec 12 15:07:39 GMT 2000 Olly Betts

	* OmMSetItem replaced by OmMSetIterator.

	* Added OmESet::empty().

	* Fixed == on OmESetIterator.

Tue Dec 12 14:16:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Renamed arguments to compare_keys()

Tue Dec 12 12:05:24 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added quartzdump utility to dump the contents of a quartz table.

Tue Dec 12 10:54:44 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added constructors and destructor to OmRSet.

Mon Dec 11 16:32:07 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Remove caching of average length in OmDatabaseInternal, was breaking
	  asking for the average length of a database which was being
	  modified.

Mon Dec 11 16:03:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* If no documents in database, don't divide by zero in
	  omdatabaseinternal.cc

	* If a document object doesn't come from the database, when iterating
	  through its termlist don't open postlists from the nonexistent
	  database; open them from the DocumentTerm objects in the document
	  instead.

	* Remove old unused and undefined method
	  OmDocument::Internal::add_posting()

Mon Dec 11 13:53:18 GMT 2000 Olly Betts

	* omenquire.h: Removed superfluous declaration of OmMSetCmp.

Mon Dec 11 13:38:12 GMT 2000 Olly Betts

	* Updated TODO list.

Mon Dec 11 13:24:45 GMT 2000 Olly Betts

	* OmRSet internals encapsulated.

Mon Dec 11 12:42:02 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* OmIndexerMessage::get_element and ...::operator[] now have
	  non-const versions.  Fixes const-warning in omstemmernode.cc.

Mon Dec 11 12:17:32 GMT 2000 Olly Betts

	* Better typedef-s for Om*Iterator::difference_type.

Sun Dec 10 17:51:41 GMT 2000 Olly Betts

	* Corrected various typedef-s for Om*Iterator.

Sun Dec 10 17:28:59 GMT 2000 Olly Betts

	* Updated TODO to reflect OmESet being cleaned up.

	* Term position argument to OmDocument::add_posting() is now
	  optional (as it was for OmDocumentContents).

Sun Dec 10 16:55:17 GMT 2000 Olly Betts

	* OmESetItem is dead - long live OmESetIterator!

	* net/socketclient.cc: fixed compiler warning.

	* net/socketserver.cc: fixed compiler warning.

Sun Dec 10 13:29:15 GMT 2000 Olly Betts

	* Started to encapsulate OmESet/OmESetItem interface.  Interface is
	  close, but currently implementation is exposed in omenquire.h.

	* apitest wasn't running puncterms1 or spaceterms1 - fixed.

Sun Dec 10 11:34:39 GMT 2000 Olly Betts

	* om/autoptr.h -> autoptr.h in lots of places.

Fri Dec  8 17:20:04 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Updated indextest to not use AutoPtr<OmIndexer>

Fri Dec  8 17:14:09 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Oops - removed one too many #include "autoptr.h"

Fri Dec 08 16:50:42 GMT 2000 Olly Betts

	* Updated TODO.

Fri Dec  8 16:44:26 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* IndexerBuilder now returns OmIndexer objects instead of
	  AutoPtr<OmIndexer>.  OmIndexer's internals are reference
	  counted.

	* Moved autoptr.h from include/om to common/, since it's no
	  longer used in the API.

Fri Dec  8 16:22:48 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed omstemmer node bug and made debug slightly more verbose
	  in indextest.cc.

Fri Dec  8 16:13:36 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added a test for OmIndexerMessage to indextest

	* Added output operator for OmIndexerMessage

	* Fixed a bug introduced into omvectorsplit node

	* Changed couts in indextest.cc to touts.

Fri Dec 08 14:53:24 GMT 2000 Olly Betts

	* quartztest: removed OmDocumentTerm reference so that it'll
	  compile (tests fail though).

Fri Dec  8 14:42:46 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* OmIndexerMessage is now a class by itself, replacing OmIndexerData
	  and the typedef to AutoPtr<OmindexerData>.  It's now a copy-on-write
	  object.

	* The indexer stuff all changed.

Fri Dec 08 14:24:02 GMT 2000 Olly Betts

	* omindexdoc.{cc,h}: no longer used so removed.

	* Pushed OmDocumentTerm from API level into the internals of the
	  library.

	* Updated TODO.

Fri Dec 08 12:08:49 GMT 2000 Olly Betts

	* delve: if just given a database (or list of databases), report the
	  number of documents and average document length.

Thu Dec  7 20:39:24 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fix bug: Om*Iterators which were created over empty lists didn't
	  have null internals, causing them not to compare equal to end
	  iterators.

	* Added many asserts to iterator code.

Thu Dec  7 20:02:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Removed OmTermListIteratorMap - OmTermListIterator can now be
	  across either a map or an actual termlist.

	* Om*Iterator classes all now delete internals when reaching end,
	  freeing resources sooner and making the comparison operators much
	  simpler.

Thu Dec  7 18:33:03 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Updates to TODO

Thu Dec  7 18:32:39 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Implementation of write locks for Quartz

Thu Dec  7 18:28:55 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fix to backendmanager which doesn't return writable databases
	  unnecessarily (which breaks things when there are write locks)

Thu Dec  7 18:25:50 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added test for Quartz write locks

Thu Dec  7 17:56:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add OmDocument::set_data() method which takes a string, instead of
	  an OmData object.  This allows, implicitly, use of const char *'s
	  as well.

	* Further fixes to quartztest.  It now compiles (though I've not
	  tried linking it yet...)  :)

Thu Dec  7 17:49:50 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed omkeylistiterator return types.

Thu Dec  7 17:27:57 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Moved get_document() from OmWritableDatabase to OmDatabase.

	* Added -> operator to OmKeyListIterator.  Fixed return values
	  and constness of Om*Iterator::operator *() methods.

	* Some fixes to quartztest.cc, but not enough to get it compiling.

Thu Dec 07 16:21:28 GMT 2000 Olly Betts

	* Some work on getting quartztest working.

Thu Dec 07 16:10:00 GMT 2000 Olly Betts

	* The library now builds, but "make check" still fails.

Thu Dec  7 15:39:19 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fixes to testsuite/index_utils.cc to not segfault.

Thu Dec  7 14:31:56 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Fixes to api_db.cc so that it compiles.

Wed Dec  6 18:50:48 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add test for terms with spaces, newlines, zero bytes, or
	  backslashes.

	* Updates to TODO

Wed Dec 06 18:18:16 GMT 2000 Olly Betts

	* Woohoo!  Now builds with just --disable-indexer!
	  (still doesn't pass any tests).

Wed Dec 06 17:24:19 GMT 2000 Olly Betts

	* Minor fix.  Now builds with --disable-indexer
	  --disable-quartz-backend (but doesn't pass any tests).

Wed Dec 06 16:35:34 GMT 2000 Olly Betts

	* Fixed up lots of build errors.

Wed Dec 06 14:56:59 GMT 2000 Olly Betts

	* Begin the long job of replacing OmDocumentContents with
	  OmDocument.  Won't currently build - expect the tree to be broken
	  for a few days.  As usual, if you want a working build, use the
	  "snapshot_latest" tag.

Wed Dec  6 12:03:44 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Backed out yesterday's overwritten-handling stuff.

Wed Dec  6 11:36:55 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Increase sleep in tcpclient1 to 3 (did tcpmatch1 last time, duh!)

Tue Dec  5 17:13:38 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* QuartzDocument now has a QuartzTableManager pointer rather than
	  two QuartzTable pointers.

	* QuartzDatabase::do_get_document_internal() copes with Btree
	  overwritten conditions.

	* QuartzDocument methods cope with Btree overwritten conditions

	* New method QuartzTableManager::reopen_tables_because_overwritten()
	  for helping with the above.

	* New test in quartztest for testing overwritten problems from the
	  API rather than just internally to Quartz.

	* Fixed a typo in omsettings.h comment (quartz_dir used to refer to
	  a sleepycat database)

Tue Dec  5 16:53:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Update todo.

	* Fix undesirable assert in stats.h

Tue Dec  5 15:41:40 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Replace OmMSet::docs_considered with
	  OmMSet::matches_{lower_bound,estimated,upper_bound}, giving more
	  useful information.

	* PostLists now have get_termfreq_{min,est,max}(), instead of
	  get_termfreq(), so the postlist tree can be used to calculate
	  the matches_* values for the mset.  Implemented for all the
	  postlist subclasses.

	  LeafPostList's still has a virtual get_termfreq() method,
	  and implements get_termfreq_* in terms of it, so database postlists
	  don't need to be modified.

	* Passing of MSets across network modified to pass the new
	  information.

	* PendingMSet uses the values from the mset to return the values
	  of get_termfreq_*().  This assumes that recalc_maxweight has been
	  called first, which is has been.

	* Muscat36 databases get_termfreq() methods fixed to use a
	  LeafPostList rather than a PostList.

	* Renamed test docs_considered1 to matches1, and add several
	  more cases to it.

Tue Dec 05 15:38:27 GMT 2000 Olly Betts

	* Added tests/testdata/apitest_punc.txt to distribution.

Tue Dec 05 15:07:26 GMT 2000 Olly Betts

	* Oops, failed to add new file `tests/testdata/apitest_punc.txt'
	  with last check-in.

Tue Dec 05 14:34:04 GMT 2000 Olly Betts

	* OmTermListIterator implemented for an OmDocument with terms stored
	  in a map rather than coming from a Document.

	* Fixes to remote protocol so solve problems with terms with
	  punctuation in (regression test punc_terms1).

Mon Dec  4 15:02:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Makefile tweak in docs/

Mon Dec 04 14:13:05 GMT 2000 Olly Betts

	* More OmDocument work.

Mon Dec  4 11:43:46 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Renamed OmMSet::mbound to docs_considered.

Mon Dec  4 10:11:11 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added some more std:: prefixes for STLport.

Fri Dec  1 17:45:01 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Increase the sleep after the server is started by tcpclient1 to 3
	  seconds so that the server is more likely to have started when
	  then test ran.  This seems to be what was causing the test to
	  randomly fail.  Really, we want a better solution to this (such as
	  the server picking a port and writing it out on stdout once it is
	  listening.)

Fri Dec  1 17:27:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Swapped the ports used by tcpclient1 and tcpmatch1 to see if the
	  random failures follow suit.

Fri Dec  1 17:21:07 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Another minor fix to work with STLport.

Fri Dec  1 17:01:02 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add std::'s and similar to fix compilation with STLport.

	* Fix bug in expander due to nth_element being called on the wrong
	  element.  This is the counterpoint of the bug fixed on Nov 24th
	  with the matcher.

Fri Dec  1 16:30:26 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Minor tweaks in error strings.

Fri Dec 01 12:57:59 GMT 2000 Olly Betts

	* Corrected erroneous documentation comment.

Thu Nov 30 18:50:16 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* OmSettings no longer throws exceptions internally (at the cost of
	  slightly more code duplication).

Thu Nov 30 18:05:39 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add a few std::'s to strings which had been missed.

Thu Nov 30 16:41:11 GMT 2000 Olly Betts

	* OmDocument::Internal now knows its OmDatabase.

Thu Nov 30 16:40:33 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add context to network errors thrown from OmSocketLineBuf.

Thu Nov 30 16:21:47 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added a quartz test for largish bitmaps.

	* Fixed the code so that the above test would pass.

Thu Nov 30 16:10:37 GMT 2000 Olly Betts

	* OmDocument::add_posting() pretty much done.

Thu Nov 30 15:51:46 GMT 2000 Olly Betts

	* More work on OmDocument::add_posting().

	* Added OmTermListIterator::positionlist_begin() and
	  OmTermListIterator::positionlist_end().

Thu Nov 30 14:16:28 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Fixed a prototype bug introduced with the last commit.

Thu Nov 30 13:23:14 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Bcursor::find_key now more const-correct.

	* Bcursor_create now returns an AutoPtr.  The resultant changes
	  fixed a memory leak.

	* New exception: OmDatabaseModifiedError.  Thrown when an open
	  revision of a table is no longer valid due to multiple updates.

	* quartzoverwrite1 test re-enabled, and passes.

Thu Nov 30 13:23:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* nettest now uses quartz backend: should always run all tests now
	  (apart from tcpdead1, which doesn't work).

Wed Nov 29 19:46:22 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* In testsuite, report the context of Om exceptions as well as their
	  type and message.

Wed Nov 29 18:30:10 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add "remote_connect_timeout" parameter to be supplied when opening
	  a remote database, to specify a separate timeout for the connect
	  operation to that used once the connection has been opened.

	* Add setting of the context of errors thrown by tcpclient or
	  progclient, so that the node which failed can be determined.

Wed Nov 29 17:50:03 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Reworked Btree_base::read() a bit so that it's hopefully more
	  readable.

	* Hopefully fixed a bug when the bitmap approaches 1k.

	* Fix to catch problems re-opening databases after an apply in
	  Quartz.

Wed Nov 29 17:30:26 GMT 2000 Olly Betts

	* Added OmDocument::termlist_begin() and OmDocument::termlist_end()

Wed Nov 29 16:53:13 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Comment out quartzoverwrite1 test so that it doesn't cause problems
	  for other developers.

Wed Nov 29 16:27:19 GMT 2000 Olly Betts

	* docid now in Document class rather than subclasses.

Wed Nov 29 14:54:13 GMT 2000 Olly Betts

	* leafdocument.cc renamed to document.cc

	* Document class now has a pointer to the associated Database class
	  so we can open termlists, etc.

Wed Nov 29 14:03:43 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Add quartztest to test for case when a database block gets
	  overwritten.  Currently, this fails because an exception doesn't
	  get thrown when it should.

Wed Nov 29 13:18:24 GMT 2000 Olly Betts

	* LeafDocument class renamed to Document.

Wed Nov 29 12:35:49 GMT 2000 Olly Betts

	* Added OmDocument::remove_posting(), OmDocument::remove_term(),
	  and OmDocument::clear_terms()

Wed Nov 29 12:31:22 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added another revision number in the middle of the base file,
	  before the bitmap.  Also now check that there isn't any extra
	  data at the end after we finish reading it.  Incremented the
	  database format.

Wed Nov 29 11:55:03 GMT 2000 Olly Betts

	* Added OmDocument::remove_key() and OmDocument::clear_keys()

Tue Nov 28 18:34:57 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Btree bitmap now merged with base - one object, one file.

Tue Nov 28 17:13:56 GMT 2000 Olly Betts

	* Added OmDocument::set_data()

Tue Nov 28 16:47:06 GMT 2000 Olly Betts

	* Started to alter OmDocument to be a general purpose document class
	  which includes the functionality currently in OmDocumentContents.

Tue Nov 28 15:08:38 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Added OmSplitOnCharsNode, which does a subset of OmRegexSplitNode
	  but less slowly.

	* Modified RegexSplit node and regexcommon so that less copying
	  of strings is needed.

Tue Nov 28 13:42:41 GMT 2000 Chris Emerson <chris.emerson@open.muscat.com>

	* Moved the Btree's bitmap into a separate object.

Tue Nov 28 13:06:36 GMT 2000 Olly Betts

	* Eliminated OmDocumentParams.

	* Removed unnecessary mutex from OmDocument::Internal.

Mon Nov 27 18:45:27 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Implement get_position_list() on databases.  Untested.  Also needs
	  some work to make consistent with open_position_list() on posting
	  lists: see todo list.

Mon Nov 27 18:29:00 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Change #define LEVEL ... to #define GET_LEVEL ... in btree_util.h:
	  fixes problem reported by includetest

Mon Nov 27 18:20:42 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added a set of modifications to the todo.xml.  Also, add a
	  "release" field, recording the release that the work must be
	  performed by.

Mon Nov 27 18:08:35 GMT 2000 Olly Betts

	* A RefCntPtr now copes with being assigned to itself (used to
	  delete the underlying object if the reference count was 1).  Added
	  regression test (refcnt2).

	* Now overwrite pointer inside RefCntPtr before deleting the pointed
	  to object so there's no window where another thread can access the
	  pointer and get the just-deleted object.

Mon Nov 27 14:36:59 GMT 2000 Olly Betts

	* OmError class now optionally stores an errno value.

Mon Nov 27 13:04:18 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Quartztest builds its test databases in a subdirectory, which
	  is now in .cvsignore, so we shouldn't get cvs complaining about
	  so many unknown files any more.

Mon Nov 27 12:53:16 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Another TODO item.

Mon Nov 27 12:15:53 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added a couple of new items to the todo list.

Fri Nov 24 19:23:56 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Quartztests now deletes all old tables, so that database formats
	  don't cause problems.

Fri Nov 24 19:03:59 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Added std:: prefix to lots of strings which didn't have it.
	  I've probably added some where they shouldn't be: there were rather
	  a lot of cases of this.

Fri Nov 24 18:27:06 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Major bug fix!  When removing elements, matcher was performing
	  nth_element() on the first element to be thrown away, rather than
	  the lowest element to keep.  This meant that, after throwing away
	  low scoring items, items.back() was a random item rather than the
	  lowest scoring item.  This caused the min weight for getting into
	  the mset to go up faster than it should have done, and generally
	  broke everything.

	  It will be interesting to compare evaluation measures before and
	  after this fix.

Fri Nov 24 15:34:17 GMT 2000  Richard Boulton <richard.boulton@open.muscat.com>

	* Declare this to be version 0.4.1