Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

   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
1997-12-30  enami tsugutomo  <enami@but-b.or.jp>

	* rcs.c (RCS_checkin): Use gmtime() instead of localtime()
	(restores behavior from RCS 5.x which was broken with RCS library
	-kingdon).

Mon Dec 29 12:53:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* modules.c (do_module): Check for a request for a file within a
	module which is not a directory.
	* sanity.sh (modules): Add test 149b1 for above patch.

	* client.c (start_tcp_server): Remove useless assignment, left
	behind by Dec 15 patch.

Sat Dec 27 17:41:11 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c, options.h.in, history.c, import.c, main.c, rcs.c,
	update.c: Remove !HAVE_RCS5 code.  It had bit-rotted a while ago,
	and more to the point is obsolete with the RCS library.

27 Dec 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* zlib.c, server.h (gunzip_and_write): New function.
	* client.c (update_entries): Call it instead of a gunzip subprocess.
	* zlib.c, server.h (read_and_gzip): New function.
	* client.c (send_modified): Call it instead of a gzip subprocess.

Sat Dec 27 13:07:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	Decrease RCS_deltas memory usage to what we need (approximately
	the size of the file we are patching plus the size of the largest
	patch).  Previously memory usage had been approximately the size
	of the RCS file because we never freed lines until the end.
	* rcs.c (linevector_free, linevector_copy, linevector_add,
	linevector_delete):
	Instead of having all the lines and struct line's in the alloc_*
	space, have each line and its struct line in its own malloc'd
	space.  Use a refcount to deal with curlines vs. headlines
	vs. trunklines in RCS_deltas.
	(struct allocblock, blocks, block_alloc, block_free): Remove; no
	longer used.
	(apply_rcs_changes, RCS_deltas): Don't copy lines into allocated
	space; linevector_add now does that for us.
	(rcs_change_text, RCS_deltas): Don't call block_free.

Tue Dec 23 08:28:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvsbug.sh: Change bug-cvs address from prep.ai.mit.edu to gnu.org
	per email from Martin Hamilton.

Sun Dec 21 21:49:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_checkin): Disable keyword expansion when generating
	the change text.
	* sanity.sh: Move tests keyword-24 through keyword-27 into
	new section keywordlog and expand greatly.  Note that CVS 1.9.18
	passes the new tests both local and remote but the current
	version failed them both local and remote before this fix.

Sat Dec 20 19:56:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_delete_revs): Clean up temporary files even if noexec.
	Without this fix, basica-o5a in sanity.sh would leave files around.

Thu Dec 18 13:05:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c: Fix typo in declaration (evecvp -> execvp) (credit to
	Erik Walthinsen for reporting this).  Only declare it if not
	HAVE_UNISTD_H.  Move declaration to before the first use.

Tue Dec 16 12:59:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c: Collapse two identical declarations for join_file.

Mon Dec 15 16:01:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (start_tcp_server): Remove calls to htons and add one
 	call to ntohs (init_sockaddr calls htons on the port argument).

Mon Dec 15 00:07:02 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (failure_exit): New variable.
	(get_server_responses): If it is set, then return
	failure.
	(updated_seen, updated_fname): New variables.
	(update_entries): Use updated_fname if set.  In the "move away
	foo.c; it is in the way" case print "C" not "U", and set
	failure_exit.
	(handle_mt): If we get +updated tagged text, stash it away in
	updated_fname rather than printing it immediately.
	(handle_mt, get_server_responses): If we stashed a filename and
	didn't get around to printing it, go ahead and print it.
	* sanity.sh (conflicts2-142d2): Adjust to test for fix.  Remote is
	now like local was in terms of exit status and "C aa.c" message.

Sun Dec 14 00:27:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	Implement tagged text feature:
	* update.c (write_letter): Take a single finfo argument rather
	than file and update_dir.  While we are at it change it to return
	void (since the returned value always had been 0).
	* update.c: Update callers.
	* server.c, cvs.h (cvs_output_tagged): New function.
	* client.c (responses): Add "MT" response.
	(handle_mt): New function.
	* update.c (write_letter): Output via cvs_output_tagged.

Sun Dec 14 14:13:05 1997  Ian Lance Taylor  <ian@cygnus.com>

	* recurse.c (do_dir_proc): Only check for CVS/Repository if
	W_LOCAL.
	* sanity.sh (devcom-t2, devcom-t3): New tests for above patch.

Sun Dec 14 00:27:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* root.c (parse_cvsroot): Initialize check_hostname (fixes thinko
	in GSSAPI changes).

Sat Dec 13 13:15:35 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c: Use indentation to indicate nesting of #ifdef's.

	* client.c (connect_to_gserver): Reindent (in one place).

Fri Dec 12 17:38:15 1997  Chris Provenzano <proven@cygnus.com>
	and Ian Lance Taylor  <ian@cygnus.com>

	* cvs.h (CVSmethod): Add gserver_method.
	* root.c (method_names): Add gserver.
	(parse_cvsroot): Handle :gserver:.
	* client.h (cvsauthenticate): Declare.
	(cvs_gssapi_encrypt): Declare if HAVE_GSSAPI and ENCRYPTION.
	(cvs_gssapi_wrap_buffer_initialize): Declare if HAVE_GSSAPI.
	(connect_to_pserver): Update declaration.
	(pserver_authenticate_connection): Declare when HAVE_GSSAPI and
	SERVER_SUPPORT is defined in addition to other case.
	* client.c: If HAVE_GSSAPI, include GSSAPI header files.
	(gcontext): New static variable if HAVE_GSSAPI.
	(connect_to_pserver): Add do_gssapi parameter.  Change all
	callers.  Move rejection handling to bottom of function.
	(recv_bytes): New static function if HAVE_GSSAPI.
	(connect_to_gserver): Likewise.
	(start_server): Handle gserver_method.  Handle GSSAPI encryption
	and authentication.
	* server.c: Include <sys/socket.h> if HAVE_GSSAPI, in addition to
	existing cases.  If HAVE_GSSAPI, include GSSAPI header files.
	Include <grp.h> even if AUTH_SERVER_SUPPORT is not defined.
	(gcontext, cvs_gssapi_wrapping): New static variables if
	HAVE_GSSAPI.
	(cvs_gssapi_encrypt): New global variable if HAVE_GSSAPI and
	ENCRYPTION.
	(serve_gssapi_encrypt): New static function if HAVE_GSSAPI and
	ENCRYPTION.
	(serve_gssapi_authenticate): New static function if HAVE_GSSAPI.
	(requests): Add Gssapi-encrypt if HAVE_GSSAPI and ENCRYPTION.  Add
	Gssapi-authenticate if HAVE_GSSAPI.
	(switch_to_user): Compile if HAVE_GSSAPI, in addition to existing
	cases.
	(pserver_authenticate_connection): Likewise.  Ifdef out part of
	the code for AUTH_SERVER_SUPPORT.  Handle a GSSAPI request.
	(gserver_authenticate_connection): New static function if
	HAVE_GSSAPI.
	(cvsauthenticate): New global variable.
	(struct cvs_gssapi_wrap_data): Define if HAVE_GSSAPI.
	(cvs_gssapi_wrap_buffer_initialize): New function if HAVE_GSSAPI.
	(cvs_gssapi_wrap_input): New static function if HAVE_GSSAPI.
	(cvs_gssapi_wrap_output): Likewise.
	* main.c (opt_usage): Mention -a.
	(main): Handle -a.  Handle pserver if HAVE_GSSAPI, in addition to
	existing cases.
	* login.c (login): Pass new argument to connect_to_pserver.

Fri Dec 12 15:33:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* buffer.c (PACKET_SLOP): Define.
	(packetizing_buffer_initialize): Use PACKET_SLOP when allocating
	holdbuf.
	(packetizing_buffer_input): Allow up to PACKET_SLOP bytes in
	stackoutbuf.
	(packetizing_buffer_output): Use just BUFFER_DATA_SIZE + 2 for
	inbuf.  Allow PACKET_SLOP + 4 extra bytes in stack_outbuf.
	Correct >= to > in test of incoming number of bytes.  Use
	PACKET_SLOP in other tests.

Fri Dec 12 10:27:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (start_tcp_server): Revise comment to reflect
	SOCK_STRERROR and SOCK_ERRNO now being in use.

Thu Dec 11 15:32:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (init_sockaddr): Compile if HAVE_KERBEROS, as well as
	if AUTH_CLIENT_SUPPORT.  Return a pointer to a struct hostent.
	(start_tcp_server): Clean up.  Use init_sockaddr.  Use
	SOCK_STRERROR and SOCK_ERRNO.  Don't bind the socket.

	Generalize buffering code used by Kerberos encryption routines
	into a generic packetizing buffer.  The new code in buffer.c is a
	modified version of the code removed from server.c.
	* buffer.c (struct packetizing_buffer): Define.
	(packetizing_buffer_initialize): New function.
	(packetizing_buffer_input): New static function.
	(packetizing_buffer_output): New static function.
	(packetizing_buffer_flush): New static function.
	(packetizing_buffer_block): New static function.
	(packetizing_buffer_shutdown): New static function.
	* buffer.h (packetizing_buffer_initialize): Declare.
	* server.c (struct krb_encrypt_data): Rename from
	krb_encrypt_buffer, and remove all fields not related to
	encryption.
	(krb_encrypt_buffer_initialize): Just call
	packetizing_buffer_initialize.
	(krb_encrypt_input): New static function.
	(krb_encrypt_output): New static function.
	(krb_encrypt_buffer_input): Remove.
	(krb_encrypt_buffer_output): Remove.
	(krb_encrypt_buffer_flush): Remove.
	(krb_encrypt_buffer_block): Remove.
	(krb_encrypt_buffer_shutdown): Remove.

Wed Dec 10 15:39:44 1997  Ian Lance Taylor  <ian@cygnus.com>

	* buffer.c (stdio_buffer_initialize): Correct formatting.

Sun Dec  7 09:37:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb-0d0): New test, for checkout on existing
	directory.

Sat Dec  6 00:25:11 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (binwrap3): Clean up repository too.  Clean up working
	directory with "rm -r" not "rm -rf".

Thu Dec  4 17:11:18 1997  Larry Jones  <larry.jones@sdrc.com>

	* subr.c (check_numeric): Don't reference argv[1] when argc is 1
	(should be argv[0]).

	* sanity.sh: Fix lines that look like conflict markers but aren't
	to prevent problems checking in.
	(binwrap3): Remove local CVSROOT when done so that later
	tests that expect to create it don't fail.

Thu Dec  4 18:19:21 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h: Remove mempcpy definition.  I think the polite way to
	describe my feelings about mempcpy is something like "we don't
	have agreement that it is a good idea".
	* rcs.c (truncate_revnum): Don't call it.
	* sanity.sh: Run multibranch2 test by default.
	(multibranch2): Use ${TESTDIR} a few places.
	(multibranch2-9): Accept "P file1" as well as "U file1".

	* sanity.sh: Don't add 1997 to the copyright notice.  Add GPL
	terms.  Add discussion of copyright issues.
	* rcs.c (truncate_revnum, truncate_revnum_in_place,
	compare_truncated_revnums): Reindent.

1997-12-04  Jim Meyering  <meyering@na-net.ornl.gov>

	* subr.c (xstrdup): Use memcpy rather than strcpy.
	(compare_revnums): Declare parameters to be `const'.
	Remove unnecessary uses of xstrdup and corresponding frees.
	(increment_revnum): Declare parameter to be `const'.
	Use memcpy rather than strcpy.
	(gca): Declare parameters to be `const'.
	(check_numeric): Declare REV parameter to be `const'.
	(file_has_markers): Declare parameter to be `const'.
	(get_file): Declare `char*' parameters to be `const'.
	* run.c (run_exec): Declare `char*' parameters to be `const'.
	* cvs.h (mempcpy) [! HAVE_MEMPCPY]: Define it.
	Add `const' to types in several prototypes.

	* rcs.c (truncate_revnum): New function.
	(truncate_revnum_in_place): New function.
	(compare_truncated_revnums): New function.
	(max_rev): New function.
	(RCS_addbranch): Make BRANCH parameter `const'.
	Use the above functions rather than open-coding them.
	When BRANCH is a revision number, insert it *in order*
	in the sorted list of branch numbers, not at the end.
	Add assertion that insertion succeeds.
	* sanity.sh (multibranch2): Test for this.
	(Copyright): Add 1997.

Dec 1997  Karl Fogel  <kfogel@floss.red-bean.com>

	* wrapper.c (wrap_name_has): loop as far as wrap_count +
	wrap_temp_count, not wrap_count + wrap_saved_count, otherwise
	some wrappers get skipped.
	(wrap_matching_entry): same.
	* sanity.sh (binwrap3): new test, for import with
	CVSROOT/cvswrappers and .cvswrappers specifying -k 'b' options.

1997-11-30  Jim Meyering  <meyering@na-net.ornl.gov>

	* client.c (send_a_repository): Strip trailing slashes from the name
	of the update directory.  Otherwise, running `cvs update dir/' provokes
	this failure `protocol error: illegal directory syntax in dir/' when
	running in client/server mode.

	* hash.c (insert_before): New function derived from addnode.
	(addnode): Simply return insert_before.
	(addnode_at_front): Simply return insert_before.
	* hash.h (insert_before): Add prototype.

	* server.c (dirswitch): Compute `strlen(dir)' once and save it,
	rather than computing it four times.  Also do s/illegal/invalid/ to
	this diagnostic: "E protocol error: illegal directory syntax in %s".

Sun Nov 30 18:03:02 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c: Fix comment (no longer a front-end to "rcs").

	* error.c, error.h (rcserror): Remove.
	* admin.c, rcs.c: Call error instead of rcserror.  This changes
	the format of these messages from "rcs: <path>: error" to "cvs
	<command>: <path>: error".  The former format wasn't quite what
	RCS printed anyway (because RCS would sometimes print "ci", "co",
	&c, not "rcs"), and preserving RCS's exact output probably is not
	a good idea anyway (because it will make people think that the
	error was caused by an external program).  In two cases, I tidied
	up the message in a more drastic fashion ("cannot stat" in
	RCS_checkin and "could not diff" in RCS_delete_revs).

	* sanity.sh (basica-o2b, binfiles2-o1, admin-18, admin-22-o10,
	admin-22-o17): Look for "cvs <command>" not "rcs".

	* run.c, cvs.h (run_setup): Replace varargs nonsense with a single
	argument which gets parsed as the result of the vasprintf
	used to.
	* client.c, commit.c, logmsg.c, modules.c, rtag.c, tag.c, update.c,
	wrapper.c: Update callers, either to do the sprintf themself or to
	just call run_arg if it will do the job.
	* rcscmds.c: Likewise for call_diff_setup and callers.

	* run.c, cvs.h (run_args): Remove; nowhere used.

Sat Nov 29 22:15:06 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* options.h.in: Remove declaration of getwd; see lib/ChangeLog for
	rationale.

1997-11-29  Jim Meyering  <meyering@na-net.ornl.gov>

	* update.c (checkout_file): Initialize `backup'.

	* diff.c (diff_fileproc): Initialize `tmp' and `fname'.

	* modules.c (do_module): Initialize `server_dir_to_restore'.
	(do_module): Initialize `value' in an else clause.

	* rcs.c (RCS_checkin): Initialize `commitpt'.
	(RCS_delete_revs): Initialize `revp'.
	(RCS_copydeltas): Always initialize `insertbefore'.

	* run.c (run_print): Define `outfn' even in error case.

Mon Nov 24 17:28:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_findlock_or_tip): Prototype.
	(RCS_checkin): Fix call to pass correct number of arguments.

Sun Nov 23 10:34:03 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (do_dir_proc): Move check for CVS/Repository and
	CVS/Entries to before where we call the direntproc.
	* client.c (send_dirent_proc): Remove code to check for
	CVS/Repository, now that recurse.c does it.
	* sanity.sh (conflicts3-18 through conflicts3-19): New tests, for this.

Sat Nov 22 10:54:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (do_dir_proc): Check that CVS/Repository and
	CVS/Entries exist.
	* sanity.sh (conflicts3-14 through conflicts3-17): New tests, for this.

	* client.c (send_fileproc): Send options field from
	vers->entdata->options not vers->options.
	* cvs.h (struct entnode): Add comment (options and timestamp must
	not be NULL).
	* sanity.sh (binfiles-9 through binfiles-13, binfiles-sticky5,
	keyword-17): Remove kludges for remote; tests for fix.

	* update.c (update_fileproc): Fix comment; direct checkout is
	still faster than patches for local but not for quite the
	same reasons.

	* add.c (add): Pass SEND_NO_CONTENTS to send_files.

Wed Nov 19 18:25:03 1997  Mike Glendinning  <mikeg@sequent.com>

	* update.c (patch_file_write): Missing cast provided.

Wed Nov 19 15:57:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_deltas): Solve trigraph problem (once and for all, I
	hope) with 3 calls to cvs_output.

Wed Nov 19 01:52:57 1997  Andy Piper <andyp@parallax.co.uk>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* classify.c (Classify_File), cvs.h (struct vers_ts), vers_ts.c
	(Version_TS): Clarify NULL versus "" for options in comments.
	* vers_ts.c (Version_TS): Treat "" the same way as NULL in options
	and vers_ts->options.
	* sanity.sh: New tests binfiles-sticky5 through binfiles-17 test
	for this.

1997-11-16  Karl Fogel  <kfogel@floss.red-bean.com>

	* client.c (update_entries): parse server-sent entries line even
	in the case of "cvs export", because we need to know if -kb option
	is set.
	Init `options' to NULL like anything else.

Tue Nov 18 09:20:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.21.

	* Version 1.9.20.

Mon Nov 17 14:35:31 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (server_updated): If scratched_file and noexec are set,
	clean up so we don't get a "duplicate Scratch_Entry" warning
	later.
	* sanity.sh: New tests conflicts3-10 to conflicts3-13, for this.

	* sanity.sh (conflicts3): Don't allow "file1 was lost" messages
	here; I don't think CVS actually produced them, and they don't
	belong.

Sun Nov 16 23:19:41 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Accept either "U file1" or "P file1".

Fri Nov 14 12:32:05 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c: Add comment about cleaning up ,foo, file on ^C.

Fri Nov 14 11:56:29 1997  Andy Piper <andyp@parallax.co.uk>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* filesubr.c (unlink_file_dir): Don't print trace message in the
	server.

Fri Nov 14 11:28:55 1997  Jim Meyering and Jim Kingdon

	* rcs.c (RCS_getdatebranch): If the branch we are looking for
	doesn't exist, return a revision which matches the date, not
	just NULL.
	* sanity.sh (tagdate): New test, for this.

Thu Nov 13 10:11:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb-21): Fix comment which described a behavior
	which no longer exists.

Wed Nov 12 16:24:45 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	Clean up infrastructure made unnecessary by RCS library:
	* rcscmds.c (diff_exec, diff_execv): Use literal "diff" not DIFF.
	* options.h.in (DIFF), rcs.h (RCS, RCS_CI, RCS_DIFF,
	RCS_RCSMERGE): Removed; no longer used.
	* commit.c (commit), patch.c (patch_fileproc),
	rcscmds.c (RCS_exec_rcsdiff), start of rcscmds.c: Update comments
	to reflect librarification of RCS.
	* options.h.in (RCSBIN_DFLT): Removed.
	* main.c, cvs.h (Rcsbin, free_Rcsbin): Removed.
	* main.c (main): Don't check RCSBIN environment variable.  -b
	global option is now a noop.
	* cvs.h (RCSBIN_ENV): Removed.
	* expand_path.c (expand_variable): $RCSBIN is now an error.
	* mkmodules.c (config_contents): Remove RCSBIN.
	* parseinfo.c (parse_config): RCSBIN now a noop.
	* server.c (server): Don't put Rcsbin in PATH.

Mon, 10 Nov 1997  Jim Kingdon

	* rcs.c (RCS_checkin): Actually, when we get a change text
	for a text file using get_file, we want text mode, although
	the reasons are kind of subtle (see comment).

	* rcs.c (RCS_checkin): Pass correct mode to get_file for
	binary files.

	* rcscmds.c: Declare vasprintf.

Mon Nov 10 11:11:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	This fixes problems with windows-NT/run.c improperly quoting, and
	is cleaner anyway.
	* rcscmds.c (call_diff_setup, call_diff_arg, call_diff_add_arg,
	call_diff_argv, call_diff_argc, call_diff_argc_allocated): New
	functions/variables, lightly adapted from src/run.c.
	* cvs.h, run.c (call_diff, call_diff3): Move from here...
	* rcscmds.c: ...to here.

Sun, 9 Nov 1997  Jim Kingdon

	* rcs.c (rcs_internal_unlockfile): Call rename_file not rename.
	This makes it work on NT again.

Sun Nov  9 16:54:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (diffmerge2): Protect keywords against unwanted
	expansion.  They got clobbered and the testcase stopped working
	when I checked it in.

Fri Nov  7 13:23:38 1997  Karl Fogel  <kfogel@floss.red-bean.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (diffmerge1, diffmerge2): new tests, for bugs, or
	potential bugs, in ../diff/analyze.c which were fixed by Paul
	Eggert's patch.

Sun Nov  9 10:28:43 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_settag): Reindent.

	* rcs.c (rcs_internal_lockfile): Fix typo (thow -> throw).

Sat Nov  8 15:58:53 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (cvsadm): Remove most of the tests which tested
	CVS/Root.  This takes the run time for the cvsadm tests from
	about 5 minutes 15 seconds to about 4 minutes 10 seconds with no
	significant loss in coverage.

	* rcs.c (rcs_internal_lockfile): Check for errors from system
	calls.  If open() gives an error, don't muck with stat and errno
	(I don't know what the RCS code that this comes from was trying to
	do, but it clearly isn't accomplishing anything here).
	(RCS_rewrite, RCS_delete_revs): Check for errors from system calls.

Sat Nov  1 14:21:29 1997  Michael L.H. Brouwer  <michael@thi.nl>

	* rcs.c (RCS_checkin): Change type of bufsize from int to size_t.
	(RCS_delete_revs): Change type of bufsize and len from int to size_t.
	(RCS_getdeltatext): Change type of textlen from int to size_t.
	* rcs.h (struct deltatext): Change len from int to size_t to keep
	the compiler happy on systems where size_t is unsigned int.
	[This goes well beyond keeping the compiler happy; if sizeof
	(size_t) != sizeof (int), the old code was quite broken -kingdon]

Sat Nov  1 14:21:29 1997  Michael L.H. Brouwer  <michael@thi.nl>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_checkin): When checking if we were holding the lock
	use delta->author instead of user since the latter might have been
	clobbered by a call to getcaller.  This resulted in the failure of
	test basica-7.
	[I don't completely follow the scenario where it gets clobbered,
	it but sounds vaguely plausible and the replacement seems
	cleaner, precisely because it avoids allocation issues -kingdon]

Wed Nov  5 20:16:12 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkin.c, checkout.c, commit.c, cvs.h, import.c, login.c,
	main.c, update.c: Change FALSE to 0 and TRUE to 1 and replace
	monstrosities like "cvswrite == TRUE" with just "cvswrite".  FALSE
	and TRUE sometimes conflicted with system headers (NextStep3.3?),
	but more to the point, good old 1 and 0 are fine and were used by
	most of CVS already.

Tue Nov  4 12:19:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_checkin, RCS_lock, RCS_unlock): Rename local variable
	quiet to checkin_quiet or some such, to avoid confusion with
	global variable quiet.

	* lock.c: Update comment to refer to add_rcs_file rather than "rcs
	-i".

	* rcs.h (struct rcsnode): Add comments for all fields.
	* rcs.c (RCS_delete_revs): Refuse to delete revisions which have
	symbolic names.  Fix fencepost bug which caused us to sometimes
	check one more revision than we should for locks, branches, and
	this.
	(findtag): New function, to help above code.

	* admin.c (admin): Take out writelocks not readlocks.  This has
	been a bug "forever", but may become more noticeable with
	rcs_internal_lockfile relying on the writelocks.

Mon Nov  3 10:17:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_rewrite): Don't write the file if noexec.
	* sanity.sh (basica, branches): Test for this.

Sat Nov  1 10:01:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.h (struct deltatext): Comment text and log fields.

	* admin.c (admin_fileproc): Call RCS_reparsercsfile not
	RCS_fully_parse.  Don't muck with ->other field in RCSVers (it
	doesn't need to be set).
	* rcs.h, rcs.c (RCS_reparsercsfile): No longer static.  No point
	in having this static when RCS_rewrite and RCS_fully_parse are not.
	* rcs.c (getdelta): Remove obsolete comment about not storing the
	newphrases from the deltas, since we now do.

Sat Nov  1 10:01:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>
			  and Paul Eggert

	* rcs.c (rcs_internal_lockfile): Clarify the comments about O_EXCL
	and such matters.

Sat Nov  1 10:01:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_delete_revs): Pass force_tag_match to RCS_settag.
	* sanity.sh (basica-o2a, basica-o2b): Test for this.

1997-11-01  Peter Brandstrom  <d91-pbr@nada.kth.se>

	* sanity.sh: Use ${username} more places.

Sat Nov  1 00:14:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (rcs_internal_lockfile): Add comments about what we are
	trying to accomplish here (versus what RCS tries to accomplish).

	* rcs.c (RCS_parsercsfile_i): Clarify/expand comment about
	the purpose of having both this and RCS_reparsercsfile.
	(RCS_rewrite): Add comment about how this works.

	* admin.c (admin_fileproc): Add comment about call to
	RCS_fully_parse not RCS_reparsercsfile.
	* rcs.h: Comment on what delta_pos field of struct rcsnode is.

Fri Oct 31 16:38:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>
			  and Abe Feldman

	* client.c (update_entries): If UTIME_EXPECTS_WRITABLE, if
	necessary change the file to be writable temporarily to set its
	modification time.

Thu Oct 30 17:42:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c (admin): Deal with new :: syntax for ranges.
	* rcs.c, rcs.h (RCS_delete_revs): New arg inclusive (set for the old
	behavior, clear to enable new code).
	* admin.c (admin_fileproc): Set it if :, clear it if ::.
	* sanity.sh (basica, head, branches, log): Add tests for this feature.

	* admin.c (admin_fileproc): Clean up the error message which
	happens if one of the RCS_* functions returns an error status; it
	is confusing to say that "rcs" failed now that this is implemented
	internally.
	* sanity.sh (admin): Update accordingly.

Wed Oct 29 07:07:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (admin-22-o24): New test, tests that admin -o
	correctly munged the deltatexts on a branch too.

	* rcs.c (RCS_delete_revs): If we are deleting an entire branch,
	delete the node in ->branches rather than setting the ->key to the
	bogus value NULL.
	* rcs.c (RCS_delete_revs): If "rev1" equals "branchpoint", then set
	"before" to the revision on the trunk that we branch from.
	* rcs.c (RCS_delete_revs): Don't set rev2 to revp->version (the
	code is missing an xstrdup, but it doesn't matter because rev2
	isn't used after this point).
	* sanity.sh (binfiles2-o2 to binfiles2-o4): New tests, for this.

Tue Oct 28 19:30:05 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_delete_revs): Restore code which passes rev2 to
	RCS_getbranchpoint if rev1 is NULL; it still makes sense for the
	non-trunk case.  Fixes admin-22-o22 in testsuite.

	* sanity.sh (admin-18): Adjust to reflect "rcs failed" no longer
	being suppressed by global -q option.

	* rcs.c (RCS_delete_revs): If rev1 == NULL and rev2 is on the
	trunk, handle it the same way we do everything else--by swapping
	the two.  This replaces the code which tried to kludge what we
	passed to RCS_getbranchpoint (which didn't work).
	* sanity.sh (binfiles2-o1 to binfiles2-o4): New tests, for this fix.
	* admin.c (admin_fileproc): Don't have -q global option suppress
	"rcs failed" message.

1997-10-28  Jim Kingdon

	* log.c (printlock_proc), rcs.c (putlock_proc): Prototype.
	* rcs.c (rcs_internal_lockfile): Only try to call fchmod if
	HAVE_FCHMOD is defined.

Tue Oct 28 10:27:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* rcs.c	(RCS_deltas): Don't use \? in string if __STDC__ is not
	defined.

	* rcs.c (make_file_label): Remove extraneous `+'.

Mon Oct 27 14:40:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* status.c (status): Don't pass SEND_NO_CONTENTS to send_files.

Sat Oct 25 00:33:57 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_delete_revs): Use : not - for range in error message.

	* rcs.h: Add comment about '\0' in RCS fields.

	* rcs.c (getdelta): Add comment about branches and next field
	being mandatory.

	* rcs.c (RCS_reparsercsfile, RCS_deltas), sanity.sh (reserved):
	Reindent sections which were misindented as a result of recent
	changes.

Fri Oct 24 10:22:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_findlock_or_tip): Don't worry about file ownership
	and nonstrict locking when returning the default branch or head.
	The most conspicuous problem with the old code is that in the
	error case it would examine rstat.st_uid when it had not been
	set.  For a discussion of more fundamental reasons, see comment.

	* admin.c (admin_fileproc): In handling -A, don't handle relative
	pathnames differently from absolute pathnames.  See comment for
	rationale.  If problem opening the file, give a nice error not a
	coredump.
	* sanity.sh (admin-19a-admin, admin-19a-log, admin-19a-fix):
	New tests, test for traditional "cvs admin -A" behavior with
	relative pathnames.
	* sanity.sh (admin-19a-nonexist): Test for the core dump fix.
	* sanity.sh (admin-22-o1): Look for ${PROG} not cvs.

	* sanity.sh (reserved-16): Remove commitinfo change with "cvs
	commit" not "cvs admin -o".  In addition to commit being The Right
	Thing on general principles, cvs admin -o doesn't work because it
	doesn't rebuild the administrative file database.

	* update.c (patch_file): If the first revision does not exist in
	the RCS file, fall back to sending entire file.  Fixes
	admin-22-o15 in make remotecheck.

1997-10-23  enami tsugutomo  <enami@but-b.or.jp>

	* rcs.c (RCS_checkin): Unlink temporary files stored in variable
	`tmpfile' and `changefile'.

Wed Oct 22 12:16:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (rcs_lockfilename): Allocate enough memory for terminating
	'\0'.

	* admin.c (admin_fileproc): Don't support '-' for ranges in "cvs
	admin -o".
	(admin): Adjust comment.

	* rcs.h (RCSVers): New field other_delta.
	* rcs.c (free_rcsvers_contents): Also free other_delta.
	(getdelta): Read newphrases from deltas into other_delta field.
	(putdelta): Write those newphrases.
	* sanity.sh (rcs-8a): New test, for this fix.
	* admin.c (admin_fileproc): If "-b" without argument, then set
	branch to NULL, not "" (uncovered by rcs-8a test).
	* rcs.c (putrcsfield_proc): Add comment about how we (mis)handle
	values in newphrases.

	* sanity.sh (reserved): Instead of looking for rcslock.pl in CVS
	distribution, just use our own equivalent.

	* rcs.c (RCS_rewrite): Call ferror before fclose to avoid "Invalid
	argument" warnings.

Mon Oct 20 00:30:16 1997  Tim Pierce  <twp@twp.tezcat.com>

	[I removed a ChangeLog entry for a change to sanity.sh (editor),
	because the actual change was not made.  With this change, CVS no
	longer runs RCS.  I'll be checking in my cleanups shortly. -kingdon]

	Librarify `ci'.
	* rcscmds.c, cvs.h (RCS_checkin): Removed.
	* rcs.c, rcs.h (RCS_checkin, RCS_getbranchpoint, RCS_addbranch,
	RCS_findlock_or_tip): New functions.  RCS_checkin completely
	rewritten to eliminate RCS 5.7; change `rcs' parameter from string
	to RCSNode, so we can update RCSNode without re-reading from
	disk.
	* checkin.c (Checkin): Updated RCS_checkin caller, moved RCS_parse
	call to before RCS_checkin.
	* import.c (add_rev): Updated caller.
	* commit.c (remove_file): Updated caller.
	(checkaddfile): Updated caller.  Parse `rcsfile' after
	calling add_rcs_file.  Free `rcsfile' instead of asserting it to
	be NULL.

	Librarify `rcs'.
	* rcscmds.c, cvs.h (RCS_exec_settag, RCS_exec_deltag,
	RCS_exec_setbranch, RCS_exec_lock, RCS_exec_unlock): Removed.

	* rcs.c (RCS_settag): Rewritten to eliminate RCS 5.7.
	* commit.c (checkaddfile): Call RCS_rewrite after calling RCS_settag.
	* import.c (add_tags): Same.
	* rtag.c (rtag_fileproc): Same.
	* tag.c (tag_fileproc): Same.

	* rcs.c (RCS_deltag): Rewritten to eliminate RCS 5.7.  Remove
	`quiet' parameter, since this function no longer prints any output.
	* commit.c (remove_file): Update caller.  Also call RCS_rewrite
	after RCS_deltag.
	* rtag.c (rtag_delete): Same.
	* tag.c (tag_fileproc): Same.

	* rcs.c (RCS_setbranch): Rewritten to eliminate RCS 5.7.
	* commit.c (remove_file): Call RCS_rewrite after calling RCS_setbranch.
	(fixbranch): Same.
	(lock_RCS): Same.

	* rcs.c (RCS_lock): Rewritten to eliminate RCS 5.7. Change third
	arg to mean `quiet' and not `noerr', permitting admin_fileproc to
	run RCS_lock verbosely.
	* commit.c (lock_RCS): Update callers; call
 	RCS_rewrite after RCS_lock.
	(remove_file): Same.  Call RCS_lock quietly.
	* import.c (add_rev): Same.  Do not print `fork failed' error
	message, since we're no longer forking.

	* rcs.c (RCS_unlock): Rewritten to eliminate RCS 5.7.  Change
	`noerr' arg to mean `quiet', permitting admin_fileproc to run
	RCS_unlock verbosely.  Use notify_do when breaking another user's
	lock.  Include "edit.h" for notify_do prototype.
	* checkin.c (Checkin): Update caller; use RCS_rewrite after RCS_unlock.
	* commit.c (unlockrcs): Same.
	* import.c (add_rev): Same.

	* rcs.c, rcs.h (RCS_getlocks, RCS_addaccess, RCS_delaccess,
	RCS_getaccess, RCS_delete_revs): New functions.
	(expand_keywords, RCS_lock, RCS_unlock): Use RCS_getlocks.
	* log.c (log_fileproc, log_version): Call RCS_getlocks.  Don't add
	bogus ";locker" nodes to RCSVers nodes -- walk lock list with
	printlock_proc.
	(printlock_proc): New function.

	* admin.c (admin_fileproc): Largely rewritten: call internal RCS
	library functions instead of forking RCS processes.
	(admin, admin_fileproc): Obsolete -V option.
	(struct admin_data): Remove `version' member.
	* sanity.sh (admin-24): Remove -V test case.

	New functions for reading and writing RCS files.
	* rcs.h (struct deltatext, Deltatext): New types.
	(struct rcsversnode): New members `text' and `outdated'.
	(struct rcsnode): New members `access', `locks', `strict_locks',
	`comment', and `desc'.
	* rcs.c (RCS_reparsercsfile, expand_keywords): Use new RCSNode members.
	(free_rcsnode_contents): Free them.
	* log.c (log_fileproc): Use new RCSNode members instead of ->other.

	* rcs.c (getdelta, RCS_getdeltatext, freedeltatext, do_locks,
 	RCS_putadmin, RCS_putdtree, RCS_putdesc, putdelta,
 	putrcsfield_proc, putsymbol_proc, RCS_copydeltas, putdeltatext,
 	RCS_rewrite, getrevnum, rcs_internal_lockfile,
 	rcs_internal_unlockfile, rcs_lockfilename): New functions.

	(RCS_reparsercsfile): Use getdelta, making sure fp is positioned
 	correctly before calling it.  Skip `head' and `branch' nodes: we
 	have already parsed them, and they were being added incorrectly to
 	rcs->other.  Do not signal error if the RCS file has an empty
 	delta tree; this made it impossible for RCS_checkin to perform an
 	initial checkin.  Remove `all' parameter; always store all RCS
	fields.
	(RCS_fully_parse, RCS_gettag, RCS_getbranch, RCS_getdate,
	RCS_getdatebranch, RCS_getrevtime, RCS_symbols, translate_symtag,
	RCS_isdead, RCS_getexpand, RCS_checkout, annotate_fileproc):
	Update all callers to remove `all' parameter.

	(getrcskey): Do not append trailing whitespace to a value.  This
 	corrupted some log fields and wrecked some sanity.sh test cases.

	(free_rcsvers_contents): New function.
	(rcsvers_delproc): Call it.

	* rcs.h (NODELTA): Removed symbol; now obsolete (since RCSNodes
	do not go stale).
	* import.c (add_rev): Removed NODELTA reference.
	* rcs.c (RCS_reparsercsfile, RCS_checkout, RCS_settag, RCS_deltag,
	RCS_setbranch, RCS_lock, RCS_unlock, RCS_deltas): Removed NODELTA
	references.

	Miscellaneous changes to support RCS librarification and fix some bugs.
	* subr.c, cvs.h (line2argv): Add `sepchars' argument.
	* modules.c (cat_module, admin_fileproc): Update all callers.

	* subr.c, cvs.h (compare_revnums, increment_revnum): New functions.
	(make_message_rcslegal): Strip whitespace from end of
	lines and end of string, a la `cleanlogmsg' in RCS 5.7.
	(get_file): Terminate buf with \0, extending it if
	necessary.  Read from stdin if `name' arg is NULL.
	* admin.c (admin_fileproc): Call get_file to read -t arg from stdin.

	* error.c, error.h (rcserror): New function, used everywhere.

	* hash.c, hash.h (addnode_at_front): New function.
	* rcs.c (RCS_settag, RCS_lock): Call it.

	* import.c, cvs.h (expand_at_signs): Make extern.
	* rcs.c (putrcsfield_proc, RCS_putadmin, RCS_putdesc,
	putdeltatext): Call it.

	* rcs.c (make_file_label): Use last_component to get file's basename.

	* sanity.sh (srcdir): New variable.
	(rcs-7): Remove newphrase warning, no longer produced by CVS.
	(rcs-8): Permit random whitespace around newphrase fields.
	(admin-22): New test cases for -o options: admin-22-o{1..23}.
	(reserved): New test cases for rcslock.pl: reserved-{8..16}.

Tue Oct 21 16:48:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* tag.c (tag_check_valid): Add comment about locking or lack
	thereof.

1997-10-20  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.19.

1997-10-19  Jim Kingdon

	* Version 1.9.18.

Wed Oct 15 15:21:43 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (username): Add '-' to characters allowed in user name.

	* rcscmds.c (diff_exec): Remove item about external diff
	programs.  It doesn't really belong here now that diff is
	librarified and TODO #191 now mentions this.

	* checkout.c (checkout_proc): Add comment about assuming '/' is
	the only path separator.
	* options.h.in: Fix thinko (CVS/Repository -> CVS/Root).

Mon Oct 13 22:46:03 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* commit.c (commit): Add comment about CVS_BADROOT and command
	other than "commit".

1997-10-11  Noel Cragg  <noel@swish.red-bean.com>

	* options.h.in: RELATIVE_REPOS has been checked for bitrot -- it
	now works again.  Change the comment before the #define to say
	that we'll be switching to it soon.

	* sanity.sh (basicb-1, basicb-1a): update dotest strings to match
	no matter if we're running with RELATIVE_REPOS defined or not.
	(basicb-9b, basicb-9c): same.

	* sanity.sh (basicb-9b, basicb-9c): modified tests, since the
	checkout.c fix changes the way this test module is checked out.
	(basicb-9d, basicb-9e, basicb-9f): new tests, same.
	(basicb-18): modify test, same.
	(cvsadm): new set of exhaustive tests to check the contents of
	CVS/Root and CVS/Repository files under various conditions.  As a
	side effect, it tests the behavior of the "-d" flags (command line
	and modules file).
	(modules3-7e through modules3-7h): removed, since these tests were
	a small subset of what is tested in the new cvsadm section.
	(modules-1b, modules-1c): same.
	(modules-2b, modules-2c): same.
	(modules-3b, modules-3c, modules-3e, modules-3f): same.

	* create_adm.c (Create_Admin): be a bit more verbose when using
	trace mode.

	* checkout.c (checkout_proc): rewrote the code that sets the where
	variable and the code that matches directory names with repository
	directories.  This fixes a long-standing bug in CVS.  (It used to
	be the case that "cvs co -d foo <mod1> <mod2>" would not properly,
	where <mod1> and <mod2> where defined in the modules file.  While
	the first module would be checked out correctly, the second would
	be checked out under the name of the directory to which the module
	referred rather than the module name!).  This fix also allows us
	to check out things into directories that are more than one deep
	(e.g. "cvs -d foo/bar/baz co blah" will now work).
	(checkout): remove code that performed a CHDIR if the
	number of arguments specified was greater than one, since it's no
	longer necessary.  Also remove the code that prevented us from
	doing "cvs co -d <dir1>/<dir2>" without <dir1> existing, since
	checkout_proc handles things correctly now.

	* cvs.h: fix typo.

	* rtag.c (rtag): reformat so that we don't run over 80 characters
	per line.
	(rtag_dirproc): same.

	* sanity.sh: change all old test cases to use pass and fail
	functions rather than doing some combination of echo and exit
	themselves.

	* commit.c (commit_direntproc): remove the "warm fuzzy" -- this
	code never gets called when running in client/server mode, and we
	should have CVS' output match as much as possible between the two
	modes.  Moreover, there is no analogous place to put this same
	message when we're running in c/s mode.
	(find_direntproc): print the same "fuzzy" as in check_direntproc
	so that local and c/s mode have the same messages.
	* sanity.sh (187a3): update test case to reflect the above.

Thu Oct  9 10:57:02 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* parseinfo.c (parse_config): Add comment about compatibility
	issues with adding keywords.

Wed Oct  8 16:40:37 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (do_dir_proc), commit.c (check_direntproc,
	commit_direntproc, find_dirent_proc): If this
	directory doesn't exist, skip it.
	* diff.c (diff_dirproc): Reindent.
	* sanity.sh (deep-4b0a, deep-4b0b): Check for this fix.

Thu Sep 26 16:30:00 1997  Larry Jones <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (checkout_file): Don't set timestamp in noexec mode.
	* vers_ts.c (Version_TS): Add comment about ignoring errors from
	utime.
	* sanity.sh (conflicts3): New tests, for this fix.

Fri Oct  3 09:47:04 1997  Noel Cragg  <noel@swish.red-bean.com>

	* sanity.sh (168): use PROG instead of CVSBASE, since they are
 	equal.
	(importb-2): refer to PROG instead of "cvs" in error message.

	* add.c (add): use PROGRAM_NAME in the error message rather than
 	"cvs".
	* classify.c (Classify_File): same.
	* commit.c (find_fileproc): same.
	* sanity.sh: change all add notification messages to refer to PROG
 	rather than "cvs".  Fixed nasty quoting in several places at the
 	same time, replacing older "'command'" forms with newer
 	".command." for simplicity.

Sat Sep 27 01:37:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (rcslib-merge-8): Accept "P file1" as well as "U file1".

Fri Sep 26 22:24:10 1997  Noel Cragg  <noel@swish.red-bean.com>

	* create_adm.c (Create_Admin): assign our duplicate pointer `cp'
 	after the xrealloc of `reposcopy' because the latter might have
 	changed addresses.

Fri Sep 26 14:25:59 1997  Tim Pierce  <twp@twp.tezcat.com>

	* run.c (call_diff): Don't reset optind; this is done by diff_run now.

	Librarify rcsmerge/diff3.
	* rcscmds.c, cvs.h (RCS_merge): Rewritten from scratch: check out
	selected files and diff3 them.  Take new `rcs' and `workfile'
	arguments, so we can resolve symbolic tags and manipulate the
	working file.
	* update.c (merge_file, join_file): Update RCS_merge calls.
	* run.c, cvs.h (call_diff3): New function.

	* sanity.sh (rcslib): New tests, rcslib-merge-{1..13}.

Fri Sep 26 22:59:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* create_adm.c (Create_Admin): Fix thinko in Noel's change: keep
	track of the originally allocated "cp" and free it, rather than
	calling free on a pointer which may point halfway into the allocation.
	* repos.c (Sanitize_Repository_Name): Per HACKING, assert that
	repository != NULL, rather than just silently returning if NULL.
	Reindent a line.

Fri Sep 26 15:40:00 1997  Noel Cragg  <noel@swish.red-bean.com>

	* sanity.sh (modules): add tests modules-[123]* that make sure the
 	administrative files get rebuilt in various cases.

	* add.c (combine_dir): removed function, since we no longer need
 	to worry about stripping the "." path element out.  Changed the
 	two callers to simply concatenate their two arguments.

	* recurse.c (do_dir_proc): don't bother trying to strip off "." in
 	the repository name since the below changes fix that behavior --
 	simply concatenate the repository and directory names together.

	* checkout.c (checkout_proc): sanitize the repository name after
 	constructing it (we may create "/path/to/repos/.", but we don't
 	want that to be passed around).  Remove the code that tacks on
 	"/." when constructing top_repository, since the below changes fix
 	that behavior.  Added comments to the part of this function that
 	builds administrative files.

	* sanity.sh (basicb): now that the below weirdness is fixed, the
 	extra "." path element in test basicb-0c doesn't appear when a
 	top-level file is checked out.  Remove it from the expect string.

	* create_adm.c (Create_Admin): now that the repository name isn't
 	floating around with "." as the last path element, make creation
 	of the top-level administrative files a special case -- save the
 	repository name as "/path/to/repos/."  Why?  I considered not
 	including the "." but didn't know how it would affect the remote
 	protocol when RELATIVE_REPOS was defined (do we have a way of
 	sending "" via the protocol?).  After I make sure that the
 	RELATIVE_REPOS patches still work, I'll check the "" possibility
 	so we don't have to have a this special case.

	* repos.c (Sanitize_Repository_Name): new function that removes
 	(if present) the trailing slash and "." component from the
 	repository name.  Many routines break if we don't guarantee this.
  	See the comment before the function for complete information.
	(Name_Repository): call Sanitize_Repository_Name before returning
 	the value.
	* cvs.h: add prototype for Sanitize_Repository_Name.

Fri Sep 26 14:19:25 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h (CVS_CMD_USES_WORK_DIR): Fix comment (the sense of the
	flag is not reversed from what it would seem; when I thought so it
	was because I was misreading the lookup_command_attribute code).

Thu Sep 25 23:14:47 1997  Noel Cragg  <noel@swish.red-bean.com>

	* parseinfo.c (Parse_Info): fix typo in the trace message.

Thu Sep 25 14:22:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* build_src.com: Also link with diff.olb.

	* main.c (Make_Date): If gmtime returns NULL, try localtime.

Wed Sep 24 19:18:40 1997  Noel Cragg  <noel@swish.red-bean.com>

	* checkout.c (checkout): fix typo in comment.

Wed Sep 24 08:31:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (patch_file): Revise comments about diff -a now that
	diff is librarified.

Sun Sep 21 21:28:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c (call_diff): Sleep for a second, in hopes of helping with
	out of order bugs.

Sat Sep 20 07:19:18 1997  Tim Pierce  <twp@twp.tezcat.com>

	Integrate diff library into CVS.
	* run.c, cvs.h (call_diff): New function.
	* rcscmds.c (diff_exec, diff_execv): Get diffs from call_diff
	instead of running diff as a subprocess.
	* Makefile.in (cvs): Add ../diff/libdiff.a.

	* diff.c (longopts, diff): Use 131 for --ifdef, fixing Jim's thinko
	(using 147 for both --side-by-side and --ifdef).

	* sanity.sh (rcslib): Added tests rcslib-diffrgx-*, to test
	handling of regex diff options.

1997-09-21  Jim Kingdon  <kingdon@harvey.cyclic.com>

	(Note that this requires that DIFF support -L.  I'll be checking
	in a fix to that in a moment, but I wanted separate checkins in
	case that helps with clarity).
	Tweaks to rcsdiff librarification:
	* sanity.sh (rcslib): Change "cvs" to "${PROG}" and subcommand
	names (e.g. "add") to "[a-z]*".  Former should deal with ${testcvs}
	being "cvs.old" or something; latter fixes make remotecheck.
	* rcs.c (make_file_label): Take into account strlen (rev) when
	allocating space.  Removes a FIXME and probably fixes a buffer
	overrun security hole.
	* rcscmds.c (RCS_exec_rcsdiff): Remove #if 0'd code to call
	rcsdiff.  Tim says he has compared the new code with rcsdiff code
	and is confident that the behavior is preserved, so we need to
	nuke the comment which says this has not been done.  #if 0 isn't
	really a very good way to document the way it used to work anyway;
	the old code is still in CVS.
	* diff.c: Add comment about rcsdiff options that we don't support,
	which Tim had sent in email.  Remove -T and -y, as the
	previous meaning had been very confused.

1997-09-21  Tim Pierce  <twp@xochi.tezcat.com>

	Librarify rcsdiff.

	* diff.c (have_rev1_label, have_rev2_label): New variables.
	(diff): Generate file labels with make_file_label if necessary;
	pass labels, revisions and working file name to RCS_exec_rcsdiff.
	* rcscmds.c, cvs.h (RCS_exec_rcsdiff): Completely revised function
	to eliminate rcsdiff dependency, based on patch from JimK.
	(diff_execv): New function, to exec diff with explicit -L args.
	* rcs.c, rcs.h (make_file_label): New function.
	(RCS_output_diff_options): New function.
	* sanity.sh (rcslib): New test.

Fri Sep 19 15:08:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_nodeisbranch): Assert that RCS is non-NULL.
	* commit.c (remove_file), rcs.c (RCS_getversion), rtag.c
	(rtag_fileproc), status.c (status_fileproc, tag_list_proc), tag.c
	(tag_fileproc): Call RCS_nodeisbranch not RCS_isbranch
	in contexts where we know the RCS argument is non-NULL.

	* commit.c (find_fileproc): Pass tag not NULL to Version_TS for
	the tag.
	* vers_ts.c (Version_TS): Improve (somewhat) the introductory
	comment.
	* sanity.sh (editor): New test editor-9 tests for above fix.
	Renumber/tweak surrounding tests to fit.

	* log.c (log_version): If p->data is NULL, it is an empty log
	message.
	* sanity.sh (rcs-14): New test, tests for above fix (previously
	this was a coredump).

Thu Sep 18 08:45:05 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (rcs-7): Fix stupid ${TESTDIR} omission.

Wed Sep 17 16:27:41 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (rcs): New tests rcs-5 through rcs-13 test for
	getdate.y fix (rcs-12 and rcs-13 both failed with the buggy
	getdate.y).

Tue Sep 16 00:07:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (editor): Clean up first-dir at end of test.

	* sanity.sh (editor): New tests test do_editor.

	* commit.c (commit): For the client, if we got the log message
	from do_editor and there was an error, don't toss the message.

Mon Sep 15 14:27:54 1997  martin.sjoelin@ubs.com
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (RCS_checkout): fwrite in bite-size pieces, not the whole
	file in one fwrite.

Sun Sep 14 12:23:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* commit.c (check_fileproc): If the file has "conflict
	indicators", spit a warning and proceed with the checkin.
	* sanity.sh (conflicts): Adjust tests conflicts-132,
	conflicts-status-3, conflicts-133, and conflicts-status-4
	for new behavior.

Fri Sep 12 11:12:34 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c, admin.c, checkin.c, checkout.c, classify.c, commit.c,
	create_adm.c, cvsrc.c, diff.c, entries.c, find_names.c, hash.c,
	import.c, lock.c, log.c, logmsg.c, main.c, modules.c, myndbm.c,
	no_diff.c, parseinfo.c, patch.c, rcs.c, rcscmds.c, recurse.c,
	remove.c, repos.c, root.c, rtag.c, status.c, subr.c, tag.c,
	update.c, vers_ts.c, hash.h, rcs.h, options.h.in: Change "CVS 1.4
	kit" to "CVS source distribution".

	* sanity.sh: Comment out call to "whoami".

Thu Sep 11 10:09:04 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* commit.c (classify_file_internal): Add comment about saving
	quiet vs. saving really_quiet.

	* sanity.sh (newb-123j0): Use two regexps instead of assuming that
	expr has "\(", "\|", and "\)".  If we want to require the latter,
	we should check for it up front, rather than let people get
	halfway through and wonder why the test failed.

Tue Sep  9 19:22:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* expand_path.c (expand_path): If GETPWNAM_MISSING is defined,
	just give an error instead of calling getpwnam.

	* subr.c (getcaller): If SYSTEM_GETCALLER is defined, call it
	instead of all the getlogin/getpwuid/etc.
	* wrapper.c (wrap_setup): Call get_homedir not getpwuid.

Mon Sep  8 17:54:14 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicc): Change ls -1 to echo *; according to
	larry.jones@sdrc.com, ls -1 isn't portable.

Sun Sep  7 07:45:35 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basic2): In test basic2-64, match usernames with
	${username}.

	* root.c: Reindent a few things.
	* root.c, cvs.h (same_directories): Remove.  Never used,
	portability hassle.

	* add.c (add_directory): When checking for CVSADM, call fncmp not
	strcmp.  I actually suspect this code doesn't do much these days,
	but fncmp clearly will make more sense than strcmp.

	* rtag.c (rtag_usage), tag.c (tag_usage): Reword to hopefully be
	clearer that -r takes either numeric or symbolic revision.

	* ignore.c (ign_dir_add, ignore_directory): Reindent.  Tweaks to
	comments.

	* update.c (checkout_file): Only ignore existence_error from
	unlink_file_dir, not all errors.

	* checkout.c (safe_location): Check for errors from xgetwd.
	* create_adm.c (Create_Admin): Remove call to xgetwd; it is just
	debugging code anyway and it wasn't checking for errors.

	* sanity.sh: Add comment about default value for TESTDIR.

	* server.c (serve_log): Change "cvslog" to "log".  This
	(accidental, I presume) error had made it impossible for anonymous
	users to run "cvs log".

	* classify.c (sticky_ck): Change to take an finfo argument rather
	than several arguments taken from there.  Cleans up the way the
	calling convention had depended on SERVER_SUPPORT.
	(Classify_File): Change callers.

	* version.c: Change version number to 1.9.17.

	* Version 1.9.16.

	* recurse.c (do_dir_proc): In combining repository and dir, omit
	trailing "/." from repository.
	* sanity.sh (modules3): Adjust test modules3-4 so we test for
	this fix (this is not just cosmetic; the bug prevented the
	"Rebuilding administrative file database" from happening).
	modules2 already tests the "co CVSROOT/modules" usage.

	* checkout.c (checkout_proc): When building top-level CVSADM
	directory, continue the process of walking up the repository one
	more level, rather than putting in the same repository as for the
	first-level directory.
	* sanity.sh: Adjust tests basicb-1b, basicb-9b, modules3-7f,
	toplevel-9, and toplevel-11 to test for this fix.

	(For reference, this takes CVS's text segment from 344460 to
	344140 bytes.  I know, this may seem unimportant, but it is so
	unusual for programs to shrink and I think it is so cool when they
	do without losing functionality/clarity/etc).
	* checkout.c, cvs.h (emptydir_name): New function.
	* checkout.c (checkout, checkout_proc), modules.c (do_module):
	Call it instead of duplicating the code to do that.

	* sanity.sh (basicc): Clean up first-dir at end of test.

Sat Sep  6 09:48:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join): Fix cut and paste error in join-28
	(/home/kingdon/... -> ${TESTDIR}).

	* recurse.c (start_recursion): If there is no CVSADM and no
	subdirectories, give an error.
	* sanity.sh (basicc): New tests, test for this fix.

	* sanity.sh (join): New tests join-25 through join-29 test merging
	from one branch to a different branch.

	* release.c: In comment about CVSROOTADM_IGNORE, also mention
	comment just added to entries.c.
	* entries.c: Expand this comment, especially the part about
	CVS/Template.

	Keep track of what revisions CVS/Base correspond to:
	* cvs.h (CVSADM_BASEREV, CVSADM_BASEREVTMP): Added.
	* entries.c, cvs.h (base_register, base_deregister, base_get,
	base_walk): New functions.
	* edit.c (edit_fileproc): Call base_register when setting up CVS/Base.
	(unedit_fileproc): When taking a file out of CVS/Base, put its
	revision back into entries, and base_deregister it.
	* sanity.sh (watch4): New tests watch4-10 through watch4-18 test
	for above fix.

Fri Sep  5 09:14:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c: Only declare start_rsh_server if we are going to
	define it (!NO_EXT_METHOD).

	* subr.c, cvs.h (check_numeric): New function.
	* admin.c (admin): Call it.
	* sanity.sh (admin): New tests admin-10a and admin-10b test for fix.

Thu Sep  4 15:55:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (binwrap2): New tests, test for the ability to specify
	all files are binary except certain patterns.

	* sanity.sh (modules3): New tests modules3-16 and modules3-17 test
	for another behavior involving '/' in a module name.

Sun Aug 31 12:03:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Remove checks for '/' in pathnames.
	(add): Move code which handles entries and repository inside loop,
	since these now might be different for each argument.  Add code to
	set finfo.update_dir, finfo.file, and finfo.fullname appropriately
	even if pathname contains '/'.  Replace user variable with
	finfo.file or finfo.fullname, depending on which is meant.  chdir
	into update_dir for each argument.  Likewise for the client code
	which creates directories.
	(add_directory): Replace arguments with a single finfo argument.
	Replace dir with finfo->fullname as needed.
	(add): Update call to add_directory.
	* client.c, client.h (send_a_repository): No longer static.
	* sanity.sh (errmsg2): Adjust tests to test for '/' in pathname.

	* sanity.sh (errmsg2): New tests errmsg2-13 through errmsg2-16
	test the status quo with respect to '/' in cvs add argument.

Sat Aug 30 17:37:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c (run_popen): Add comment on return value.
	* release.c (release): Check for NULL return from popen.

Fri Aug 29 17:49:20 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (get_server_responses): Add comment about "ok^M".

Thu Aug 28 13:35:12 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* edit.c (edit_fileproc): If file doesn't exist, give an error.
	* sanity.sh (devcom2): Tests devcom2-12 through devcom2-17 test
	for above fix.

Tue Aug 26 16:42:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c (xmalloc): Reword error message to clarify that memory,
	not disk space or some other resource, is in question.

Tue Aug 26 01:04:48 1997  Steve Ralston <sralston@ppdpost.ks.symbios.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): In allocating message, also allocate
	enough for tag and date related text.

Tue Aug 26 01:04:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update_dirent_proc): Use update_dir not dir in "new
	directory" message.
	* find_names.c (find_dirs): Skip CVSNULLREPOS.
	(Find_Directories): Add comment about find_dirs skipping CVSATTIC
	and CVSLCK in working directories.
	* sanity.sh (basicb): New tests basicb-edir-* test for find_dirs
	fix.  Change other tests to test that Emptydir is not special in
	non-CVSNULLREPOS contexts.

Sun Aug 17 14:44:57 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (add_rcs_file): Add comment about -k overriding wrappers.

Sat Aug 16 18:09:05 1997   Martin Sjoelin <martin.sjoelin@ubs.ch>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (add_rcs_file): Before opening the input file
	when importing, if options is binary, open the file in
	binary mode.

1997-08-16  enami tsugutomo  <enami@ba2.so-net.or.jp>

	* sanity.sh (mcopy): Unset CVSWRAPPERS last of all.

Fri Aug 15 11:11:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): Copy default file attributes from the
	parent directory to the directory we are creating.
	* fileattr.h, fileattr.c (fileattr_getall, fileattr_setall):
	New functions, in support of above.
	* fileattr.c (fileattr_free): Add comment about fileattr_write
	maybe not clearing attrs_modified.
	* sanity.sh (watch4): New test, tests for above fix.

Thu Aug 14 11:08:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (merge_file, join_file): If wrap_merge_is_copy, treat
	files as nonmergeable (as we had been treating binary files).
	(join_file, update_fileproc): Remove previous wrap_merge_is_copy
	cruft.
	* sanity.sh (mcopy): New tests, test for above fix.
	(binfiles2): New tests binfiles2-9a-* correct an oversight.
	(binfiles, binfiles2): Adjust to reflect wording change from
	"binary file" to "nonmergeable file".
	(mwrap): Adjust tests mwrap-8 through mwrap-10 for new behavior.

	* main.c (main): Reword copyright notices to include the latest
	year, to refer to "other authors" in addition to the ones listed,
	and to be more concisely formatted.

Wed Aug 13 13:50:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* sanity.sh: Replace hard-coded directory with ${TESTDIR}, add
	join3 to default tests

Wed Aug 13 11:42:24 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c: Adjust comment to reflect progress on removing RCS
	execs outside this file.

Mon Aug 11 10:14:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* vers_ts.c (Version_TS): If vers_ts->vn_rcs == NULL, skip setting
	modification time in server case as well as local case.
	* server.c (server_modtime): Add assertion to clarify that caller
	must assure that vers_ts->vn_rcs != NULL.
	* sanity.sh (join3): Add file "file2" to test for above fix.

	* modules.c (save_d): When parsing -s option, don't assume that
	we will hit a space before we hit the '\0'.
	(struct sortrec): Document allocation policies (status quo except
	status field is now malloc'd).
	(cat_module): No longer need to set the '\0' at the end of the
	status field back to ' ', as it no longer shares storage with the
	rest field.
	* sanity.sh (modules): Add "statusmod" to test for above fix.

Sun Aug 10 12:18:31 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Remove TODO item about more keyword expansion tests.
	The keyword test and others cover it pretty well, and such an item
	isn't useful unless it is specific.

	* sanity.sh (importb): New tests test "cvs import -b".

	* mkmodules.c: Update comment with more reasons why having
	CVSROOT/passwd be a regular administrative file would be a Bad
	Idea.

	* server.c (switch_to_user): Add comment about checking for errors
	from setuid and friends.

Wed Aug  6 13:48:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment about errors writing CVS/Root in
	need_to_create_root code.

Tue Aug  5 22:05:20 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (write_entries): If trouble writing Entries.Backup,
	make it a warning not an error.

Wed Jul 30 08:42:04 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* parseinfo.c (parse_config): If AUTH_SERVER_SUPPORT is not
	defined, don't set system_auth.

	* version.c: Change version number to 1.9.15.

	* Version 1.9.14.

	* create_adm.c, cvs.h (Create_Admin): If new argument WARN is set,
	then make creating the CVS directory itself a warning not a fatal
	error.  New return value indicates whether we did this.
	* checkout.c (build_one_dir), client.c (call_in_directory):
	Pass WARN as one.
	* add.c, client.c, checkout.c, modules.c, update.c: Pass WARN as
	zero for all other Create_Admin callers.
	* sanity.sh (toplevel): New test toplevel-12 tests for this fix.
	* filesubr.c (mkdir_if_needed): Also check EACCES/isdir.  Needed
	to make toplevel-12 test work.

	* sanity.sh (toplevel): New test toplevel-11 and friends test for
	another variation of the toplevel-9 bug.

Tue Jul 29 12:11:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* login.c (construct_cvspass_filename): Revert this change.  The
	main reason is procedural; Karl is not a current CVS developer.
	The other thing is that the new text doesn't say anything about
	HOMEDRIVE and HOMEPATH.

Tue Jul 29 11:36:22 1997  Karl Fogel  <kfogel@harvey.cyclic.com>

	* login.c (construct_cvspass_filename): error message informs user
	she may need to set HOME environment variable by hand.

Sun Jul 27 15:36:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c (admin): Remove comment "XXX send -ko too with i = 0".
	It turns out to be a description of a bugfix which was applied on
	8 Oct 1995, and never should have been in a comment in the first
	place.

	* admin.c (admin, admin_fileproc): Parse options ourself rather
	than blindly passing them to RCS.
	Accordingly, add struct admin_data and function arg_add, and delete
	global variables ac and av.
	* sanity.sh (admin): Change admin-3 test to reflect cvs admin -i
	now being an error.
	(basicb): Change basicb-21 test to relect the improved error
	message here.

Sat Jul 26 11:34:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join3): New tests, test a new branch topology and
	greatest common ancestor.

Fri Jul 25 09:51:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_directory): Repository must start with
	CVSroot_directory rather than some random pathname.

	* remove.c (remove_fileproc): If there is a numeric sticky tag,
	don't allow the remove.
	* commit.c (check_fileproc): Add comment about this case.
	* sanity.sh (sticky): New tests sticky-15 through sticky-23
	test for this behavior and the analogous behavior with
	non-branch sticky tags (which is unchanged).

	* client.c (update_entries): Clear the stored mode, modtime, and
	checksum even on an error.
	* sanity.sh (contents2-142d*): Also test cvs status.  Also test
	the case in which the contents of the file are unchanged.  Also
	test running diff to see the conflict, and resolving the conflict.
	Without the fix above, the new contents2-142d2 test would get a
	"duplicate Mod-time" warning.

Thu Jul 24 13:29:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (pserver_authenticate_connection): Call parse_config
	here too.
	* parseinfo.c (parse_config): If we are called several times, the
	times beyond the first do nothing.
	* cvs.h, parseinfo.c (parse_config): New argument cvsroot.
	* server.c, main.c: Update callers.
	* server.c, server.h (system_auth): New variable.
	* parseinfo.c (parse_config): Parse new keyword SystemAuth.
	* mkmodules.c (config_contents): Add comments for SystemAuth.
	* server.c (check_password): If !system_auth, then skip the check
	for a system username/password.

	* main.c (main): No fatal error if parse_config returned an error.
	* server.c (serve_root): Likewise.
	* error.c (error): Add comment about calling from the server.
	* parseinfo.c, cvs.h (parse_config): Remove NOERR crock.
	Closer reading of server.c makes it seem like calling error
	here is OK after all.
	* sanity.sh (config): New test, tests for above fix.

	* server.c (serve_root): Fix typo ("doign" -> "doing").

Wed Jul 23 13:55:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* vers_ts.c (Version_TS): If entdata is for a directory, don't set
	vn_user and friends.
	* server.c (dirswitch): Add comment about why Subdir_Register is
	sometimes a noop here.
	* cvs.h (struct vers_ts): Fix comments about NULL vs. "" in vn_user.
	* sanity.sh (errmsg2): New tests errmsg2-10 through errmsg2-12 test
	for above fix.
	* add.c (add_directory): Call cvs_output not printf.  This fixes
	an out-of-order bug which was showing up in the testcase.

21 Jul 1997  Jim Kingdon

	* subr.c (get_file): Put st_size into an unsigned variable to
	avoid signed/unsigned warnings.

Mon Jul 21 00:19:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.13.

	* Version 1.9.12.

	* sanity.sh (toplevel, head): Delete our files from the repository
	when done with them.

Sun Jul 20 15:53:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (admin, reserved): New tests, test most cvs admin
	behaviors.
	(log2): New tests log2-5 through log2-10 test setting the
	description via cvs admin.

Thu Jul 17 12:39:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (socket_buffer_input, socket_buffer_output): Add
	comment regarding size of of buffer we pass to send and recv.

Sat Jul 12 15:21:24 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c, rcs.h (add_rcs_file): New argument key_opt replaces
	access to global variable keyword_opt.  New arguments desctext and
	desclen allow one to set the description.  If add_vhead is NULL,
	then omit a revision, like rcs -i.
	* import.c (process_import_file), mkmodules.c (init): Change
	callers.
	* subr.c, cvs.h (get_file): New function, adapted from code in
	update_entries.
	* client.c (update_entries): Call it.
	* commit.c (checkaddfile): Create new RCS files with add_rcs_file
	rather than rcs -i.

Fri Jul 11 12:14:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (join_file): Handle binary files ourself rather than
	passing them to RCS_merge (which sort of tries to handle binary
	files, but does so badly).
	* sanity.sh (binfile2): New "brmod", "brmod-trmod", and
	"brmod-wdmod" tests test for this fix.

	* add.c (add): Exit status is now nonzero if any of the arguments
	failed (already was mostly true, make it true for the new sanity
	check).  Move check for '/' (now ISDIRSEP) up to sanity check, so
	the client does it too.
	* sanity.sh (errmsg2): Test for this fix.

Thu Jul 10 00:02:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Check for CVSADM, ".", and "..", and skip any
	attempt to add them.
	* sanity.sh (errmsg2): New tests, tests for above fix.

	* main.c (main): In text printed upon --version, also refer
	people to --help.

	* rcscmds.c (RCS_exec_rcsdiff): Add comment about timezones.

	* server.c, cvs.h (cvs_output_binary): New function.
	* rcs.c (RCS_checkout): For a binary file, call cvs_output_binary
	rather than cvs_output.
	* client.c (handle_mbinary): New function.
	(responses): Add "Mbinary".

Tue Jul  8 12:18:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* filesubr.c (get_homedir): Add comment about root vs. user
	directory in pserver server.

Mon Jul  7 14:39:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (big): Also test Rcs-diff case.

	* client.c (update_entries): Reindent a line.

	* sanity.sh (death2): Add comment about Sun diff.  Thanks to
	Warren Jones <wjones@TC.FLUKE.COM> for reporting this.

	* client.c (update_entries): If DONT_USE_PATCH, then just treat a
	Patched response as an indication to try again with complete files.
	* update.c (update): Remove DONT_USE_PATCH ifdefs, since a CVS
	with DONT_USE_PATCH defined can still handle Rcs-diff.
	* sanity.sh (serverpatch): Add comment about this coming up in
	real life if the user modifies the file while CVS is running.

	* client.c (start_server): Add comment about logfiles if there are
	several connections to the server.
	(log_buffer_shutdown): Close the logfile after shutting down the
	underlying buffer.  This way at least we get the last set of
	logfiles rather than a bizarre mishmash.

1997-07-06  enami tsugutomo  <enami@but-b.or.jp>

	* logmsg.c (do_verify): Unlink temporary file before call error().
	Remove unneeded `return' statement.  Fix comment.

Sun Jul  6 13:36:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_fileproc): Change message from "during rcsdiff of"
	to "while diffing".  For a while now, that message might be
	printed after a call to DIFF instead of rcsdiff.

	* diff.c (diff_fileproc): Call cvs_output not printf.  Remove
	calls to fflush (should be handled now by call to cvs_outflush in
	recurse.c).
	* patch.c (patch_fileproc): Likewise.

	* rcscmds.c, cvs.h (diff_exec): New function.
	* diff.c (diff_fileproc), patch.c (patch_fileproc),
	update.c (patch_file): Call it.

	* rcscmds.c: Adjust comments concerning diff library to point to
	new, expanded comments at diff_exec.  Remove comments concerning
	patch library; Rcs-diff should be adequate.

	* client.c (update_entries): Add comment about GNU patch usage (-b
	option and so on).

Sat Jul  5 04:13:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c, cvs.h (RCS_exec_rcsdiff): New function.
	* diff.c (diff_fileproc): Call it.

Thu Jul  3 09:50:07 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment about how long we should keep the
	deprecated "cvs rlog" alias.

	* server.c (cvs_output): Add comment about whether to fflush.

Wed Jul  2 18:57:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join2): New tests join2-19 and friends test for a
	case that we can't readily get right (see comments).

Tue Jul  1 09:52:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (cmd_usage): Say "specify" --help rather than the vague
	"use".
	(opt_usage, cmd_synonyms): Mention --help here too.
	* add.c, admin.c, checkout.c, commit.c, diff.c, edit.c, import.c,
	log.c, login.c, mkmodules.c, patch.c, rcs.c, release.c, remove.c,
	rtag.c, status.c, tag.c, update.c, watch.c: Likewise, for all the
	other help messages.

	* sanity.sh (join2): New tests.

	* repos.c (Name_Repository): Check for errors from fclose.

Fri Jun 27 10:27:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* scramble.c, login.c: Reindent.

	* client.c (connect_to_pserver): Check for errors from send().
	If socket() fails, include SOCK_STRERROR (SOCK_ERRNO) in message.

Wed Jun 25 11:21:52 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c: New option --help-options, with much of the text
	from --help.  Fix a few capitalization and punctuation problems.
	Rewrite text for --help to be an intro to all the --help-*
	options.

	* sanity.sh (head): New tests, concerning meaning of HEAD.

Tue Jun 24 10:14:18 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (recv_line): New function.
	(connect_to_pserver): Call it, and rewrite accordingly.  Also
	accept new "E" and "error" responses.  Change \n to \012.
	* server.c (pserver_authenticate_connection): Adjust comment
	accordingly, concerning sending I HATE YOU not "error".

Sun, 22 Jun 1997  Jim Kingdon

	* main.c (main): Move setting of server_active inside #ifdef
	SERVER_SUPPORT; otherwise the variable doesn't exist.
	* main.c (main): Call return after exit to shut up warning.

Fri Jun 20 22:56:34 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (connect_to_pserver): On "I HATE YOU", give
	"authorization failed" fatal error regardless of verify_only.
	* login.c (login): Don't print that "incorrect password" message;
	it now is possible with an --allow-root failure as well as an
	incorrect password.  cvsclient.texi doesn't really specify what I
	HATE YOU means in any detail, and it seems a little silly for
	login to give different messages than the other commands.
	* client.c, client.h (connect_to_pserver): Return type now void.

Thu Jun 19 12:16:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_root): Give error on duplicate Root request.
	Call parse_config.
	* parseinfo.c, cvs.h (parse_config): New function.
	* cvs.h (CVSROOTADM_CONFIG): Added.
	* main.c (main): Set server_active here...
	* server.c (server): ...not here.  That seems cleaner than
	strcmp's between command_name and "server" in main.c.
	* main.c (main): Call parse_config.
	* main.c, cvs.h (free_Rcsbin): Make global.
	* mkmodules.c (filelist): Add CVSROOTADM_CONFIG.

Wed Jun 18 11:24:31 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.11.

	* Version 1.9.10.

Tue Jun 17 22:48:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add --allow-root=ROOT argument; call
	root_allow_add for each time it is specified.  Call
	root_allow_free before exiting.
	* root.c, cvs.h (root_allow_add, root_allow_free, root_allow_ok):
	New function.
	* server.c (pserver_authenticate_connection): If root_allow_ok
	doesn't like the CVSROOT directory, don't allow access.

Tue Jun 17 14:30:14 1997  Jim Kingdon  (unknown@beezley)

	* client.c: Add "copyright" notice.  If NO_EXT_METHOD, omit
	start_rsh_method.
	* client.c (update_entries): Cast argument to MD5Update from
	char * to unsigned char *.

Mon Jun 16 16:46:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c (piped_child, filter_stream_through_program):
	If USE_SETMODE_BINARY, then put the pipes into binary mode.
	* find_names.c, ignore.c, lock.c, wrapper.c: Change fnmatch to
	CVS_FNMATCH.
	* client.c (start_server): If NO_EXT_METHOD, then give a fatal
	error on any use of :ext:.

Sun Jun 15 22:30:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Match U CVSROOT/* lines with DOTSTAR in
	test toplevel-9.

Thu Jun 12 10:27:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Remove Emptydir before starting.

	* sanity.sh: Change "rm -rf" to "rm -r" when deleting working
	directories (except a few watches cases).  Helps detect cases
	where the testsuite has cd'd to somewhere other than where we
	think it has.
	(basic2): Remove "rm -r first-dir" between tests 49 and 50.  The
	directory was already deleted in test 45.5.
	(rcs): Add "cd .." at end of tests.
	(stamps): No longer cd to TESTDIR; shouldn't be necessary with
	fix to "rcs" test.

Wed Jun 11 22:28:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Also remove CVSROOT/Emptydir at end of
	test.  Otherwise it affects the toplevel-9 test for remote.

Tue Jun 10 14:03:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Change "update" and "checkout" to "[a-z]*"
	as these read "server" instead for "make remotecheck".  Change
	expect strings for toplevel-9 to accept the behavior of remote CVS
	(see comments for more discussion).

	* sanity.sh: New tests stamps-9 through stamps-11 test timestamp
	behavior on cvs update.

Mon Jun  9 22:42:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Remove "#! /bin/zsh" line at end.  I assume it was
	added accidentally.

Tue Jun 10 03:08:46 1997  Norbert Kiesel  <nk@psycho.de>

	* sanity.sh: new tests "toplevel" for the new toplevel CVS
	directory creation (including one test which shows an error in
	this area).

Sun Jun  8 20:52:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (getrcsrev): Before printing error, check whether it was
	feof or ferror.

	* rcs.h, import.c (add_rcs_file): No longer static.  New arguments
	add_vbranch, add_vhead, and add_logfp replace access to static
	variables vbranch, vhead, and logfp.
	* mkmodules.c: Call it instead of RCS_CI.
	* import.c (process_import_file): Adjust call to add_rcs_file.

Tue Jun  3 10:18:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Match "." with "\." not ".".

Tue Jun  3 13:02:37 1997  Norbert Kiesel  <nk@cosa.de>

	* checkout.c (checkout): Removed restriction of not sending -k in
 	remote export (I think this was introduced while the -k handling
 	was still broken in remote mode).  Give better error texts
 	regarding -c and -s options.  Use error() instead of usage() for
 	reporting errors in all places.  Reindented some lines.  Free
 	xmalloc'd space of options.

Thu May 29 16:32:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c (RCS_checkin), mkmodules.c (init): Pass -w option to
	"ci", specifying getcaller ().
	* server.h, server.c (CVS_Username): Now extern.
	* subr.c (getcaller): Return CVS_Username if it is set.

Wed May 28 22:31:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update_fileproc): If wrap_merge_is_copy and we would
	like to do a merge, give a fatal error.  See comment for why.
	* sanity.sh (mwrap): New tests, tests for above fix.

Tue May 27 21:59:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (stamps): cd to ${TESTDIR} before starting.

Mon May 26 15:31:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (handle_mod_time): New function.
	(responses): Add "Mod-time".
	(stored_modtime_valid, stored_modtime): New variables.
	(update_entries): If it is set, change the file's modtime.
	* server.c, server.h (server_modtime): New function.
	* vers_ts.c (Version_TS): Call it.
	* patch.c (patch_fileproc): Add comment about why we don't.
	* sanity.sh (stamps): Added, tests for above fix.

Fri May 16 13:14:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c (free_names): Update documentation to reflect fact that
	free_names is now called to free vectors allocated by expand_wild
	as well	as by line2argv.

	* main.c (main): Use "xstrdup (foo)" not "xstrdup(foo)" as
	specified in HACKING.

Fri May 16 15:10:37 1997  Norbert Kiesel  <nk@cosa.de>

	* modules.c (do_module): initialize optind to 0.  use local copies
 	of optarg's (because they might me freed within free_names).

Thu May 15 11:50:15 1997  Norbert Kiesel  <nk@cosa.de>

	* main.c (main): initialize optind to 0.  use local copies of
	optarg's (because they might me freed within read_cvsrc).

	* cvsrc.c (read_cvsrc): free old argv after constructing a new
	one.  This fixes a memory leak.

	* recurse.c (start_recursion): use free_names() instead of
	reimplementing it

	* rcs.c (RCS_deltas): free branchversion (memory leak).

	* parseinfo.c (Parse_Info): free some vars (3 memory leaks).

	* logmsg.c (logfile_write): free str_list_format (memory leak).

	* watch.c (watch_addremove), (watchers), update.c (update), tag.c
 	(cvstag), status.c (status), rtag.c (rtag), remove.c (cvsremove),
 	release.c (release), patch.c (patch), log.c (cvslog), import.c
 	(import), history.c (history), edit.c (watch_onoff), (edit),
 	(unedit), (editors), diff.c (diff), commit.c (commit), checkout.c
 	(checkout), add.c (add): initialize optind to 0

	* diff.c (diff_fileproc): cosmetic change (whitespace added).

	* checkout.c (checkout): move local variable definition into the
	block where the variable is used.

	* client.c (update_entries): initialize some local variables to shut up
	gcc -O -Wall.

	* buffer.c (buf_read_line): initialize a local variable to shut up
	gcc -O -Wall.


Wed May 14 16:29:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c (admin): When sending options to server, don't try to
	send av[ac].  It may contain one of the names that we'll send in
	send_file_names (which caused tests like keyword-6 to work,
	sort of accidentally), or it may contain NULL (which would tend to
	cause a coredump).
	* sanity.sh (basicb): New test basicb-21 tests for above fix.

Mon May 12 16:22:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* add.c (add): Free message and repository in client code.
	* checkout.c (checkout): Don't free repository unless allocated.
	* client.c (start_rsh_server): Free command.

Sun May 11 11:43:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c: Remove all references to USE_DIRECT_TCP; see
	../ChangeLog for rationale.

Fri May  9 22:19:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment explaining why we call exit.  Pass 0
	not EXIT_SUCCESS, because lib/system.h has portability cruft for
	EXIT_FAILURE but not EXIT_SUCCESS.

Fri May  9 17:25:00 1997  Larry Jones  <larry.jones@sdrc.com>

	Fix miscellaneous memory allocation problems:
	* add.c (add): Free repository.
	* client.c (notified_a_file): Free getline buffer.
	* edit.c (notify_check): Free getline buffer.
	* hash.c (dellist): Free header node when not caching.
	* login.c (login): Don't continually free & allocate getline
	buffer, use xstrdup instead of xmalloc/strcpy, free getline
	buffer before returning.
	* main.c (main): Call exit instead of returning so tools like
	Purify won't consider permanently allocated memory as leaks.
	* mkmodules.c (mkmodules): Free getline buffer.
	* modules.c (cat_module): Call close_module.
	* rcs.c (rcsvers_delproc): Free state.
	* recurse.c (start_recursion): Free files_by_dir.
	(unroll_files_proc): NULL out p->data after using it to set
	filelist to avoid multiple frees.
	* server.c (check_command_legal_p): Don't continually free &
	allocate getline buffer, free getline buffer before returning.
	(check_repository_password): Ditto, use xstrdup instead of
	xmalloc/strcpy.
	* wrapper.c (wrap_add_file): Free getline buffer.

Thu May  8 14:21:00 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (checkout_proc): Free finfo.rcs (memory leak).

8 May 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* hash.c: Add #ifdef's to disable caching.  This makes it easier
	to track down memory allocation problems.

Thu May  8 11:40:39 1997  Larry Jones  <larry.jones@sdrc.com>

	* sanity.sh: In setting "tests" use a number of statements rather
	than one very long line.

Thu May  8 11:40:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvsbug.sh: Remove $Id; we decided to get rid of these some time
	ago.

Thu May  8 11:34:02 1997  Larry Jones  <larry.jones@sdrc.com>

	* cvsbug.sh: Put separate statements on separate lines, so it
	works if awk is AT&T nawk.

Tue May  6 16:56:00 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvsrc.c (read_cvsrc): Fix various memory allocation problems:
	rearrange code to avoid leaks, use xrealloc instead of xmalloc/
	copy/free, make sure there's room for the remaining args before
	appending them.

Tue May  6 14:20:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* edit.c (watch_onoff, edit, unedit, editors): Add -R like
	other things with -l.
	* watch.c (watch_addremove, watchers): Ditto.

Mon May  5 18:10:37 1997  larry.jones@sdrc.com
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Change all /tmp/cvs-sanity to TESTDIR.  If TESTDIR
	environment variable is set, use it instead of /tmp/cvs-sanity.
	* sanity.sh: Make TMPPWD the pwd equivalent of TESTDIR, not of /tmp.

4 May 1997  Larry jones  <larry.jones@sdrc.com>
	    and Jim Kingdon

	* checkout.c, diff.c, patch.c, rcs.c: Update usage messages.
	* rcs.c (annotate): Add -R like other things with -l.

Sat May  3 14:57:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basic1): Rewrite test (use dotest, unroll the loops
	which IMHO makes the test a zillion times more understandable, and
	only do the variant which tests for 4 files at a time--we test one
	file at a time lots of places).

2 May 1997  Ziv Gigus <ziv@rest.home.net>
	    and Jim Kingdon

	* client.c, client.h (client_process_import_file): New argument
	all_files_binary means treat all files as binary.
	* import.c (import_descend): Pass it if -kb is specified.
	* client.c (client_process_import_file): In the
	non-all_files_binary case, call wrap_rcsoption to determine
	whether the file is binary.

Thu May  1 13:44:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (binfiles2): New tests, for update -j and binary files.

Wed Apr 30 11:18:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (start_recursion): Also free reposfile.
	Don't look in repository if client_active (latter bug reported by Paul
	Sanders <p.sanders@dial.pipex.com>).

Mon Apr 28 22:36:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_file_nodiff): Remove SERVER_SUPPORT ifdefs.  They
	were not based on server_active, which doesn't really make any
	sense (it meant that compiling --disable-server could affect the
	behavior of the non-client/server CVS).  This affected the output
	in tests death2-diff-11 and death2-diff-12 in the testsuite.
	* sanity.sh (newb-123j0): Also accept "Needs Checkout", for a
	--disable-server CVS.

	* main.c (cmd_usage): Change "run diffs" to "show differences";
	the former is jargon.
	* edit.c (edit_usage): Fix typo ("." -> ",").
	* edit.c (editors_usage), watch.c (watchers_usage): Mention -l.
	* checkout.c (export_usage): Say what -P does.
	* history.c (history_usg): Add comment about message wording.

Mon Apr 28 14:47:45 1997  Norbert Kiesel  <nk@cosa.de>

	* checkin.c (Checkin): use filename without path when calling
 	wrapper (bug found by Michal Schmitz <ms@cosa.de>).

Fri Apr 25 13:28:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (update_entries): In UPDATE_ENTRIES_RCS_DIFF case,
	write to a temporary file and then rename it.

Thu Apr 24 11:35:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c, cvs.h (pathname_levels): New function, from a piece of
	send_file_names.
	* client.c (send_file_names): Call pathname_levels in place of the
	code which was moved there.
	* server.c, server.h (server_pathname_check): New function.
	* recurse.c (start_recursion): Call it.
	* sanity.sh (modules3): New test modules3-11b tests for above fix.

	* filesubr.c: Do not define L_tmpnam.  It is in ANSI and SunOS4,
	so I don't think there will be a problem with it being missing.
	Defining it too small can cause memory corruption.
	(cvs_temp_name): Do not use L_tmpnam in the mktemp code; this
	could cause a buffer overflow if the -T global option was in use.

Thu Apr 24 13:21:15 1997  Norbert Kiesel  <nk@cosa.de>

	* filesubr.c (cvs_temp_name): Use tempnam if available, else
 	mktemp, else tmpnam. See the comment for rationale.

	* sanity.sh: use "tar cf - ." instead of "tar cf - *" for
 	directory copies.

Wed Apr 23 23:41:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_update_prog): If in readonly mode, give an error.

Wed Apr 23 19:07:41 1997  Norbert Kiesel  <nk@cosa.de>

	* subr.c (line2argv): Allocate at least 4 slots for argv.

	* checkout.c (checkout_proc): Add a comment which says why the
 	above change was necessary to avoid writing to unallocated memory.

Wed Apr 23 11:20:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (ParseTag): Always set *NONBRANCHP.

21 Apr 1997  Jim Kingdon

	* client.c (update_entries), rcs.c (expand_keywords): Rewrite
	test to avoid signed/unsigned warning.

Mon Apr 21 09:02:22 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (patch_file): Add comment about whether auto-detecting
	features of the DIFF program is a good idea.

Mon Apr 21 00:03:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	Don't require the patch program:
	* client.c (struct update_entries_data): Add
	UPDATE_ENTRIES_RCS_DIFF to contents enum.
	(update_entries): Handle UPDATE_ENTRIES_RCS_DIFF.
	(handle_rcs_diff): New static function.
	(responses): Add "Rcs-diff".
	* server.c (server_updated): Handle SERVER_RCS_DIFF.
	(server_use_rcs_diff): New function.
	* server.h (enum server_updated_arg4): Add SERVER_RCS_DIFF.
	(server_use_rcs_diff): Declare.
	* update.c (rcs_diff_patches): New static variable.
	(update): Set rcs_diff_patches.
	(update_fileproc): If rcs_diff_patches, pass SERVER_RCS_DIFF
	rather than SERVER_PATCHED to server_updated.
	(patch_file): Correct initial comment to say diff rather than
	rcsdiff.  If rcs_diff_options, pass -n to diff rather than -c.
	* rcs.c (rcs_change_text): New function.
	* rcs.h (rcs_change_text): Declare.

Mon Apr 21 00:08:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_fileproc): Add comment concerning updating the
	client timestamp.

Sun Apr 20 23:20:37 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* commit.c (commit): Add comment regarding SEND_FORCE rationale.

Sat Apr 19 17:10:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (dirswitch): If directory ends in '/', complain.

Fri Apr 18 18:09:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* rcs.c (apply_rcs_changes): New static function, broken out of
	RCS_deltas.
	(RCS_deltas): Call it.
	(linevector_add): Change return type to int.  Return an indication
	of an error for an invalid add, rather than calling error.

Fri Apr 18 11:24:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.9.

	* version.c: Version 1.9.8.

	* commit.c (struct find_data): Add field force.
	(find_fileproc, commit): Use it instead of force_ci to decide
	whether to send files to server.
	(commit): Set it if either -f or -r is specified.
	* sanity.sh (basica): Add tests basica-8a0, basica-8a1, and
	basica-8a2; tests for above fix.

Wed Apr 16 11:50:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* zlib.c: Remove paragraph with Free Software Foundation address.
	See 2 Jan 1997 entry in ../ChangeLog for rationale.

Tue Apr 15 00:36:23 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (patch_file_write): Always assign to final_nl, so that
	it ends up reflecting whether the data from the last call had a
	newline, not whether the data from any of the calls ended in a
	newline.  Doesn't matter with the current RCS_checkout
	implementation, but it will if RCS_checkout is changed to pass
	less than the entire file.

	* rcs.c (RCS_cmp_file): Change NULL to RUN_TTY in passing sout to
	RCS_checkout, for clarity.

	* import.c (update_rcs_file): Remove unused variable ierrno.

	* add.c, checkout.c, commit.c, diff.c, edit.c, import.c,
	history.c, log.c, main.c, patch.c, release.c, remove.c, rtag.c,
	status.c, tag.c, update.c, watch.c: Pass "+" to all calls to
	getopt.  This ensures that we maintain existing behavior even with
	glibc2.

	* filesubr.c (fopen_case): Don't set *PATHP if we return an
	error.  Since the 9 Apr 1997 change, the behavior has been to
	sometimes set it and sometimes not.
	* rcs.c (RCS_parse): Adjust callers to not free it.  Without this
	change, they could call free() on an uninitialized variable.

	* checkout.c (checkout): Add comment about export -k.

	* root.c (check_root_consistent): Add comment about wording of
	message.

Mon Apr 14 11:51:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (call_in_directory): If rdirp reaches the end of
	reposdirname, then just set it to NULL.  If server does not create
	directories one at a time, give a warning.
	* sanity.sh (modules3): Enable tests modules3-8 through
	modules3-11 for remote; tests for above fix.

	* client.c (call_in_directory): Don't set short_pathname to
	pathname for a while; just use pathname itself (cleans up a relic
	of the old "Repository" (not "Directory") code).  Add comment
	explaining short_pathname.

Sun Apr 13 18:07:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* rcs.c (RCS_checkout): Add pfn and callerdat parameters.  Change
	all callers.  Move setting of expand after retrieval of file
	data.
	(struct cmp_file_data): Define.
	(RCS_cmp_file): New function.
	(cmp_file_buffer): New static function.
	* rcs.h (RCSCHECKOUTPROC): Define type.
	(RCS_checkout): Update declaration.
	(RCS_cmp_file): Define.
	* diff.c (diff_file_nodiff): Call RCS_cmp_file rather than
	RCS_checkout and xcmp.
	* import.c (update_rcs_file): Likewise.
	* no_diff.c (No_Difference): Likewise.
	* update.c (struct patch_file_data): Define.
	(patch_file): Just return if noexec, or if binary file.  Pass
	patch_file_write to RCS_checkout.  Don't check for newlines or
	compute checksums here.  Stat RCS file to set modes.
	(patch_file_write): New static function.

	* update.c (patch_file): Checkout directly to file2, rather than
	to finfo->file followed by rename.  Remove check for whether
	result of checkout is readable; that was for an old, obsolete,
	form of death support.

Sun Apr 13 13:16:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (build_one_dir): New function.
	(struct dir_to_build): New structure.
	(build_dirs_and_chir): Rewritten to accept a linked list of struct
	dir_to_build rather than the silly string processing we had been
	doing before.
	(checkout_proc): Rewrite code that calls build_dirs_and_chdir
	accordingly.
	* sanity.sh: Enable tests modules3-10 and modules3-11 for local CVS;
	tests for above fix.

	* rcs.h (RCS_CO): Removed; no longer used.

Sun Apr 13 00:04:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	Expand RCS keywords internally; never call co:
	* rcs.h (struct rcsversnode): Add state field.
	* rcs.c (kflags): Move out of RCS_check_kflag, and make file
	static.
	(enum kflag): Define.
	(RCS_reparsercsfile): Always save lock information.  Save state in
	new state field, rather than other field.
	(struct rcs_keyword): Define.
	(keywords): New static variable.
	(enum keyword): Define.
	(printable_date, escape_keyword_value): New static functions.
	(expand_keywords): New static function.
	(RCS_checkout): Call expand_keywords.  Don't call
	RCS_exec_checkout.
	(RCS_deltas): Add log and loglen parameters.  Change all callers.
	* log.c (log_version_requested): Use new state field.
	(log_version): Likewise.
	* cvs.h (RCS_exec_checkout): Don't declare.
	* rcscmds.c (RCS_exec_checkout): Remove.

Sat Apr 12 17:32:59 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh (modules3): Remove second-dir at end of tests.
	(sticky): Correct removal of directories at end of tests.

	* sanity.sh (keyword): New tests for RCS keyword expansion.

Sat Apr 12 16:47:13 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-1b, basicb-1c, basicb-9b,
	basic-9c test current build_dirs_and_chdir behavior.

Fri Apr 11 23:54:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): New tests modules3-7* test for ability to
	supply a path in -d in modules.  Similar to modules3-8 through
	modules3-11 except because the nesting is different, these ones
	work.

Thu Apr 10 00:14:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): New tests modules3-12 through modules3-15
	test use of a module name which contains a slash.

	* sanity.sh (basicb): New tests basicb-14 to basicb-20 test use of
	co -d with two or more arguments.

	* rcscmds.c: Refer to doc/RCSFILES in comment.

Wed Apr  9 09:49:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-11 through basicb-13 test
	ability to specify several directory levels in co -d (commented
	out).

	* filesubr.c (fopen_case): If CVS_OPENDIR gives an
	existence_error, return it to the caller instead of giving a fatal
	error.

	* client.c (update_entries): Fix typo in call to error (1 -> errno).

Tue Apr  8 23:02:22 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* error.h, error.c: Test for #ifdef __STDC__, not #if __STDC__.
	This is consistent with other parts of CVS; it means that the
	declaration for fperror will match the definition even if __STDC__
	is defined to 0 as the SunPro 4.0 compiler does.  Reported by
	Richard Smith <rjsmith@cisco.com>.

2 Apr 1997  Jim Kingdon

	* entries.c (ParseTag): Add "break;" after "default:" to avoid
	error from Visual C++.

Wed Apr  2 12:06:44 1997  Vince Del Vecchio  <vdelvecc@spd.analog.com>
			  and Jim Kingdon

	* client.c: In reporting errors from socket calls, use
 	SOCK_STRERROR and SOCK_ERRNO since strerror(errno) doesn't work
 	for Win32.

Tue Apr  8 10:45:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): Add tests modules3-8 to modules3-11, to
	test for ability to supply a path to -d in modules.  Mostly
	commented out as CVS is buggy in this area.

Mon Apr  7 12:41:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Add comment about SEND_NO_CONTENTS.

Sun Apr  6 21:46:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update): Add comment about noexec and SEND_NO_CONTENTS.

Sun Apr  6 17:34:08 1997  Robert Bihlmeyer  <robbe@orcus.priv.at>

	* Pass +f not f to getopt_long to prevent options from being
	permuted with glibc 2.0.1.

Sun Mar 30 00:07:05 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h (struct vers_ts): Adjust comment regarding ts_user.
	* server.c (serve_is_modified): New function.  Set entries to show
	that the file is modified but we don't know the contents.
	* server.c (requests): Add "Is-modified" request.
	* vers_ts.c (time_stamp_server): If the timestamp in entdata is
	"M" or "D", just copy that over into ts_user.
	* vers_ts.c (Version_TS): If timestamp is "D", use the entries
	line for the sole purpose of passing it to time_stamp_server.
	* no_diff.c (No_Difference): If ts_user is "M", conclude the files
	are different.
	* client.h, client.c (send_files): Replace arguments build_dirs
	and force with argument flags.  Add flag SEND_NO_CONTENTS and add
	to struct send_data.
	(send_fileproc): If no_contents, then send Is-modified instead of
	Modified.
	* add.c, admin.c, client.c, commit.c, diff.c, edit.c, log.c,
	rcs.c, remove.c, status.c, tag.c, update.c, watch.c: Change all
	send_files callers.

Fri Mar 28 22:32:25 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (requests): Change "Repository" to rq_optional.  I'm
	not sure whether I overlooked this when I removed support for
	Repository, or whether I was thinking that servers would need to
	support it anyway, for CVS 1.5 to 1.9 clients, but making it
	optional doesn't prevent the server from supporting it and it
	seems silly for the client to complain about absence of a request
	that it never will use.

Fri Mar 28 10:06:59 1997  Steven Miller  <Miller@wingra.com>

	* entries.c (Subdirs_Known): Don't create Entries.Log if noexec.

Thu Mar 27 18:14:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh (death2): Remove commented out test death2-21.  It
	would now pass, but it duplicates the new test sticky-11.

Thu Mar 27 10:21:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (dotest_internal): Write test output to logfile even
	if test succeeds.  This was the behavior prior to 30 Sep 1996.
	See the comment for rationale.

Tue Mar 25 13:26:52 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h, entries.c (WriteTag): Add arguments nonbranch,
	update_dir, and repository.  Move the server_set_sticky call from
	callers to here.
	* cvs.h, create_adm.c (Create_Admin): New argument nonbranch.
	* cvs.h, entries.c (ParseTag): Add argument nonbranchp.
	* cvs.h (struct stickydirtag): Add field nonbranch.
	* entries.c (Entries_Open): Set it.
	* cvs.h (Vers_TS): Add field nonbranch.
	* vers_ts.c (Version_TS): Copy it from struct stickydirtag.
	* server.c, server.h (server_set_sticky): Add argument nonbranch.
	* add.c, client.c, checkout.c, modules.c, update.c, create_adm.c,
	commit.c: Update callers.
	* add.c (add): If nonbranch, don't add the file on that "branch".
	* commit.c (write_dirnonbranch): New variable.
	(commit_fileproc, commit): Set it.
	(commit_dirleaveproc): Pass it to WriteTag.
	* update.c (rewrite_tag, nonbranch): New variables.
	(update, update_dirent_proc, update_fileproc): Set them.
	(update_filesdoneproc): If rewrite_tag, call WriteTag.
	* sanity.sh (sticky): New tests, test for above fix.

	* version.c: Change version number to 1.9.7.

	* version.c: Version 1.9.6.

Mon Mar 24 13:02:04 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (ParseTag): Add comment about unrecognized characters
	in CVS/Tag file.

	* classify.c (Classify_File): Add comment about how specifying a
	tag (bogusly?) suppresses certain messages.

Fri Mar 21 13:37:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.h (struct rcsnode): Add comment about case of PATH.
	* rcs.c (RCS_parse): If ign_case, then try opening the file with
	fopen_case.
	* ignore.c (ign_case): Adjust comment.
	* cvs.h, filesubr.c (cvs_casecmp, fopen_case): New functions.

20 Mar 1997  Jim Kingdon

	* client.c (send_repository): When sending Directory request,
	send any ISDIRSEP character as '/'.  Fixes
	"cvs log foo\bar\baz.c" on NT & friends.

	* client.c (send_file_names): Don't try to read Entries file if
	CVSADM directory does not exist.  Fixes fairly serious regression
	(warning on all fresh checkouts) introduced by 1997-01-08 change.

Tue Mar 18 13:03:33 1997  Jim Meyering  <meyering@totoro.cyclic.com>

	* sanity.sh (RCSINIT): Define to be empty and export, to hide any
	existing value that might cause spurious failures.

	* Makefile.in: (install): Depend on installdirs.
	Remove `CYGNUS LOCAL' comment saying not to.

Tue Mar 18 09:36:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (struct recursion_frame): Reindent.
	(do_dir_proc): Print message if we try to recurse into a CVSADM
	directory.
	* sanity.sh (basicb): New test basicb-4a tests for above fix.

Sun Mar 16 10:18:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (death2): Replace regexp matching temporary file name
	with new variable ${tempname}.  For most of the tests this is a
	cosmetic change, but death2-diff-6 had been missing _ which caused
	it to fail on Solaris (at least sometimes).

	* sanity.sh (modes): Don't use export -n; it doesn't seem
	to be sufficiently portable.

	* version.c: Change version number to 1.9.5.

	* version.c: Version 1.9.4.

	* rcscmds.c (RCS_checkin): Preserve the mode of the rcsfile.
	RCS_CI usually, but not always, does this for us.
	* commit.c (fix_rcs_modes): Replace algorithm with a more
	CVSUMASK-friendly one.
	* sanity.sh (modes): Update tests modes-5, modes-7, modes-10, and
	modes-15 so they test that CVSUMASK is honored.

Sun Mar 16 10:18:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modes): New tests modes-7a and modes-7b test behavior
	if one manually changes the modes in the repository.

	* server.c (server): Revise code which checks for errors creating
	temporary directory.  This won't solve the intermittent
	  can't create temporary directory
	  Unknown error -1
	but it will mean (a) the right message based on errno gets
	printed, instead of "unknown error -1", and (b) the message says
	that it happened in chmod instead of mkdir_p.

Sat Mar 15 16:47:12 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modes): New tests.  Note that (for now) these are
	just testing how CVS already behaves; I want to record that before
	I move on to changing CVS's behavior with modes of RCS files.

13 Mar 1997  Jim Kingdon

	* subr.c (line2argv): Change argv_allocated from size_t to int.

Wed Mar 12 22:16:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): If repository has an extraneous "."
	directory at the end, strip it off.  This fixes a bug which was
	introduced when strip_path was nuked (this fix is much more
	limited in scope than strip_path was; I _think_ that is a good
	thing).
	(add): Likewise, for client.
	(combine_dir): New function, helps with above.
	* sanity.sh (modules3): Reenable tests for this behavior.
	(basica-0b, basicb-0e): Adjust test to reflect "foo/bar" instead
	of "foo/./bar" in message.  As with the rest of this, I believe
	this is just restoring the behavior prior to the strip_path nuking
	(I tried it with CVS 1.9).

Sun Mar  9 10:06:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* root.c (parse_cvsroot), server.c (serve_root, serve_init):
	If CVSroot_directory is not an absolute pathname, give a fatal error.
	* sanity.sh (crerepos): New tests crerepos-6* test for above fixes.

Sat Mar  8 22:06:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	This cleans up the last known code which can overflow its buffers
	(except the Mac client).  I've skimmed through much of CVS looking
	for other such places; but I didn't read everything.  If I missed
	any please report it to bug-cvs.
	* logmsg.c (logfile_write, title_proc): Realloc str_list as
	needed; don't assume MAXLISTLEN is enough.
	* cvs.h (MAXLISTLEN, MAXFILEPERDIR): Removed; no longer used.
	* add.c, myndbm.c, parseinfo.c, update.c: Nuke MAXLINELEN limit.
	* parseinfo.c, update.c, mkmodules.c: Check for errors reading file.
	* cvs.h (MAXLINELEN): Removed; no longer used.
	* logmsg (MAXHOSTNAMELEN): Removed; not used.
	* main.c (cmd_synonyms): Allocate based on fullname, nick1, and
	nick2, just in case someone makes those big enough so that 100
	bytes is not enough.
	(Make_Date): Use MAXDATELEN rather than our own fixed size.
	* mkmodules.c (mkmodules): Nuke arbitrary limit on line length.
	* rcs.c (ALLOCINCR): Remove; not used.
	(RCS_check_kflag): Add comment concerning karg size.
	* run.c: Allocate run_prog to the needed size, rather than
	allocating a fixed size buffer.

Fri Mar  7 22:39:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* logmsg.c (logfile_write): Allocate prog to needed length rather
	than assuming MAXPROGLEN is enough.
	* cvs.h (MAXPROGLEN): Removed; no longer used.
	* subr.c (MIN_INCR): Update comment to reflect MAXPROGLEN's demise.

	* subr.c (free_names): Fix comment: this function is not used to
	free memory allocated by Find_Names (at least it hasn't for a long
	time).
	* subr.c, cvs.h (line2argv): Change calling convention so that we
	allocate argv array rather than the caller.  The previous one had
	no way of checking whether we overflowed the passed-in buffer.
	* subr.c (free_names): Free the argv array too.
	* modules.c (do_module, cat_module): Update callers.

Thu Mar  6 12:44:42 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c: Allocate vhead and vbranch dynamically; removes
	arbitrary limit.
	* history.c: Likewise (since_rev, since_tag, backto, rec_types).
	* ignore.c: Likewise (line).  Also check for errors from getline
	and add 'copyright' notice to top of file.
	* wrapper.c (wrap_add_file): Likewise (line).  Also check for
	errors from various calls and add 'copyright' notice to top of file.

Tue Mar  4 17:39:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (update_entries): Add comment about "move away <file>"
	message.

Mon Mar  3 21:51:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Clean up topfile,v at end of test.  Fixes
	failure in modules-155b.

Sun Mar  2 18:11:09 1997  Dan Wilder  <dan@gasboy.com>
			  and Jim Kingdon

	* admin.c (admin): Arrange to perform recursion if "cvs admin"
	is passed only options.

Sun Mar  2 18:11:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-0* test for files at top
	level.

	* error.c (error): Add newline to "out of memory" message.  I think
	that its omission probably could cause the message to be lost in
	the bowels of server.c and never passed to the user.

	* client.c (start_rsh_server): Add comment about "remsh" vs. "rsh".

	* cvs.h: Move copyright notice to top of file.

Sun Mar  2 13:44:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh: Use -n when testing whether rsh works.

	* server.c (serve_root): Free path.

Sun Mar  2 13:12:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	The following are things that I noticed in the process of trying
	to track down:
	  can't create temporary directory
	  Unknown error -1
	  FAIL: test 28
	from nightly testing.  I'm not sure that either item explains that
	message however.
	* server.c (server): Allocate pending_error_text;
	print_pending_error will try to free it so
	  pending_error_text = "foo"
	won't work.
	(mkdir_p): Don't assume that isdir will leave errno unmolested.

Thu Feb 27 15:29:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* remove.c (cvsremove): When forcing removal in client mode, use
	start_recursion rather than calling CVS_UNLINK on each argument.
	(remove_force_fileproc): New static function.
	* sanity.sh (deep): Add tests deep-rm7 through deep-rm10 for above
	patch.

	* sanity.sh (death): Enable death-76a0 and death-76a1 tests for
	remote, since they now work.

Wed Feb 26 16:13:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (add_prune_candidate): Skip adding this directory if
	it is the same as the first directory already on the list.

Mon Feb 24 21:36:43 1997  Noel Cragg  <noel@gargle.rain.org>

	* main.c (lookup_command_attribute): Add the "init" command to the
 	list of commands that don't use the current working directory.

Sun Feb 23 09:54:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (devcom3): Clean up at end of test.

	* sanity.sh (basicb): Add commented out test basicb-8a0, for
	whether CVS can print an error on bad numeric revision to diff.
	Commented out until we get around to fixing CVS.
	* diff.c (diff_file_nodiff): Add comment about this case.

	* fileattr.c (fileattr_read): If a filename is duplicated,
	continue to ignore subsequent lines but free the node so that we
	don't leak memory.
	* sanity.sh (devcom3): New tests devcom3-8 and devcom3-9 test for
	behavior on duplicated filenames.

	* fileattr.h: Add comment about unrecognized ENT-TYPE and order of
	lines in fileattr file.
	* fileattr.c (struct unrecog, unrecog_head): New variables, to
	record unrecognized lines.
	(fileattr_startdir): Assert that unrecog_head == NULL.
	(fileattr_read): Record unrecognized lines in unrecog_head linked
	list rather than ignoring them.
	(fileattr_write): Also write out unrecognized lines, if any.
	* sanity.sh (devcom3): New tests, test for above fix.

	* fileattr.h (fileattr_modify): Fix example in comment.

Sat Feb 22 08:30:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Add variable username.
	(basica rdiff multibranch log log2): Use it instead of our own
	(inconsistent) ways of matching an author name.

	* filesubr.c, root.c, rtag.c, server.c, subr.c, update.c,
	wrapper.c: Nuke PATH_MAX.
	* cvs.h, wrapper.c (wrap_fromcvs_process_file): Now returns void
	(return value had been unused).
	* cvs.h: Adjust comment to reflect the fact that PATH_MAX is
	gone, at least from src/*.c (except safe_location, as noted).

22 Feb 1997  patch by Tom Hageman  <tom@basil.icce.rug.nl> (4 Jun 1996)
	updated and commented by Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (checkout_file): Call unlink_file_dir on backup, not
	unlink_file.

Fri Feb 21 16:40:03 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in (DISTFILES): Remove NOTES.

	* NOTES: Removed.  bcopy->memcpy is done.  "static buffers" I
	assume refers to what is covered by reentrancy text in HACKING.
 	Obstack idea moved to comment in hash.c (at nodecache).  Checking
	system calls for error returns largely done, and isn't a very
	helpful suggestion unless you know where the bogus calls are
	anyway.  Sizing limits--we're in the progress of removing them
	(assuming it meant things like PATH_MAX and earlier, already
	nuked, limits).  Removed various items about changes which were
	done a long time ago (I realize that the ChangeLog's probably
	aren't reliable that far back, but I'm not convinced anyone cares
	anymore).  CONFIRM_DIRECTORY_ADDS: I assume this is a
	reference to the #if 0'd code in add_directory which asks for
	confirmation--a better way of making it harder to accidentally add
	directories would be to have to add and commit directories like
	for files.  I don't know what FORCE_MESSAGE_ON_ADD meant.

	* rcs.c (RCS_getrevtime): Fix documentation (in particular, the
	size of the array that DATE must point to, but many other things
	too).
	* patch.c, recurse.c, release.c, remove.c, repos.c: Nuke PATH_MAX.
	(patch_fileproc): Use MAXDATELEN not hardcoded 50.

Sun Feb 16 12:00:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (client_process_import_file): New variable fullname;
	pass it to send_modified.  This finishes the job of untangling the
	old short_pathname variable into update_dir vs. fullname.

	* client.c (client_process_import_file): Nuke first_time.  If
	toplevel_repos were ever NULL here, the code would dump core in
	strncmp a few lines down.  And client_import_setup ensures
	toplevel_repos is not NULL.

Sun Feb 16 08:16:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (client_process_import_file): Rename short_pathname to
	update_dir (to reflect its function) and make sure that it doesn't
	point to uninitialized memory if repository and toplevel_repos
	contain the same string.

Sun Feb 16 08:16:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (start_rsh_server): Nuke comment about weirdnesses with
	pre-1.5 versions of CVS and .bashrc/.cshrc.  The remote protocol
	is interoperable only back to 1.5, and people who need to know are
	unlikely to see this comment anyway.

Sun Dec 15 13:12:30 1996  Michael Douglass <mikedoug@texas.net>
			  and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (cmds): Added an entry for new logout command.
	(cmd_usage): Added an entry for new logout command.
	(lookup_command_attribute): Added 'logout' to list of commands
	that set need_to_crate_root to 1.
	* login.c, cvs.h (logout): New command for removing entries from
	the .cvspass file.
	(logout_usage): Usage information on the logout command.

Wed Feb 12 11:19:42 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (struct send_data): Fix indentation.

Wed Feb 12 08:48:04 1997  Greg A. Woods  <woods@most.weird.com>

	* mkmodules.c (loginfo_contents): add missing comma in
	initializer statement (caused syntax error on SunOS-4).

Tue Feb 11 21:14:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* commit.c (find_fileproc): If force_ci is set, set the status to
	T_MODIFIED even if the file hasn't changed.
	(commit): Pass force_ci to send_files as new force argument.
	* client.c (struct send_data): Define.
	(send_fileproc): The callerdat parameter now points to a send_data
	struct.  If force is set, always call send_modified.
	(send_dirent_proc): The callerdat parameter now points to a
	send_data struct.
	(send_files): Add force parameter. Change all callers.  Set up a
	send_data struct and pass it to start_recursion as callerdat.
	* client.h (send_files): Update declaration.
	* sanity.sh (basica): Add a simple test for the above patch.

Sun Feb  9 12:58:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* tag.c (cvstag), rtag.c (rtag): Pass -f to server if specified in
	the client.  I haven't tried to come up with a test case because
	the fix seems obvious.

	* import.c (add_rcs_file): Change size of altdate1 and altdate2 to
	MAXDATELEN.
	* cvs.h (MAXDATELEN): Fix comments; describe what this is for.

	* diff.c (diff_usage): Document --ifdef and try to briefly say
	what "rcsdiff-options" means.

	* update.c (update): If update had a nonzero status and we haven't
	yet tried to fetch unpatchable files, go ahead and try it again.
	The previous behavior was to quit, which meant that updates would
	keep failing until you hacked around the problem.  Patch and bug
	report by Ian; comment, ChangeLog entry, and willingness to take
	the flak if checking it is premature by Jim.

	* server.c (alloc_pending): New function.
	* server.c: Call it.  Fixes places where we had neglected to
	check for NULL return from malloc.

	* sanity.sh (binwrap): Add test binwrap-0, tests for import.c fix
	below.

Sun, 9 Feb 1997 (submitted 19 Jul 1996)  John Polstra  <jdp@polstra.com>

	* import.c (import): Give error if the same tag is specified more
	than once.  The previous behavior was to write an RCS file which
	had the same tag listed twice, once pointing to each revision,
	which is not legal.

Sun Feb  9 12:37:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkin.c (Checkin): Use cvs_output to print message (should
	make out of order bugs no worse, as it merely substitues a
	protocol_pipe vs. stderr_pipe race instead of a stdout_pipe
	vs. stderr_pipe race).  Add comment about stdout vs. stderr.

Fri Feb  7 08:29:52 1997  Josef Nelissen  <josef.nelissen@munich.ixos.de>

	* server.c (check_command_legal_p): Don't use ANSI-style definition.

Thu Feb  6 10:55:37 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* patch.c (patch): Give a fatal error for -V option (see comment
	for rationale).

	* diff.c (diff): Also send "options" to server.  Pretty much the
	patch submitted independently by josef.nelissen@munich.ixos.de and
	Ronald Khoo <ronald@demon.net>.

Wed Feb  5 18:57:14 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* modules.c (do_module): Fix typo in 30 Jan 97 PATH_MAX nuking
	(free -> free_cwd).  Testsuite test 151 gets credit for catching
	this one.

Mon Feb  3 16:14:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* main.c (lookup_command_attribute): Don't use an ANSI prototype
	when defining the function.

Fri Jan 31 12:49:02 1997  Ian Lance Taylor <ian@cygnus.com>

	* modules.c (do_module): Actually goto found if is_found is set
	(fixes thinko in PATH_MAX nuking of 30 Jan 97).

Fri Jan 31 12:49:02 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Add modules3 and big to list of tests to run
	by default; they were omitted by accident.

Thu Jan 30 11:46:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* logmsg.c, main.c, mkmodules.c, modules.c, parseinfo.c, patch.c:
	Nuke more PATH_MAX.

	* server.c (server_updated): After we send Created or
	Update-existing for a file, mark it as unchanged, in case we
	process it again.
	* sanity.sh (modules3): New tests, test for above fix.

	* logmsg.c (do_verify): Error return from fopen is NULL, not -1.
	Pass errno to error().

	* login.c [_CRAY]: Don't declare getpass.

Mon Jan 27 17:25:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (process_import_file): Fix freeing of rcs (Don't free
	it before we are done using it, and don't free it twice).

	* modules.c (cat_module): Allocate line right before we use
	it.  The previous code was wrong because the length of the
	s_h->rest changes between the time we allocate line and the time we
	sprintf s_h->rest into it.

Sun Jan 26 21:58:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* expand_path.c (expand_path): Revise to call expand_string as
	needed.  Nuke PATH_MAX.
	* find_names.c (find_dirs): Likewise.
	* import.c, lock.c: Nuke more PATH_MAX.

	* server.c (mkdir_p): Set retval to 0 at start of function.
	Previously it had been uninitialized for some cases.  Thanks are
	due to nightly testing for catching this one.

Sat Jan 25 21:34:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c, cvs.h (expand_string): New function.
	* rcs.c (getrcskey, getrcsrev): Call it.  This greatly reduces the
	number of calls to realloc if there is a very large file in the
	RCS file.  Credit goes to Mike Heath <mike@pswtech.com> for
	pointing out the problem and the basic solution (MIN_INCR,
	MAX_INCR); I adapted it into the separate function expand_string.
	* sanity.sh (big): New test helps insure this hasn't broken
	anything obvious.

Wed Jan 22 10:06:13 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* status.c (status_fileproc): Change message which is printed for
	T_MODIFIED and ts_conflict set, so that it doesn't say "unresolved
	confict".  This message occurs whether the conflict is resolved or
	not.
	* sanity.sh (conflicts): Add tests conflicts-status-* to test
	output of "cvs status" in the context of conflicts.  Tests for
	above fix.

	* rtag.c (rtag): Send -n if run_module_prog is NOT true.

Thu Jan 16 00:06:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.3.

	* version.c: Version 1.9.2.

Wed Jan 15 09:14:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (call_in_directory): Take code that creates CVSADM at
	top level, move it before the CVS_CHDIR (dir_name) call, and do it
	regardless of whether dir_name is ".".  Pass "." not dir_name to
	Create_Admin (when the code was written they were always the
	same).  Don't add reposdirname to the repository we pass to
	Create_Admin (when the code was written, I think reposdirname
	probably would always be ".").  Don't create CVSADM if
	reposdirname_absolute.
	* sanity.sh (basicb): Enable tests basicb-1a and basicb-9a for
	remote; tests for above fix.
	(basic1): Do entire test within a "1" directory to deal with
	creation of CVS directories at top level.  Support --keep.
	(conflicts): In test conflicts-136, only update first-dir.
	(basica): Uncomment the part that tests "cvs co -l .".  That tests
	the existing functionality which I might have (but hopefully did not)
	perturbed with the call_in_directory changes.

Mon Jan 13 11:04:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (check_command_legal_p): Do not call error (1, ...)
 	here; that will always cause a protocol violation by shutting down
	the connection prematurely.  Remove croak_on_illegal arg.
	(do_cvs_command): Move call to check_command_legal_p until after
	the call to print_pending_error.  Print the error message ourself.

	* mkmodules.c (filelist): Add readers and writers.  Add comment
	about why passwd is not included.  Add comment about meaning of
	NULL contents field.

Fri Jan 10 13:23:09 1997  Norbert Kiesel  <nk@col.sw-ley.de>

	* release.c (release): Initialize delete_flag before reading it
	(found by running purify)

	* logmsg.c (do_verify): Fix reading unallocated memory (found by
 	running purify)

Thu Jan  9 16:32:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (build_dirs_and_chdir): Partially revert 3 Jan
	change--move call to Subdir_Register back above the CVS_CHDIR call
	(we need to register in the old, not the new, directory).  Instead
	of calling CVS_MKDIR and ignoring errors, call mkdir_if_needed;
	this is an effort to catch errors there rather than catching them
	in the CVS_CHDIR.  This makes test 27-add-add in sanity.sh work
	again.

	* find_names.c (Find_Directories): Remove code inside
	#ifdef ATTIC_DIR_SUPPORT and replace it with a comment explaining
	why we don't look in the attic.  ATTIC_DIR_SUPPORT was never defined.

	* find_names.c (find_dirs): Add comment about tmp being unset.

	* commit.c (checkaddfile): Report errors with errno and specific
	error messages.

	* rcs.c, commit.c, create_adm.c, entries.c, find_names.c,
	ignore.c, history.c: Nuke PATH_MAX arbitrary limits.

Wed Jan  8 23:07:41 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Reindent a portion which needed it.

1997-01-08  Jim Kingdon

	* client.c (send_file_names): When looking name up in Entries,
	call Entries_Open and Entries_Close.  This has two effects:
	(1) we look at Entries.Log, and (2) we don't skip 'D' entries,
	both of which are needed to make us get the right (command
	line) name for a directory we are adding.

Wed Jan  8 14:50:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in, cvs.h, hash.h, myndbm.h, rcs.h: Remove CVSid; we
	decided to get rid of these some time ago.

Tue Jan  7 12:56:10 1997  Karl Fogel  <kfogel@ynu38.ynu.edu.cn>

        * root.c (check_root_consistent): new func, compares below new
        global var with CVSroot_directory, assuming both set.
        (set_local_cvsroot): use above new func for security check.
        (parse_cvsroot): same.
        But do all of above only #ifdef AUTH_SERVER_SUPPORT.

        * server.c: (Pserver_Repos): new global var, init to NULL.
        (pserver_authenticate_connection): set above new global.
        (check_repository_password): be a good scout and use
        CVSROOTADM and CVSROOTADM_PASSWD, now that they are the standard.
        Make sure all of above is in #ifdef AUTH_SERVER_SUPPORT.
        (check_command_legal_p): wrap most of body in #ifdef
        AUTH_SERVER_SUPPORT.
        Everywhere: wrap all references to CVS_Username in #ifdef
        AUTH_SERVER_SUPPORT.

        * cvs.h (Pserver_Repos): new var, used in consistency [security]
        check.  Defined only #ifdef AUTH_SERVER_SUPPORT.
        (CVSROOTADM_PASSWD): new #define, trying to get with the program.

Fri Jan  3 18:10:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* checkout.c (build_dirs_and_chdir): Move call to Subdir_Register
	until after we know that the directory exists.

Thu Jan  2 13:30:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in, cvsbug.sh, edit.c, edit.h, error.c, error.h,
	fileattr.c, fileattr.h, filesubr.c, run.c, update.h, watch.c,
	watch.h: Remove "675" paragraph; see ../ChangeLog for rationale.

Thu Jan  2 12:27:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (info): New test info-cleanup-verifymsg gets rid of
	verifymsg when we are done with it.

	* sanity.sh (basicb): Skip tests basicb-1a and basicb-9a for remote.
	* sanity.sh (modules-155a4): It is OK if a CVS directory exists.
	* sanity.sh (ignore): Do everything inside a "1" directory.  The
	change to create CVS directories at top-level causes messages such as
	"? home" otherwise.  In test 191, specify -I CVS so that new CVS
	directory is ignored.
	* sanity.sh (crerepos): Manually remove CVS directory which had not
	existed before.

Thu Jan  2 09:06:20 1997  Karl Fogel  <kfogel@ynu38.ynu.edu.cn>

        * server.c: Changes for pserver read-only repository access:
        (check_command_legal_p): new func.  Right now, just checks if
        repository modification is permitted, and that only if pserver is
        active.
        (do_cvs_command): take new parameter `cmd_name', a string.  All
        callers changed.  Pass it on to new func check_command_legal_p()
        before executing the command.
        (CVS_Username): new global, init to NULL.  Used by
        check_command_legal_p(), set in check_password().
        (check_password): set above new global CVS_Username; reorganized a
        bit to facilitate this.
        (check_repository_password): give *host_user_ptr permanent
        storage iff success.

        * main.c: Changes for pserver read-only repository access:
        (lookup_command_attribute): new func.
        (main): use new func lookup_command_attribute() to establish if
        CVS_CMD_IGNORE_ADMROOT and CVS_CMD_USES_WORK_DIR.

        * cvs.h: Changes for pserver read-only repository access:
        (CVSROOTADM_READERS, CVSROOTADM_WRITERS): new #defines.
        Prototype lookup_command_attribute().
        (CVS_CMD_IGNORE_ADMROOT, CVS_CMD_USES_WORK_DIR,
        CVS_CMD_MODIFIES_REPOSITORY): new #defines for
        lookup_command_attribute() and its callers.

Wed Jan  1 19:50:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* options.h.in: Reword comment for TMPDIR_DFLT to make it clear
	that this isn't specific to the pserver server.

	* modules.c (do_module): Give an error message if one tries to
	specify -a together with another option.
	* sanity.sh (modules2): New tests modules2-a* test for above fix.

	* sanity.sh (devcom): Add tests devcom-a-nonexist and
	devcom-t-nonexist for "cvs watchers" on nonexistent argument.

1997-01-01  Fred Fish  <fnf@ninemoons.com>

	* run.c (piped_child, filter_stream_through_program): Actually
	install these HAVE_VFORK patches that got missed.
	(There was a log entry for these changes for 29 Nov 1996 but it
	seems I accidentally forgot to actually check them in -kingdon).

Wed Jan  1 18:32:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in: Add ChangeLog-96.
	* ChangeLog-96: New file, contains former contents of ChangeLog.
	* ChangeLog: Now just contains 1997 changes.


For older changes see ChangeLog-96.