1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397
|
2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
* ChangeLog: Add copyright notice.
* ChangeLog-1997: Likewise.
* NEWS: Likewise.
2002-07-28 Jim Meyering <meyering@lucent.com>
* Version 4.1.12.
* configure.ac: Require automake-1.6b.
* TODO: Remove entry that mentions rm's HAVE_WORKING_READDIR.
Since remove.c was rewritten, rm is no longer susceptible to that.
2002-07-26 Jim Meyering <meyering@lucent.com>
* src/stat.c: Don't include malloc.h -- it was unnecessary.
2002-07-22 Jim Meyering <meyering@lucent.com>
* Version 4.1.11.
* src/stat.c (usage): The short form of --dereference is now -L, not -l.
Reported by Kalle Olavi Niemitalo.
* src/rm.c: Add new option, --presume-input-tty, for testing only.
Not documented.
This test might remove a file owned by the person running `make check'.
* tests/rm/fail-eperm: Hoist definition of $target_file, and use
that (not $f) in test for owner/dir/symlink. Patch by Michael Stone.
* tests/rm/fail-eperm: Handle the case in which rm produces no output.
rm would prompt for a symlink to an unwritable file
* src/remove.c (prompt): When not interactive, don't prompt
for a symlink. Reported by Dave Beckett. Patch by Michael Stone.
* tests/rm/dangling-symlink: Add a test for the above-fixed bug.
2002-07-20 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Use file_name_lookup, not getdport.
Patch by Alfred M. Szmidt.
* Makefile.maint (news-r1, news-r2): Define. Better regexp.
(announcement): Use them here. Also makes the line length < 80.
* Upgrade to cvs automake -- required to work with 2.53b.
* configure.ac: Require automake-1.6a.
* Version 4.1.10.
* Upgrade to gettext-0.11.3.
* Upgrade to autoconf-2.53b.
2002-07-19 Jim Meyering <meyering@lucent.com>
* src/dircolors.hin: Add .wav.
* tests/rm/fail-eperm: Don't expect `ARGV_0=$0 exec ...' to work.
It doesn't work with /bin/sh of Solaris5.6.
Use an explicit `export ARGV_0' instead.
[comparing actual and expected output]: Don't match the entire line,
but rather just the `rm: cannot remove `$dir/$f':' part.
* tests/rm/dangling-symlink: Use input-tty rather than
testing for /dev/stdin.
* tests/Makefile.am (EXTRA_DIST): Add input-tty.
* tests/input-tty: New file.
2002-07-18 Jim Meyering <meyering@lucent.com>
* src/dircolors.hin: Add the following to the list of colorizable
TERM names: dtterm xterm-color Eterm.
New archive suffix: .jar
New image suffixes: .jpeg .pbm .pgm .tiff .mpeg .xcf .xwd
Audio suffixes: .ogg .mp3
From Michael Stone.
2002-07-16 Jim Meyering <meyering@lucent.com>
* src/stat.c (print_it): Use memcpy and a little pointer arithmetic,
rather than stpncpy.
2002-07-14 Jim Meyering <meyering@lucent.com>
Under some circumstances, rm would fail due to a lack of
permissions, but give a misleading diagnostic like this:
rm: cannot chdir from `.' to `foo': Not a directory
* src/remove.c (remove_dir): Detect the case in which unlinking a
non-directory fails with EPERM, and give an appropriate diagnostic.
Reported by Michael Stone.
2002-07-13 Jim Meyering <meyering@lucent.com>
* tests/rm/fail-eperm: New file/test, for the above.
* tests/rm/Makefile.am (TESTS): Add fail-eperm.
* src/stat.c (print_it): Use xstrdup, not strdup.
Use strspn to avoid an explicit loop.
Use fputc rather than printf "\n".
* src/stat.c: Include quote.h.
(print_stat): Use xreadlink, rather than using readlink directly.
Use the quote function rather than hard-coded double quotes.
Use error, not perror.
2002-07-09 Martin Michlmayr <tbm@cyrius.com>
* src/df.c (show_dev): Make the `Use%' column align with
its heading, even when -P is used with -h or -H.
2002-07-10 Jim Meyering <meyering@lucent.com>
* man/du.x: Add a description of --exclude=PATTERN.
* src/du.c (usage) [--exclude]: Use PATTERN rather than PAT.
From Martin Michlmayr.
2002-07-09 Jim Meyering <meyering@lucent.com>
I added stat.x, but didn't update the definition of dist_man_MANS.
* man/Makefile.am (dist_man_MANS): Add stat.1.
(stat.1): Add dependency.
Reported by Michael Stone.
Ensure that the above never happens again.
* man/Makefile.am (check-x-vs-1): New target.
(check-local): Depend on check-x-vs-1.
* src/mv.c (euidaccess): Remove declaration. It was unused.
From Michael Stone.
(yesno): Remove declaration. It too was unused.
2002-07-08 Paul Eggert <eggert@twinsun.com:
* NEWS: df now rounds all quantities up, as per POSIX.
This fixes a bug where df would report Size < Used.
* doc/coreutils.texi: Likewise.
* src/df.c (df_readable): Omit last arg; we always round up now.
All callers changed.
2002-07-07 Paul Eggert <eggert@twinsun.com>
NEWS, doc/coreutils.texi:
New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
Any time style can be preceded by "posix-".
The default time style is now posix-long-iso instead of posix-iso.
* src/ls.c (enum time_style): Remove posix_iso_time_style.
Add long_iso_time_style.
(time_style_args, time_style_types, decode_switches): Likewise.
(decode_switches): If a time style is prefixed by "posix-", ignore
it if in the POSIX locale. Default style is now posix-long-iso.
(usage): Explain the above.
2002-07-06 Jim Meyering <meyering@lucent.com>
* tests/Makefile.am (envvar-check): Mark as `.PHONY'.
* src/stat.c: Remove everything associated with --secure option.
2002-07-04 Jim Meyering <meyering@lucent.com>
* src/remove.c (prompt): Fix test for write-protectedness to also
check errno == EACCES. Otherwise, `rm dangling-symlink' would
mistakenly prompt. Reported by Mike Castle.
* tests/rm/Makefile.am (TESTS): Add dangling-symlink.
* tests/rm/dangling-symlink: New file/test, for the above fix.
2002-07-03 Jim Meyering <meyering@lucent.com>
* src/stat.c (usage): Rename --link/-l to --dereference/-L.
Describe --secure.
Describe --format.
(main): Support -L. Deprecate -l.
2002-07-02 Jim Meyering <meyering@lucent.com>
* src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c (usage):
Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it.
* src/df.c, src/dircolors.c, src/du.c, src/install.c: Likewise.
* src/link.c, src/ln.c, src/ls.c, src/mkdir.c, src/mkfifo.c: Likewise.
* src/mknod.c, src/mv.c, src/rm.c, src/rmdir.c, src/shred.c: Likewise.
* src/stat.c, src/sync.c, src/touch.c, src/unlink.c: Likewise.
2002-07-01 Jim Meyering <meyering@lucent.com>
* tests/touch/fail-diag: Handle yet another different diagnostic.
Report from Volker Borchert.
2002-06-29 Jim Meyering <meyering@lucent.com>
* src/stat.c (print_statfs): Use `fputc ('*', stdout)'
instead of the combination of strcat and printf.
(print_statfs) [!FLASK_LINUX]: Print `*' for %S and %C,
rather than `S' and `C'.
(print_stat) [!FLASK_LINUX]: Likewise.
* src/remove.c (AD_mark_current_as_unremovable): Replace dead
code with an assertion.
2002-06-26 Paul Eggert <eggert@twinsun.com>
* src/ls-test: Use grep, not egrep.
2002-06-25 Jim Meyering <meyering@lucent.com>
* src/remove.c (prompt): Add a comment to help translators work
around the problem of making the translations of the adjective
`write-protected' and the corresponding run-time-variable noun
(e.g., file, directory, symlink, etc.) consistent. From Paul Eggert.
2002-06-24 Jim Meyering <meyering@lucent.com>
* src/stat.c (usage): Add missing open-quote.
Reported by Michael Piefel.
2002-06-22 Jim Meyering <meyering@lucent.com>
* Version 4.1.9.
* configure.ac: Invoke AC_GNU_SOURCE very early.
* tests/rm/rm1: Accommodate the slightly different diagnostic we
get on some systems, due to `unlink (dir)' failing with EACCES
rather than EPERM. E.g. for ReiserFS on Linux-2.4.18.
2002-06-21 Jim Meyering <meyering@lucent.com>
* Makefile.maint (wget-update): Checkout into config/.
Warn when skipping a file.
* src/stat.c: Include sys/statvfs.h.
[!HAVE_SYS_STATVFS_H && !HAVE_SYS_VFS_H]: Include sys/param.h
and sys/mount.h, to get decl of struct statfs on NetBSD 1.5.2.
(NAMEMAX_FORMAT, STRUCT_STATVFS): Define.
(HAVE_STRUCT_STATXFS_F_TYPE, SB_F_NAMEMAX): Define.
Remove `static' attribute from decl of program_name.
(human_fstype): Use f_basetype or f_fstypename if available.
(print_human_time): Use nstrftime and an ISO format string, in
place of strftime with `%c'. The latter is too locale-dependent.
(print_statfs): Deal with lots of portability issues: some fields
are available only with statfs, others only with statvfs, and
some are available in both, but with different types.
(do_statfs) [DEFAULT_FORMAT_TERSE]: Factor out.
[DEFAULT_FORMAT_VERBOSE]: Likewise.
* src/copy.c: Change all `preserving ...' diagnostics to
`failed to preserve ...' to make the failure clearer.
* src/cp.c: Likewise.
2002-04-03 Alfred M. Szmidt <ams@kemisten.nu>
* src/copy.c Include hurd.h.
(copy_internal): Preserve the stat.st_author field.
2002-06-21 Jim Meyering <meyering@lucent.com>
* src/ls.c (LOGIN_NAME_MAX): Define if not already defined.
(ID_LENGTH_MAX): Define.
(ST_DM_MODE): New macro. Code moved from...
(print_long_format): ...here.
(print_long_format): Itemize and comment the individual parts
of init_bigbuf. Use the above *_MAX macros.
2002-06-20 Jim Meyering <meyering@lucent.com>
* src/system.h: Change `defined(X)' syntax to `defined X'
in cpp directives.
2002-06-17 Jim Meyering <meyering@lucent.com>
* tests/setgid-check: Interpret a permissions string of
drwxr-xr-x (DOS/Windows) as meaning the cwd is not setgid.
Reported by Rich Dawe.
2002-05-19 Paul Eggert <eggert@twinsun.com>
Add support for new ls option --author, for GNU/Hurd.
Derived from a suggestion by Alfred M. Szmidt.
* doc/coreutils.texi (ls invocation), NEWS: Document this.
* m4/jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for st_author.
* src/ls.c (st_author) [! HAVE_STRUCT_STAT_ST_AUTHOR]: New macro.
(print_author): New var.
(AUTHOR_OPTION): New enum val.
(long_options, decode_switches, print_long_format, usage):
Support --author.
(format_user): New function.
(print_long_format): Use it. Make print buffer a bit bigger.
2002-06-15 Jim Meyering <meyering@lucent.com>
* tests/sample-test (trap): Make sure the temporary hierarchy is
writable before removing it.
* tests/mv/perm-1: New file, to demonstrate fix of 2002-06-12.
* tests/mv/Makefile.am (TESTS): Add perm-1.
* src/system.h: For GNU libc 2.2 and newer, ensure that <sys/types.h>
has been included before this file.
2002-06-13 Richard Dawe <richdawe@bigfoot.com>
Accommodate DOS file name limitations.
* tests/cp/same-file: Change temp. file name: s/\.err/_err/, for DOS.
* tests/mv/force: Similar.
* tests/mv/into-self: Similar.
* tests/touch/no-rights: Similar.
* tests/mv/mv-special-1: Remove leading `.' from temp. names.
2002-06-15 Jim Meyering <meyering@lucent.com>
* src/sys2.h (S_ISNAM): Add to list of S_IS* macros.
Rearrange #if directives for each S_IS macro.
From diffutils-2.8.2.
2002-06-12 Jim Meyering <meyering@lucent.com>
* src/mv.c (do_move): Give one diagnostic, not two, when unable to
unlink a destination file. This bug was introduced in fileutils-3.16l.
2002-06-07 Jim Meyering <meyering@lucent.com>
* tests/mv/part-fail: Also accept the permission-denied diagnostic
issued by some losing systems. Reported by Volker Borchert.
* src/remove.c (remove_entry): Use DT_IS_DIR only if
HAVE_STRUCT_DIRENT_D_TYPE is defined.
2002-06-02 Jim Meyering <meyering@lucent.com>
`rm' no longer uses explicit recursion, and as such is now able
to remove hierarchies of effectively unlimited depth. Prior to
this change, on typical systems, rm would fail (segfault) to remove
hierarchies of depth greater than about 25,000.
* src/remove.c: Merge in all changes from no-recursion branch.
See below for details.
* src/remove.h: Likewise.
* src/mv.c (do_move): Adapt to new calling sequence for rm.
* src/rm.c (main): Likewise.
2002-06-02 Jim Meyering <meyering@lucent.com>
* tests/rm/r-2: Adjust, now that we no longer report
`removing all entries of directory ...'.
* tests/rm/r-1: Likewise.
* src/remove.c (enum Ternary): Define type.
(prompt): Add a parameter. Adjust callers.
(remove_entry): Attempt rmdir here, only if a directory is
`known' to be empty. Significant rework.
(remove_dir): Propagate failure `up' also when rmdir fails.
2002-06-01 Jim Meyering <meyering@lucent.com>
* tests/rm/Makefile.am (TESTS): Add rm5.
* tests/rm/rm5: New test.
2002-05-30 Jim Meyering <meyering@lucent.com>
In interactive mode, prompt only once about an empty directory.
* src/remove.c (enum Prompt_action): Define.
(prompt): Two new parameters. Adjust all callers.
Performance.
* src/remove.c (remove_entry) [!ROOT_CAN_UNLINK_DIRS]:
Don't call rmdir here.
2002-05-29 Jim Meyering <meyering@lucent.com>
* src/remove.c (AD_pop_and_chdir): Don't use errno (it's not valid)
in diagnostic for changed dev/ino.
(remove_entry): Tweak diagnostic.
2002-05-27 Jim Meyering <meyering@lucent.com>
* src/remove.c (ROOT_CAN_UNLINK_DIRS): Define.
(AD_pop_and_chdir): Propagate status as we traverse back `up' the tree.
(DO_UNLINK, DO_RMDIR): Define.
(remove_entry) [ROOT_CAN_UNLINK_DIRS]: Add code so this works also on
systems where root can use `unlink' to remove directories.
2002-05-24 Jim Meyering <meyering@lucent.com>
* tests/mv/mv-special-1: Adapt for changed format of --verbose output.
2002-05-22 Jim Meyering <meyering@lucent.com>
* src/remove.c: Include file-type.h.
Include file type in prompt when asking whether to remove file.
Based on a patch from Paul Eggert.
* src/remove.c (prompt): Add comment.
* src/remove.c (remove_dir): Fix another (known) leak.
* tests/rm/rm3: Don't depend on order of traversal of dir entries.
It is nondeterministic on some types of filesystems.
* src/remove.c (hash_freer): New function.
(AD_mark_helper): Use it.
(AD_mark_as_unremovable): xstrdup the filename argument.
(remove_dir): Free directory name.
* src/remove.c (remove_entry): Fail also when trying to remove a
directory without the --recursive option.
Change a diagnostic, s/unlink/remove/, now that it can apply also
to a directory.
* src/remove.c (is_empty_dir): New function.
(prompt): New function, factored out of...
(remove_entry): ...here. Call it.
(remove_dir): Call prompt before rmdir.
* src/remove.c (remove_entry): Add support for prompting (e.g., -i).
* src/remove.h (UPDATE_STATUS): New macro.
Include save-cwd.h.
(struct File_spec): Remove declaration.
Update prototypes.
* src/remove.c [AD_ent] (status): New member. This lets us propagate
the status from a subdirectory to its parent via AD_pop_and_chdir.
(AD_push_initial): Set it.
(AD_push): Likewise.
(remove_cwd_entries): Change return type to enum RM_status, and
adjust all callers.
(rm): Use UPDATE_STATUS rather than open-coding it.
* src/remove.c (remove_entry): New function, factored out of...
(remove_cwd_entries): ...here, and...
(rm_1): ...here.
* src/remove.c (remove_cwd_entries): Add support for --verbose.
(remove_dir): Likewise.
(rm_1): Likewise.
2002-05-18 Jim Meyering <meyering@lucent.com>
* tests/rm/rm3: New file.
* tests/rm/rm4: New file.
* tests/rm/Makefile.am (TESTS): Add rm3 and rm4.
2002-05-17 Jim Meyering <meyering@lucent.com>
* tests/rm/rm1: New file.
* tests/rm/rm2: New file.
* tests/rm/unread2: New file.
* tests/rm/Makefile.am (TESTS): Add rm1, rm2, and unread2.
* src/remove.h (enum RM_status) [RM_NONEMPTY_DIR]: New member.
2002-05-13 Jim Meyering <meyering@lucent.com>
* src/remove.c (rm): Free cwd_state, if necessary.
2002-05-01 Jim Meyering <meyering@lucent.com>
* src/remove.c (rm_1): Remove now useless (always true)
user_specified_name parameter. Adjust sole caller.
* src/remove.c (rm): New function. This interface allows
one to remove multiple arguments at a time. This is important in
that it allows us to hide the remove_init/remove_fini functions and
the cwd_state parameter.
(rm_1): Renamed from rm.
(remove_init, remove_fini): Remove functions. Each body is now
part of `rm'.
* src/remove.h (rm): Update prototype.
2002-06-01 Jim Meyering <meyering@lucent.com>
* src/ls.c: Remove use of D_TYPE_IN_DIRENT, now that that symbol
has been renamed.
2002-05-30 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_reg): Use a temporary to avoid a warning
from gcc -W about comparison between signed and unsigned.
(copy_internal): Likewise, but use a cast.
2002-05-22 Jim Meyering <meyering@lucent.com>
* src/sys2.h (S_ISREG, S_ISDIR): Define if not already defined.
(S_TYPEISSEM, S_TYPEISSHM, S_TYPEISTMO): Likewise.
* src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
Remove definitions.
* src/sys2.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
Define here instead.
2002-04-27 Jim Meyering <meyering@lucent.com>
* src/remove.c (cycle_check): New function containing code factored
out of remove_dir. The sole difference is that upon detecting a
cycle, rm now dies unconditionally. Before, in interactive mode,
it would ask the user whether to continue.
(remove_dir): Call cycle_check.
2002-04-25 Jim Meyering <meyering@lucent.com>
Avoid new warnings from gcc.
* src/dd.c: Declare input_file and output_file to be `const'.
(skip): Declare `file' parameter to be `const', too.
Remove hash table, active_dir_map, used to detect directory cycles.
Instead, detect them lazily with just O(1) memory.
Suggestion from Andi Kleen.
* src/remove.c (is_power_of_two): New function.
(print_nth_dir, make_active_dir_ent): Remove functions.
(hash_active_dir_ent, hash_compare_active_dir_ents): Likewise.
(remove_dir): Check for cycles here, ...
(rm): ... and don't check for cycles here.
* src/remove.c (rm): Call fspec_get_full_mode here, rather than
fspec_get_filetype_mode. We want to get the dev/ino earlier, and
at the same time as when we get the file type, to avoid the risk
that an attacker would change e.g. a directory to a symlink before
we record its dev/ino.
* configure.ac (AC_CONFIG_FILES): Remove intl/Makefile.
(AM_GNU_GETTEXT): Add external arg.
* intl/: Remove directory.
* Makefile.am (SUBDIRS): Remove intl.
(DISTCLEANFILES): Remove definition.
* src/sys2.h: Remove ENABLE_NLS-related code.
(_, N_) Remove definitions.
Include "gettext.h" instead.
* src/Makefile.am (INCLUDES): Remove -I../intl.
2002-04-22 Jim Meyering <meyering@lucent.com>
* src/remove.c (rm): Call exit with EXIT_FAILURE, not `1'.
2002-04-19 Jim Meyering <meyering@lucent.com>
* tests/cp/*: Clean up.
* tests/sample-test: Use a temporary directory named
`basename $0`.tmp/$$. Create with mkdir -p.
* tests/cp/backup-1: Use better trap, etc.
* tests/mkdir/p-2: Use better trap.
* tests/mkdir/p-1: Likewise.
* tests/mkdir/concurrent-1: Likewise.
* tests/rm/deep-1: Set $tmp the new way.
* tests/rm/ir-1: Use `rm', not $RM. Use better trap.
* tests/rm/i-1: Likewise.
* tests/rm/f-1: Likewise.
* tests/sample-test: Use automatically-derived name for temporary
directory. This is more 8.3-friendly. Based on a suggestion from
Richard Dawe.
* tests/sample-test: New file.
* tests/Makefile.am (EXTRA_DIST): Add sample-test.
2002-04-17 Jim Meyering <meyering@lucent.com>
* src/touch.c (touch): Don't report errors for nonexistent files
when --no-create is in effect. Based on a patch from TAKAI Kousuke.
* tests/touch/no-create-missing: New file/test for above.
* tests/touch/Makefile.am (TESTS): Add no-create-missing.
2002-04-16 Jim Meyering <meyering@lucent.com>
* src/stat.c: Add copyright comment.
(human_fstype): Rename from print_human_fstype, and rework accordingly.
(print_statfs): Use human_fstype to honor format width on %T.
2002-04-15 Jim Meyering <meyering@lucent.com>
Handle "lld" vs "ld" printf formats the same way Bash does.
* src/stat.c: Include inttypes.h.
(PRIdMAX, PRIuMAX): Define, if not already defined.
(print_statfs): Use those macros, not the literal strings.
(print_stat): Likewise.
Suggestion from Paul Eggert.
* src/stat.c (print_human_fstype): Add missing `break;'
for `case S_MAGIC_MINIX:'.
2002-04-14 Jim Meyering <meyering@lucent.com>
* src/stat.c (statfs_secure): Define.
(print_stat): Remove another #ifdef.
(do_statfs): Likewise.
(print_statfs): Prefer/use fputs over printf.
(print_stat): Likewise.
* src/Makefile.am (bin_PROGRAMS): Add stat.
(noinst_HEADERS): Add fs.h.
* src/stat.c [HAVE_SYS_VFS_H]: Guard incluion of sys/vfs.h.
Constify many parameters.
(print_statfs): Fix typo: Use %u (to match %lu) for namelen, not %d.
(verbose_usage): Remove function. Move contents into usage.
Remove lots of #if directives involving FLASK_LINUX
[!FLASK_LINUX] (is_flask_enabled): Define.
(stat_secure, lstat_secure): Define.
(print_statfs): Remove lots of nested #if directives.
Instead, rely on support fo %llu and %lld printf formats --
but that is only temporary, since it's not porable enough.
(main): Hoist is_flask_enabled test to be done here, rather
than in each of do_stat and do_statfs for every argument.
2002-04-13 Jim Meyering <meyering@lucent.com>
* src/stat.c: Include system.h, error.h, and many other headers.
[HAVE_SYS_SYSMACROS_H]: Guard inclusion of sys/sysmacros.h.
(PROGRAM_NAME, AUTHORS): Define.
(long_options): Declare/define.
(print_human_access): Rewrite to use mode_string.
(usage): Rewrite.
(main): Use getopt_long.
(print_human_type): Call fputs once rather than calling
printf many times.
(print_human_fstype): Revamp in a similar fashion. Don't use strdup.
Declare most functions to be `static'.
2002-04-12 Jim Meyering <meyering@lucent.com>
* src/Makefile.am (LDADD): List ../lib/libfetish.a both before
and after @LIBINTL@. Thanks to Paul Eggert for the fix and to
Bruno Haible for diagnosing the problem.
* src/link.c: Include long-options.h.
[long_opts]: Remove.
(usage): Tweak --help output; use *_OPTION_DESCRIPTION macros.
(main): Don't use getopt directly. Use parse_long_options instead.
Tweak a diagnostic.
Use EXIT_FAILURE rather than a literal `1'.
* src/unlink.c: Likewise.
(main): If POSIXLY_CORRECT is set, don't recognize --help or --version,
so the program can operate on a file with one of those names.
2002-04-11 Jim Meyering <meyering@lucent.com>
New programs link and unlink.
* src/Makefile.am (bin_PROGRAMS): Add link and unlink.
* src/link.c, src/unlink.c: New files, from Debian's fileutils_4.1-10.
Written by Michael Stone.
* man/link.x: New file.
* man/unlink.x: New file.
* man/Makefile.am: Add link and unlink.
2002-04-07 Jim Meyering <meyering@lucent.com>
* tests/install/basic-1: Tweak comments to reflect reality.
* tests/cp/fail-perm: Add VERBOSE=yes support.
* tests/mv/mv-special-1: Fix typo in VERBOSE=yes handling.
Reported by Richard Dawe.
2002-03-30 Jim Meyering <meyering@lucent.com>
* Version 4.1.8.
* tests/mv/i-link-no: Use --reply=no rather than -i.
The latter depends on whether stdin is a tty and hence would
fail in some situations where --reply=no doesn't.
* src/mv.c (do_move): Correct a comment.
* src/copy.c (copy_internal): Move the block that sets `earlier_file'
down to just before the first use of that variable. Otherwise, it was
possible to make mv (and probably cp, too) malfunction when copying
hard-linked files into a directory containing at least one of the
source file names. Call forget_created everywhere thereafter where
this function returns without creating a destination file that might
subsequently be linked. Reported by Iida Yosiaki.
* src/cp-hash.c (forget_created): New function.
* src/cp-hash.h (forget_created): Prototype.
* tests/mv/i-link-no: New test for the above.
Based on an example from Iida Yosiaki.
* tests/mv/Makefile.am (TESTS): Add i-link-no.
2002-03-17 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal) [move_mode]: Give a better diagnostic,
by using errno from the failed unlink, when a cross-device `mv'
fails, e.g., because the destination cannot be unlinked.
Prompted by a report from Karl Berry.
* tests/mv/part-fail: New test for the above.
* tests/mv/Makefile.am (TESTS): Add part-fail.
2002-03-16 Jim Meyering <meyering@lucent.com>
* src/Makefile.am (datadir): Don't override $(datadir)
which might be set by --datadir and different from $(prefix)/share.
Patch from Albert Chin-A-Young.
2002-03-10 Jim Meyering <meyering@lucent.com>
* Version 4.1.7.
* src/ln.c (main): Change wording in diagnostic.
* src/cp.c (do_copy): Likewise.
* src/install.c (strip): Likewise.
Suggestions from Santiago Vila.
* Use autoconf-2.53. Regenerate dependent files.
* Makefile.maint (GZIP, BZIP2): Remove definitions.
($(my_distdir).tar.bz2): Remove rule. Now, it's built by `make dist'.
* configure.ac (AM_INIT_AUTOMAKE): Specify the required version
of automake (1.6), and options (gnits dist-bzip2), rather than...
* Makefile.am (AUTOMAKE_OPTIONS): ...here. Remove definition.
* src/copy.c (copy_reg): Don't exit upon finding a replaced file.
Instead, just skip it like the diagnostic says.
Reported by Paul Eggert.
2002-03-09 Paul Eggert <eggert@twinsun.com>
* src/copy.c (copy_reg): Use a more concise diagnostic for
reporting replaced files. This avoids a bug in the code,
which mishandled ino_t wider than long.
* src/remove.c (remove_dir): Likewise, twice.
2002-03-09 Jim Meyering <meyering@lucent.com>
* Makefile.am (EXTRA_DIST): Remove config/config.rpath,
now that automake knows about it.
2002-03-08 Jim Meyering <meyering@lucent.com>
Don't allow a malicious user to trick another user's rm process into
removing unintended files. In one scenario, if root is removing a
hierarchy that is writable by the malicious user, that user may trick
root into removing all of `/'. Reported by Wojciech Purczynski.
* src/remove.c (remove_dir): After chdir `..', call lstat to get the
dev/inode of "." and fail if they aren't the same as the old numbers.
(remove_cwd_entries): New parameter, `cwd_dev_ino'.
(remove_dir): Likewise.
(rm): Likewise.
Adjust all callers.
* src/mv.c (do_move): The first time we resort to copy/remove,
call lstat `.' to get the device/inode numbers now required for rm.
* src/rm.c (main): Call lstat `.' to get the device/inode numbers
now required for rm.
* src/remove.h (struct dev_ino): Declare new type.
(rm): Add a parameter to the prototype.
2002-03-06 Jim Meyering <meyering@lucent.com>
* Use automake-1.6. Regenerate dependent files.
2002-03-05 Jim Meyering <meyering@lucent.com>
* Makefile.am (EXTRA_DIST): Add config/config.rpath.
2002-03-04 Jim Meyering <meyering@lucent.com>
* Makefile.maint (tgz-size): Also handle a suffix of `K', since
the sizes in the output of `du -h' now look like `29K'
2002-03-03 Jim Meyering <meyering@lucent.com>
* Version 4.1.6.
2002-03-03 Paul Eggert <eggert@twinsun.com>
Make cp -r equivalent to cp -R. Add a new cp option --copy-contents
for people who want to emulate the traditional (and rarely desirable)
cp -r behavior.
* src/cp.c (COPY_CONTENTS_OPTION): New enum value.
(long_opts): Add --copy-contents.
(usage): Describe new behavior. Sort options.
(main): Implement new behavior. Remove diagnostics for -a and -r;
no longer needed.
* src/copy.c (copy_internal): Remove -r warning; no longer needed.
* NEWS: Document this.
2002-03-02 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): For each symlink copied by cp -r,
issue a warning that `cp -r' is not portable.
* src/cp.c (main): Revert change of 2001-12-29. With this change,
cp -r once again preserves symlinks.
(usage): Document the original (now-restored) behavior.
* tests/cp/r-vs-symlink: Reflect changed semantics of cp's -r option.
* src/cp.c (main): Warn when -r is specified before --archive (-a).
* src/cp.c (main): Fail when -r is specified after --archive (-a)
on the command line.
* src/copy.c (copy_reg): Detect abuse of a race condition
whereby an unprivileged user could gain read access to otherwise-
inaccessible files when root uses cp or mv to copy a hierarchy
belonging to that user.
2002-02-27 Paul Eggert <eggert@twinsun.com>
* src/ls.c (decode_switches, usage): Add --time-style=+FORMAT.
* doc/coreutils.texi (Formatting file timestamps): Document it.
2002-02-25 Paul Eggert <eggert@twinsun.com>
Add ACL support to 'ls' for HP-UX and Unixware, and try to
establish a framework for adding it for other hosts.
This builds on a suggestion of Andreas Gruenbacher.
* lib/Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
* lib/acl.h, lib/acl.c, m4/acl.m4: New files.
* m4/jm-macros.m4 (jm_MACROS): Require AC_FUNC_ACL.
Do not check for acl or sys/acl.h, as AC_FUNC_ACL does that now.
* src/ls.c: Include "acl.h" rather than <sys/acl.h>.
(USE_ACL): Remove; replaced by HAVE_ACL everywhere.
(gobble_file): Use file_has_acl rather than doing it ourselves.
2002-02-20 Jim Meyering <meyering@lucent.com>
* src/touch.c: Include posixver.h.
(usage): Document only the intersection of the old and new behaviors,
to encourage portability.
(main): Use `posix2_version ()' in place of POSIX2_VERSION.
2002-02-17 Jim Meyering <meyering@lucent.com>
* ABOUT-NLS, intl/*: Update to Gettext 0.11.
* INSTALL: Update to Autoconf 2.52h.
* src/Makefile.am (datadir): Use `share' in place of @DATADIRNAME@,
per Gettext-0.11.
(LDADD): Use @LIBINTL@ instead of @INTLLIBS@, per Gettext-0.11.
* configure.ac (AC_CONFIG_AUX_DIR): New macro invocation.
(ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11.
* config: New subdirectory, containing the following files from .:
config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs.
Move the following files here from doc: texinfo.tex, mdate-sh.
2002-02-16 Jim Meyering <meyering@lucent.com>
* tests/ls/infloop: Use `head -n 7', not `head -7'.
* tests/rm/hash: Likewise.
2002-02-10 Jim Meyering <meyering@lucent.com>
* configure.in (ALL_LINGUAS): Add Hungarian (hu).
2002-02-02 Jim Meyering <meyering@lucent.com>
* src/shred.c: (VERBOSE_UPDATE): Update every 5 seconds, not every 10.
(wipename): Quote file names only when necessary.
(main): Copy quoted string into malloc'd storage so it doesn't
get clobbered when using -u and --verbose.
Minor clean-up.
* src/shred.c:
Use `NULL' rather than `(time_t *) 0'.
(dopass): Use STREQ in place of strcmp.
Add parentheses around use of nested ternary operator.
2002-01-15 Paul Eggert <eggert@twinsun.com>
* src/shred.c (VERBOSE_UPDATE): Now counts seconds, not bytes.
(dopass): If verbose, output a line every VERBOSE_UPDATE seconds,
and suppress duplicate output lines. Output a percentage as well
as a count of bytes.
Also, fix comment/code typo regarding how many bytes have been
written; this typo was harmless before, but is no longer harmless with
the above change in effect.
2002-02-02 Jim Meyering <meyering@lucent.com>
* src/remove.c (rm): Add a comment.
2002-01-28 Jim Meyering <meyering@lucent.com>
* Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5d.
* configure.ac (AM_INIT_AUTOMAKE): Use zero-arg form of this macro.
2002-01-21 Jim Meyering <meyering@lucent.com>
* po/POTFILES.in: Add lib/xmemcoll.c
* src/chown-core.c: Don't include "xalloc.h", as system.h already
does that via sys2.h.
* src/ls.c: Likewise.
* src/shred.c: Likewise.
2002-01-20 Paul Eggert <eggert@twinsun.com>
* src/ls.c: Avoid undefined behavior when strcoll fails,
by resorting the directory with strcmp instead.
Include <setjmp.h>.
Include "quote.h".
(compare_atime, rev_cmp_atime, compare_ctime, rev_cmp_ctime,
compare_mtime, rev_cmp_mtime, compare_size, rev_comp_size,
compare_name, rev_cmp_name, compare_extension, rev_cmp_extension,
compare_version, rev_compare_version): Move before use, so that
we can remove the forward declaration. Reimplement in terms of
the new functions described below, using xstrcoll instead of strcoll.
(failed_strcoll): New var.
(xstrcoll): New function.
(V): New type.
(cmp_ctime, compstr_ctime, rev_str_ctime): New functions.
(cmp_mtime, compstr_mtime, rev_str_mtime): Likewise.
(cmp_atime, compstr_atime, rev_str_atime): Likewise.
(cmp_size, compstr_size, rev_str_size): Likewise.
(cmp_version): Likewise.
(cmp_name, compstr_name, rev_str_name): Likewise.
(cmp_extension, compstr_extension, rev_str_extension): Likewise.
(sort_files): Use prototype for internal function var.
If the strcoll-based comparison fails, fall back on a strcmp-based one.
2002-01-19 Jim Meyering <meyering@lucent.com>
Ensure that the two version numbers in configure.ac remain in sync.
* Makefile.maint (local-check): Depend on ac-check.
(ac_p_pkg, AC_INIT_PKG): Define.
(ac_p_ver, AC_INIT_VER): Define.
(ac-check): New rule.
2002-01-19 Jim Meyering <meyering@lucent.com>
* configure.ac: Remove code that set LIBOBJS in support of ansi2knr.
The latest version of autoconf objected to it, and besides, I don't
care too much about K&R support these days.
2002-01-14 Paul Eggert <eggert@twinsun.com>
* src/touch.c (main): Issue a warning for obsolete usage, unless
POSIXLY_CORRECT.
2002-01-14 Paul Eggert <eggert@twinsun.com>
Add support for POSIX 1003.1-2001, which requires removal for
support of the obsolete `touch [-acm] MMDDhhmm[YY] FILE...' syntax.
* NEWS: Document this.
* src/touch.c (usage, main): Implement this.
2002-01-12 Jim Meyering <meyering@lucent.com>
Avoid giving a misleading diagnostic in some unusual cases.
Instead, give one that makes sense.
* src/copy.c (copy_reg): Don't treat errno==ENOENT as a special case.
(same_file_ok): Detect a case that would have lead to the errno==ENOENT
condition above (and a misleading diagnostic), and return 0 so we give
a diagnostic about the source and destination being the same file.
(copy_internal): Use an explicit test for errno==EXDEV to detect
that rename has failed because source and destination are on
different devices. This reverts part of a change from 1997-12-13,
and is to avoid letting a race condition evoke a bogus diagnostic.
Note that while POSIX has encouraged the errno==EXDEV test for
years, it was inadequate back in 1997. I'm hoping that many
more systems have conforming support these days.
Reported by Michael Gaughen <mgaughen@polyserve.com>
* src/shred.c (usage): Also mention Ext3.
Suggestion from Göran Uddeborg.
2002-01-06 Bruno Haible <bruno@clisp.org>
* src/ls.c (long_time_format): Extend translator comments.
2002-01-05 Jim Meyering <meyering@lucent.com>
* Version 4.1.5.
2001-12-29 Jim Meyering <meyering@lucent.com>
* src/cp.c (main): With -r, always dereference symlinks.
Reported by Christian Harkort. Patch by Chris J. Bednar.
* tests/cp/r-vs-symlink: New file to test for the above fix.
* tests/cp/Makefile.am (TESTS): Add r-vs-symlink.
2001-12-21 Jim Meyering <meyering@lucent.com>
* src/shred.c [!HAVE_CONFIG_H]: Remove cpp block that duplicated
code in lib/ in order to facilitate compiling this program without
config.h.
2001-12-19 Paul Eggert <eggert@twinsun.com>
* src/shred.c: Add FSF copyright notice.
2001-12-18 Paul Eggert <eggert@twinsun.com>
Use notation compatible with SI and with IEC 60027-2.
For example, --block-size=1MB now means --block-size=1000000,
whereas --block-size=1MiB now means --block-size=1048576.
A trailing `B' now means decimal, not binary; this is a silent change.
-H or --si now outputs the trailing 'B', for consistency with this.
Programs now output trailing 'K' (not 'k') to mean 1024.
New df, du short option -B is short for --block-size.
You can omit an integer `1' before a block size suffix,
e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
* NEWS, doc/coreutils.texi: Document this. Remove documentation
for obsolescent constructs MD, --kilobytes, -m or --megabytes.
* src/dd.c (usage, parse_integer): Prefer K to k for 1024.
* src/shred.c (usage, main): Likewise.
* src/shred.c (xstrtoumax): If there is no number but there
is a valid suffix, assume 1. "MB" now means decimal, "MiB" binary.
Accept 'K' as well as 'k'.
* src/dd.c (usage): MD -> MB for decimal.
* src/df.c (BLOCK_SIZE_OPTION): Remove; no longer needed now that
we have 'B'.
(long_options, usage, main): Add -B.
(usage): Deprecate --kilobytes, -m, --megabytes.
Document size suffixes.
* src/du.c: Likewise.
* src/ls.c (usage): Deprecate --kilobytes. Document size suffixes.
* src/df.c (print_header, show_dev): Enlarge column widths for
trailing "B".
2001-12-17 Jim Meyering <meyering@lucent.com>
* Makefile.maint (real_dir): Remove unused variable.
(url_dir_list): Don't set define it here, but...
* Makefile.cfg (url_dir_list): ...define it here instead.
(hosts, a_host, b_host): Remove now-unused variables.
(alpha_subdir, a_url_dir, b_url_dir): Remove now-unused variables.
2001-12-15 Jim Meyering <meyering@lucent.com>
* Version 4.1.4.
* tests/touch/fail-diag: Also accept SunOS4's `Not owner' diagnostic.
Reported by Volker Borchert.
* tests/help-version: Fail also if ./$i --version fails.
Run each --help and --version test with a few different settings
of LC_MESSAGES. Prompted by a report from Nelson Beebe.
2001-12-11 Jim Meyering <meyering@lucent.com>
Include the word `fail' in some diagnostics to make it clearer
that they indicate a failure.
* src/chgrp.c (main): s/getting attributes/failed to get attributes/.
* src/chmod.c (change_file_mode, main): Likewise.
* src/chown-core.c (change_file_owner): Likewise.
* src/chown.c (main): Likewise.
* src/cp.c (re_protect): Likewise.
* src/touch.c (touch, main):Likewise.
Suggestion from Karl Berry.
2001-12-10 Jim Meyering <meyering@lucent.com>
* src/dd.c (buggy_lseek_support): Remove function.
(skip_via_lseek) [__linux__]: New function.
(skip): Use skip_via_lseek, not buggy_lseek_support.
Based on an outline from Paul Eggert.
2001-12-09 Jim Meyering <meyering@lucent.com>
* configure.in (ALL_LINGUAS): Add Estonian (et).
2001-12-08 Jim Meyering <meyering@lucent.com>
* Makefile.cfg (wget_files): Remove ansi2knr.c, since it's
no longer available at that location.
2001-12-04 Jim Meyering <meyering@lucent.com>
* tests/chgrp/basic: Don't use diff's -u option. It's not portable.
Besides, with GNU diff one can use the DIFF_OPTIONS envvar.
* tests/ls/no-arg: Likewise.
* tests/ls/recursive: Likewise.
* tests/ls/rt-1: Likewise.
2001-12-02 Jim Meyering <meyering@lucent.com>
* Version 4.1.3.
* src/sys2.h (HELP_OPTION_DESCRIPTION): New macro.
(VERSION_OPTION_DESCRIPTION): New macro.
* src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c,
* src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c,
* src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, src/rm.c,
* src/rmdir.c, src/shred.c, src/stat.c, src/sync.c, src/touch.c (usage):
Use new macros, HELP_OPTION_DESCRIPTION and VERSION_OPTION_DESCRIPTION
instead of hard-coding --help and --version descriptions.
* POTFILES.in: Add src/sys2.h.
* src/touch.c (touch): Extend the change of 2001-09-15 to work on
systems for which errno is set to EPERM in that case. Thus, e.g.,
`touch /' by non-root gives a better diagnostic on systems like SunOS4.
Reported by Volker Borchert.
Don't emulate dd's skip=N for *all* character devices; lseek works
just fine on non-tape character devices like /dev/mem and /dev/kmem.
* src/dd.c (buggy_lseek_support) [__linux__]: Emulate `skip=N'
behavior using reads, not lseek for Linux tape devices (major == 9).
Kernel lseek support for tapes is broken, up to and including
linux-2.4.16. Reported by Herbert Xu.
2001-11-27 Jim Meyering <meyering@lucent.com>
* tests/ls/rt-1: Compare all lines of output.
Update code to use `trap' and more up to date infrastructure.
The change of 2001-11-01 introduced a bug whereby some recursive
listings didn't have a blank line between per-directory groups of files.
* src/ls.c (print_dir): Print a newline before each directory name
except the first one, rather than after each except the last, since
now (after the changes of 2001-11-01) detecting whether a `pending*'
is the last would involve more work. Reported by Andreas Schwab.
* tests/ls/recursive: New file. Test for the above.
* tests/ls/Makefile.am (TESTS): Add recursive.
This change has no net effect.
* src/ls.c (main): Remove always-true conjunct and add a comment.
2001-11-26 Jim Meyering <meyering@lucent.com>
* src/shred.c: Don't include "gtod.h"
(main): Don't `call' GETTIMEOFDAY_INIT.
* src/ls.c: Likewise.
2001-11-24 Jim Meyering <meyering@lucent.com>
* Makefile.maint: Include signatures for the xdelta file, too.
* Makefile.maint (emit-upload-commands): Rename from
emit-rsync-commands.
Output only the package name and the prev and current version numbers.
* Version 4.1.2.
* src/sync.c (usage): Make --help and --version strings
start in column 7.
* Makefile.cfg (move_if_change): Remove definition.
($(srcdir)/m4/jm-glibc-io.m4): Use mv, not move-if-change.
2001-11-23 Jim Meyering <meyering@lucent.com>
* cp.c, df.c, du.c, install.c, ln.c, ls.c, mkdir.c (usage):
* mkfifo.c, mknod.c, mv.c, shred.c, touch.c (usage):
Note that ``Mandatory arguments to long options are mandatory
for short options too.''
* src/shred.c (usage): Use `output', not `print' in description of
the --version option, so this message is consistent with all the rest.
* chgrp.c, chmod.c, chown.c, cp.c, dd.c, df.c, dircolors.c (usage):
* du.c, install.c, ln.c, ls.c, rm.c, rmdir.c, shred.c, touch.c (usage):
Split --help output into smaller pieces.
Use fputs, not printf.
* src/cp-hash.c: Use opaque type, Hash_table, not `struct hash_table'.
* src/du.c: Likewise.
* src/remove.c: Likewise.
2001-11-22 Jim Meyering <meyering@lucent.com>
Don't fail for commands like this: cp a a d/
This change in behavior was introduced in 4.1.1, as part of the
2001-09-28 change. cp and mv still fail for commands like this:
rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
* src/copy.c (triple_hash_no_name): New function.
(src_info_init): New function.
(copy_internal): Warn and return early for the second and subsequent
occurrences of the same source file named on the command line.
* src/copy.h (struct cp_options) [src_info]: New member.
* src/install.c (cp_option_init): Initialize new member.
* src/mv.c (cp_option_init): Likewise.
* src/cp.c (cp_option_init): Likewise.
(do_copy): Call src_info_init.
* tests/mv/dup-source: New test for the above.
* tests/mv/Makefile.am (TESTS): Add dup-source.
* src/copy.c (seen_file): Change type of `stats' parameter to pointer.
(copy_internal): Update caller.
* src/copy.c (struct F_triple): Rename from dest_info.
(seen_file): Rename from seen_dest. Rename parameters accordingly.
(record_file): Rename from record_dest. Rename parameters accordingly.
(triple_hash): Rename from dest_info_hash.
(triple_compare): Rename from dest_info_compare.
(triple_free): Rename from dest_info_free.
* src/mknod.c (main): Add a literal format string to suppress
a warning from gcc's -Wformat-security.
copy.c shouldn't maintain static state.
* src/copy.c (dest_info): Remove declaration of file-scoped global.
(dest_info_init): Require a parameter.
Update all callers.
(seen_dest): Require a hash table parameter. Update callers.
(record_dest): Likewise.
* src/copy.h: Include hash.h.
(struct cp_options) [dest_info]: New member.
* src/install.c (cp_option_init): Initialize new member.
* src/mv.c (cp_option_init): Likewise.
* src/cp.c (cp_option_init): Likewise.
(do_copy): Remove const attribute from declaration of parameter, x.
2001-11-17 Jim Meyering <meyering@lucent.com>
* tests/chmod/equals: New test for the just-fixed bug in
lib/modechange.c.
* tests/chmod/Makefile.am (TESTS): Add equals.
* configure.ac: Replace use of the one-arg form of AC_INIT
with a use of the 3-arg form and a use of AC_CONFIG_SRCDIR.
2001-11-12 Jim Meyering <meyering@lucent.com>
* tests/rm/r-3: Clean up.
2001-11-09 Jim Meyering <meyering@lucent.com>
* configure.ac: Use AC_CONFIG_FILES(...) and call AC_OUTPUT with no
arguments.
2001-11-06 Jim Meyering <meyering@lucent.com>
* src/dircolors.hin: Remove duplicate entry for .png.
Reported by Frédéric L. W. Meunier.
2001-11-03 Jim Meyering <meyering@lucent.com>
* Version 4.1.1.
* src/ls.c (DEV_INO_PUSH): Avoid unnecessary copies.
(dev_ino_pop): Likewise.
2001-11-02 Jim Meyering <meyering@lucent.com>
* src/ls.c: Rename global: s/trace_dirs/recursive/.
(extract_dirs_from_files): Rename parameter:
s/recursive/ignore_dot_and_dot_dot/.
* src/ls.c: (dev_ino_pop): Cast 2nd arg of obstack_blank to `int'
before negating to avoid warning from gcc on systems with 64-bit size_t.
* src/ls.c: Use XMALLOC and XREALLOC in a several places. It's cleaner.
2001-11-01 Jim Meyering <meyering@lucent.com>
* src/ls.c: Include dirfd.h.
(print_dir): If dirfd fails, resort to using stat.
* tests/ls/infloop: Redirect cmp's stderr to /dev/null.
* src/ls.c (struct pending) [st_ino, st_dev]: Remove members.
(queue_directory): Remove just-added 3rd parameter
and associated code, and update callers.
(print_dir): Get dev/inode pair via `fstat (dirfd (reading), ...',
and call visit_dir to detect cycles here.
Push the dev/inode pair onto the new stack.
(dev_ino_obstack): New global.
(DEV_INO_PUSH): New macro.
(dev_ino_pop): New function.
(ASSERT_MATCHING_DEV_INO): New macro.
(visit_dir): Take two parameters (dev,ino), not one `pending'.
(main): Initialized the dev_ino_obstack.
Don't call visit_dir here.
Get the dev/ino pair from the new stack, not from the pending entry.
Make ls -R detect directory cycles.
Add loop detection without incurring an additional stat call per
directory processed. To detect loops efficiently (i.e., time: +O(1)
per directory processed by ls -R, total additional space:
O(max-tree-depth)), record the dev/ino of each `active' directory
in a hash table. To know when a directory is no longer active,
insert a marker (name == NULL) entry for it in the pending queue.
When a marker comes to the front of the queue, that directory is no
longer active, and must be removed from the hash table. To remove it,
we need to know its dev/ino again. Since by the time a directory
has become inactive its files[] info is long gone and it's DIR*
is closed, I must either save the dev/ino someplace (pending seemed
logical) or recompute them via stat.
The following change will convert to using a stack of dev/ino pairs
instead, pushing an entry when doing the opendir (use fstat on
dirfd (reading)), and popping (when encountering a marker) to get
the dev/ino pair to be removed from the hash table.
* src/ls.c: Include hash.h, same.h, and xalloc.h.
(INITIAL_TABLE_SIZE, LOOP_DETECT): Define.
(active_dir_set): New global.
(struct dev_ino): Declare.
(dev_ino_hash, dev_ino_compare, dev_ino_free): New functions.
(visit_dir, free_pending_ent): New functions.
(main): Initialize the active_dir_set hash table, if necessary.
Don't confuse a marker entry with a real one.
Detect loops.
Manage the set of active directories.
Free the hash table.
(queue_directory): Add a new parameter.
Ensure that we set the new dev/ino members for each enqueued directory.
Update all callers.
(print_dir): Don't confuse a marker entry with a real one.
(extract_dirs_from_files): Insert a marker entry before inserting
the entries for subdirectories.
Don't try to print a NULL pointer.
* src/ls.c (main): Don't use ARGMATCH_TO_ARGUMENT.
This reverts part of the 1998-12-31 change.
* tests/ls/dired: New test, for the above.
* tests/ls/Makefile.am (TESTS): Add dired.
2001-10-24 Jim Meyering <meyering@lucent.com>
* src/cp.c (main): Free hash table storage.
* src/cp-hash.c (forget_all): Use hash_free, not hash_clear.
2001-10-22 Paul Eggert <eggert@twinsun.com>
* src/sys2.h (alloca): Define to __builtin_alloca if __GNUC__,
to avoid a warning if -Wall.
2001-10-21 Paul Eggert <eggert@twinsun.com>
* src/dd.c: Remove as many instances of 'unsigned' as
possible, as some of them were not conforming to ANSI C, and
they made the code hard to read. Avoiding 'unsigned' cuts
down on the number of casts.
(newline_character, space_character, save_char):
Now char, not unsigned char.
(obuf): Now char *, not unsigned char *.
(ascii_to_ebcdic, ascii_to_ibm, ebcdic_to_ascii):
Now char[], not unsigned char[].
(translate_charset, translate_buffer, swab_buffer, skip, copy_simple,
copy_with_block, copy_with_unblock):
Arg now points to char, not unsigned char.
All callers changed.
(translate_charset, parse_conversion, apply_translations):
Use int index, not unsigned int.
(bit_count): Arg is now int, not unsigned int.
Callers not changed, as they already assumed this.
(translate_buffer): Cast char to unsigned char before using
it as a subscript.
(swab_buffer): Returns char *, not unsigned char *.
(dd_copy): Use char, not unsigned char, for buffers.
Use size_t for possibly-large index, not unsigned int.
2001-10-21 Jim Meyering <meyering@lucent.com>
* src/shred.c (isaac_seed_machdep): Handle SIGSEGV, too. Ick.
* tests/mv/Makefile.am (TESTS): Remove i-3. It's not portable.
* src/copy.c: Include xreadlink.h.
(copy_internal): Don't use PATH_MAX.
Rewrite the symlink-copying code to use xreadlink.
2001-10-20 Jim Meyering <meyering@lucent.com>
* src/touch.c (touch): Extend last change to work on systems
for which errno is set to EINVAL.
* src/ls.c: Declare some local variables to be `const', where
appropriate.
(usage): Improve the description of --dereference (-L).
* src/rm.c (usage): Clarify description of --directory (-d).
Based on a patch from Michael Stone.
* man/chmod.x: Describe sticky files and directories.
From Michael Stone.
* tests/mv/partition-perm: Don't use a umask that removes owner
read/write. Use a stricter test for permissions.
* tests/cp/link-preserve: Don't use a umask that removes owner
read/write. That would induce spurious failures in a probably-
outdated version of purify.
2001-10-18 Jim Meyering <meyering@lucent.com>
* src/mv.c (movefile): Now that remember_copied xstrdup's the file
name, free `new_dest'.
Plug a leak.
* src/cp-hash.c (remember_copied): Use src_to_dest_free to free
the entry we couldn't insert.
Don't use free'd memory.
* src/copy.c (dest_info_free): New function.
(dest_info_init): Make the hash table code use it.
(record_dest): Store each DEST in malloc'd memory. Hence the above.
Use dest_info_free to free the `ent' we couldn't insert.
2001-10-14 Jim Meyering <meyering@lucent.com>
Now, -P is the same as --no-dereference, per POSIX.
Use --parents to get the old meaning.
* src/cp.c (enum) [NO_DEREFERENCE_OPTION]: Remove member.
(long_opts): Associate --no-dereference with `-P'.
(usage): Update description of -P.
(main): Remove local, used_P_option, and code to warn
that the meaning of -P would be changing.
2001-10-13 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Tighten up and add comments
describing the test for when to record (via remember_copied)
a <dst_path, source_dev, source_ino> triple.
Relax the test that guards the hard-linked-dir check and
the hard-link-preserving code.
Remove the link-preserving semantics from cp_options.dereference.
Clean up the code that preserves links for `cp -d' and `mv'.
Introduce new options:
--preserve[={mode,ownership,timestamps,links,all}]
--no-preserve={mode,ownership,timestamps,links,all}
-p and --preserve remain unchanged and are equivalent to
`--preserve=mode,ownership,timestamps'
* src/cp.c (enum) [NO_DEREFERENCE_OPTION]: New member.
(enum) [NO_PRESERVE_ATTRIBUTES_OPTION]: New member.
(enum) [PRESERVE_ATTRIBUTES_OPTION]: New member.
(long_opts): Separate -d and --no-dereference options.
Add `no-preserve'.
Separate -p and --preserve options.
The long-named --preserve now accepts optional arguments; -p doesn't.
(usage): Describe additions and changes.
(cp_option_init): Initialize new member, preserve_links, to 0.
(decode_preserve_arg): New function.
(main) [case 'a']: Set preserve_links to 1.
[case 'd']: Set preserve_links to 1.
Add `case' for long-named --no-dereference.
Handle long-named --no-preserve and --preserve.
* src/copy.h (enum Dereference_symlink): Add comments.
(struct cp_options) [preserve_links]: New member.
* src/install.c (cp_option_init): Initialize new member to 0.
* src/mv.c (cp_option_init): Initialize new member to 1.
* tests/cp/link-preserve: Add tests for some of the above.
2001-10-13 Jim Meyering <meyering@lucent.com>
* src/copy.h (struct cp_options) [failed_unlink_is_fatal]: Remove
unused member.
* src/mv.c (cp_option_init): Don't set it.
* src/cp.c (cp_option_init): Likewise.
* src/install.c (cp_option_init): Likewise.
* src/copy.h (struct cp_options): Rename members:
s/preserve_owner_and_group/preserve_ownership/, and
s/preserve_chmod_bits/preserve_mode/.
* src/copy.c, src/cp.c, src/install.c, src/mv.c: Update all uses.
* man/chown.x: Fix typo: s/Sh/SH/ before OPTIONS.
Reported by Eric S. Raymond.
2001-10-12 Jim Meyering <meyering@lucent.com>
* tests/ls/Makefile.am (TESTS): Add infloop.
(XFAIL_TESTS): Mark it as a test that we expect to fail (temporarily).
* tests/ls/infloop: New file.
2001-10-11 Jim Meyering <meyering@lucent.com>
* src/mknod.c (main): Tell what's wrong with `mknod c zero 1 5' rather
than saying just `Try `./mknod --help' for more information.'.
Suggestion from Karl Berry.
2001-10-07 Jim Meyering <meyering@lucent.com>
* TODO: Remove items relating to cp-hash.c, now that they're done.
Allow cp -d (and mv when it resorts to copying) to preserve
hard links that span command line arguments.
* src/cp.c (do_copy): Don't clear the hash table after processing
each command line argument.
* tests/cp/link-preserve: New test for the above.
* tests/cp/Makefile.am (TESTS): Add link-preserve.
* src/cp-hash.c (remember_copied): Make a local copy of the file name.
(src_to_dest_free): New function (to free the above).
(hash_init): Register src_to_dest_free.
* src/copy.c (copy_dir): Now that remember_copied copies the
file name, free the temporary `dst_path' allocated here.
2001-10-06 Jim Meyering <meyering@lucent.com>
Convert du.c to use the functions in lib/hash.c, not private,
slightly-modified copies of those that used to be in cp-hash.c.
* src/du.c (struct entry) [coll_link]: Remove member.
(struct htab): Remove.
(hash_reset, hash_init, hash_insert2, hash_insert): Remove functions.
* src/du.c: Include hash.h and same.h.
(htab): Change type of global to `struct hash';
(entry_hash, entry_compare, hash_ins): New functions.
(count_entry): Use hash_ins instead of hash_insert.
2001-10-06 Jim Meyering <meyering@lucent.com>
Rewrite cp-hash.c to use the functions in lib/hash.c.
* src/cp-hash.c (hash_init): Die if hash_initialize fails.
* src/cp-hash.c: Rewrite to use the functions in lib/hash.c.
* src/cp-hash.h: Update prototype for hash_init.
* src/mv.c (do_move): Reflect that hash_init now takes no arguments.
* src/install.c (main): Likewise.
* src/cp.c (main): Likewise.
2001-10-06 Jim Meyering <meyering@lucent.com>
* src/copy.c (record_dest): Avoid a small leak.
2001-10-06 Jim Meyering <meyering@lucent.com>
This decreases the memory footprint a little, when copying
hierarchies containing many files.
* src/copy.c (copy_internal): Call remember_copied only if
the source file has 1 < st_nlink, or if it's a directory.
Now that EARLIER_FILE is set conditionally, initialize it to NULL.
* tests/mv/childproof: Redirect stderr on one test.
2001-10-05 Jim Meyering <meyering@lucent.com>
* src/copy.c: Include hash-pjw.h and remove definition of hash_pjw.
* src/remove.c: Likewise.
2001-10-01 Jim Meyering <meyering@lucent.com>
* src/remove.c (hash_pjw): Remove function.
* src/copy.c: Likewise.
2001-09-29 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Call record_dest for all types of
files (for which this makes sense), not just regular ones.
* mkinstalldirs: Update from master.
* Makefile.maint (wget-update): Add mkinstalldirs.
2001-09-28 Jim Meyering <meyering@lucent.com>
This mv command should fail (likewise for cp), rather than
silently clobbering one of the source files.
rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
Reported by Dan Jacobson.
* src/cp.c (do_copy): Call dest_info_init if necessary.
* src/install.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/copy.h (dest_info_init): Declare.
* src/copy.c: Include "hash.h" and "same.h".
(struct Dest_info): Define.
(dest_info): Declare global.
(DEST_INFO_INITIAL_CAPACITY): Define.
(hash_pjw): New function.
(dest_info_hash): Likewise.
(dest_info_compare): Likewise.
(dest_info_init): Likewise.
(seen_dest): Likewise.
(record_dest): Likewise.
(copy_internal): If the destination exists, fail if it's in the set
of files that have already been created as part of this mv or cp.
(copy_internal) [move_mode]: Record the destination dev/ino/filename.
(copy_internal) [!move_mode, regular file]: Likewise.
Accept new option: --reply={yes,no,query}
* src/cp.c: (enum) [REPLY_OPTION]: Define.
(usage): Describe new option.
Split long usage string into smaller pieces.
(main): Handle new option.
* missing: Update from master.
* config.guess: Likewise.
* config.sub: Likewise.
* configure.ac: Tell automake to use the file name `config.hin'
rather than the two-`.' config.h.in.
2001-09-26 Jim Meyering <meyering@lucent.com>
* man/Makefile.am (common_dep): s/configure.in/configure.ac/.
* configure.ac: Renamed from configure.in.
* INSTALL, mkinstalldirs: Update to autoconf 2.50 version.
2001-09-23 Jim Meyering <meyering@lucent.com>
* tests/mv/childproof: New test, for the above fix.
Based on a report from Dan Jacobson.
* tests/mv/Makefile.am (TESTS): Add childproof.
* Makefile.am (SUBDIRS): When using newer gettext (in which
intl/libintl.h is created by rules intl/Makefile)
`intl' must precede `lib'.
2001-09-22 Jim Meyering <meyering@lucent.com>
Mostly clean-up (modulo the better diagnostic).
* src/copy.c (copy_internal): Rename parameter, move_mode, to
command_line_arg, and adjust caller. Now, move_mode is a local
that is derived from command_line_arg.
Factor some involved code to produce something slightly more readable.
Use x->move_mode, not move_mode in determining which diagnostic
to give (`backing up %s would destroy source; %s not moved').
2001-09-16 Paul Eggert <eggert@twinsun.com>
* src/ls.c (usage): Fix typo in -g usage.
-H now means --dereference-command-line.
2001-09-16 Jim Meyering <meyering@lucent.com>
* Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5.
* man/Makefile.am (*.1): Depend on *source* files, not binaries.
(.x.1): Add code to work around ginstall vs. install exception.
* man/Makefile.am (dist_man_MANS): Use dist_man_MANS, not man_MANS.
2001-09-15 Jim Meyering <meyering@lucent.com>
Convert to a more conventional (e.g., like autoconf) Makefile.am.
* man/Makefile.am: Remove hacks.
* man/GNUmakefile: Remove file.
* man/Makefile.summ: Remove file.
* man/Makefile.maint: Remove file.
* man/ginstall.x: Remove. Renamed to ...
* man/install.x: ... this. New file.
Michael Stone reported that man pages weren't built in non-srcdir build.
* src/touch.c (EISDIR): Define to 0, if not already defined.
(touch): Give a better diagnostic for e.g., `touch /' by non-root.
Based on a patch from Michael Stone.
Reported by Jeff Sheinberg as Debian bug #101677.
* tests/touch/fail-diag: New test, for the above fix.
* tests/touch/Makefile.am (TESTS): Add fail-diag.
* src/copy.c (copy_internal) [move_mode]: Support the new
--reply=... option.
(UNWRITABLE): Define (factored out of copy_internal).
(copy_internal): Use UNWRITABLE.
Accept new option: --reply={yes,no,query}
* src/mv.c: Include argmatch.h.
(enum) [REPLY_OPTION]: Define.
(usage): Describe new option.
Split long usage string into smaller pieces.
(main): Handle new option.
* src/cp.c (main): Reflect renaming: s/I_ON/I_ASK_USER/.
* src/copy.h (enum Interactive): Remove members, I_OFF and I_ON.
Instead, add I_ALWAYS_YES, I_ALWAYS_NO, and I_ASK_USER.
* tests/mv/i-2: Clean up: use priv-check rather than open-coding it.
2001-05-11 Paul Eggert <eggert@twinsun.com>
* src/chmod.c, src/chown.c, src/mkdir.c, src/rm.c, src/rmdir.c (main):
Don't strip trailing slashes; POSIX doesn't allow it here.
Don't include "dirname.h" when no longer needed.
2001-09-08 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Add braces around now-multi-stmt
if-block. This fixes a bug introduced by my 2001-08-06 change.
* tests/mv/i-4: New test, for the above.
* tests/mv/Makefile.am (TESTS): Add i-4.
2001-09-04 Paul Eggert <eggert@twinsun.com>
* src/ls.c (get_link_name): Update use of xreadlink.
2001-09-02 Jim Meyering <meyering@lucent.com>
* tests/priv-check: Change usage not to use $1.
That's not portable to e.g., Solaris2.6's /bin/sh.
Communicate via an envvar instead.
* tests/mv/i-3: Don't pass an argument to a sourced script.
* tests/cp/special-bits: Likewise.
* tests/chown/basic: Likewise.
* Makefile.maint (alpha): Depend on local-check so that they run
a little earlier.
2001-09-01 Jim Meyering <meyering@lucent.com>
* src/df.c (show_point): Use canonicalize_file_name, if possible.
[HAVE_RESOLVEPATH], [!HAVE_RESOLVEPATH]: Use malloc, not alloca,
so that these two paths also produce `resolved' in malloc'd storage.
Free that memory when done with it.
* src/ls.c: Include "xreadlink.h".
(get_link_name): Don't use PATH_MAX.
Rewrite to use xreadlink.
2001-08-30 Paul Eggert <eggert@twinsun.com>
* src/chgrp.c: Do not include savedir.h; not used.
* src/chown.c: Likewise.
* src/chmod.c (change_dir_mode): Remove statp arg; no longer needed.
* src/chown-core.c (change_dir_owner): Likewise.
* src/du.c (count_entry): Remove st_size argument.
* src/copy.c (copy_dir): Likewise.
2001-08-30 Paul Eggert <eggert@twinsun.com>
* src/copy.c: Include full-write.h.
* src/dd.c: Likewise.
* src/copy.c (full_write): Remove decl; not needed.
* src/dd.c: Likewise.
* src/install.c: Likewise.
* src/mv.c: Likewise.
* src/copy.c (copy_reg):
Don't assume read and write size fits in int.
* src/dd.c (open_fd): Likewise.
2001-08-30 Paul Eggert <eggert@twinsun.com>
* src/remove.c (bool): Remove; moved to...
* src/system.h: ...here.
* src/du.c (count_entry, main): Reflect changes to the
exclude functions.
2001-08-13 Jim Meyering <meyering@lucent.com>
* src/cp.c, src/dd.c, src/ln.c, src/ls.c, src/mv.c (AUTHORS): Mark
string for translation, since it contains the English word `and'.
* Makefile.maint (author_mark_check): New rule.
(local-check): Depend on it.
Change the rules governing when mv prompts before removing an
existing destination file so it is consistent with POSIX:
Now, in the absence of --force (-f), if stdin is a tty and an
existing destination is not writable mv will prompt before
overwriting the destination file.
Reported by Vin Shelton.
* src/copy.c (overwrite_prompt): New function.
(copy_internal): Separate the mv-specific and non-move_mode code
that determines whether to prompt the user.
[move_mode]: Don't make mv fail (i.e. don't return 1) just because
the user declined to remove one or more of the files.
* src/copy.h (enum Interactive): New type.
(struct cp_options) [interactive]: Change type to Interactive.
(struct cp_options) [stdin_tty]: New member.
* src/cp.c (cp_option_init): Adjust initialization of `interactive',
and initialize new member, stdin_tty.
* src/mv.c (cp_option_init): Likewise.
* src/install.c (cp_option_init): Likewise.
* src/cp.c (main): Adjust initialization(s) of `interactive',
* src/mv.c (main): Likewise.
* tests/mv/i-1: Change expected exit status to reflect the above.
2001-08-12 Jim Meyering <meyering@lucent.com>
* tests/mk-script ($program_name): Define.
(main): Use $program_name, rather than long-inaccurate `build-script'.
(main): Iterate over the sorted keys (rather than `while...each...'),
so this script produces the same output regardless of which version
of perl (e.g., perl5.6) is used.
Work around non-compliant gettimeofday on Mac OS X 10.0.4,
(aka Darwin 1.3.7) that caused the date of the first file listed
in long output to be the current time rather than the file's mtime.
The real work is in m4/gettimeofday.m4 and the wrapper function,
lib/gettimeofday.c.
* src/ls.c: Include gtod.h.
(main): `Call' GETTIMEOFDAY_INIT.
(print_long_format): Add a comment about gettimeofday.
Report and diagnosis from Bernhard Baehr.
* src/shred.c: Include gtod.h.
(main): `Call' GETTIMEOFDAY_INIT, just in case the code ever changes
to make it necessary.
2001-08-10 Paul Eggert <eggert@twinsun.com>
* src/ls.c (print_long_format): Simplify previous patch for
listing negative sizes, by adding OFF_T_MAX - OFF_T_MIN + 1
instead of doing a fancy conditional shift. This is simpler
and it avoids GCC's bogus compile-time warning about shift
counts. (As a bonus, it is portable to hosts that do not use
twos-complement arithmetic. :-)
2001-08-10 Jim Meyering <meyering@lucent.com>
* ls.c (print_long_format): Multiply the shift width by zero
to avoid a warning from gcc on hosts with an unsigned type for the
st_size member.
2001-08-06 Paul Eggert <eggert@twinsun.com>
* src/ls.c (print_long_format): If a file size is negative, assume
the typical case where it has wrapped around from a positive value.
2001-08-07 Jim Meyering <meyering@lucent.com>
* Makefile.maint (m4-check): New rule.
(local-check): Depend on it.
2001-08-06 Jim Meyering <meyering@lucent.com>
Fix the bug whereby `mv -uf source dest' would delete source,
even though it's older than dest.
* src/mv.c (usage): Correct the description of --update.
* src/copy.c (copy_internal): Set *rename_succeeded, so that
the caller (mv) doesn't remove the source file.
Reported by Phelippe Neveu.
* tests/mv/update: New test for the above.
* tests/mv/Makefile.am (TESTS): Add update.
2001-08-05 Jim Meyering <meyering@lucent.com>
* tests/root-only: Generalize. Rename to ...
* tests/priv-check: ...this. New file. Renamed from the above.
* tests/Makefile.am (EXTRA_DIST): Reflect renaming.
* tests/mv/i-3: Reflect name and usage changes.
* tests/chown/basic: Likewise.
* tests/cp/special-bits: Likewise.
* tests/sample-test: Likewise.
2001-08-04 Jim Meyering <meyering@lucent.com>
* tests/root-only: Remove *all* write access, not just that
of the owner.
* tests/mv/i-3: New test for the above fix.
* tests/mv/Makefile.am (TESTS): Add i-3.
2001-08-03 Paul Eggert <eggert@twinsun.com>
* ls.c (quote_name): Pass 0 to mbsnwidth, since the default
got changed and we want the default now.
2001-08-03 Paul Eggert <eggert@twinsun.com>
* ls.c (quote_name): Pass 0 to mbsnwidth, since the default
got changed and we want the default now.
2001-07-15 Jim Meyering <meyering@lucent.com>
* src/Makefile.am (INCLUDES): Add -I../lib so sys2.h can include
the new, generated file, unlocked-io.h.
* src/sys2.h: Include "unlocked-io.h", rather than hard-coding the
HAVE_*_UNLOCKED macros.
* Makefile.cfg ($(srcdir)/m4/jm-glibc-io.m4): New rule.
2001-07-14 Jim Meyering <meyering@lucent.com>
* Makefile.maint (tgz-size): Also work for sizes in the kilobyte range.
* Makefile.maint: More changes from autoconf.
Changes from autoconf.
* Makefile.maint (GZIP_ENV): Add --best.
(AMTAR): Define.
(writable-files): Factor out ../release/ constant, and work (by
creating it) even if such a directory doesn't exist.
2001-07-08 Jim Meyering <meyering@lucent.com>
* src/copy.c (get_dest_mode): Clear set-user-ID and set-group-ID bits
when copying (i.e., not in move mode) and not preserving permissions.
Reported by kytek@cybercomm.net.
FIXME: add a test for this!!!
2001-07-02 Jim Meyering <meyering@lucent.com>
* src/ln.c (do_link): Test the boolean symbolic_link, not the function,
symlink. Patch by Frederik Eaton.
2001-06-17 Jim Meyering <meyering@lucent.com>
* Makefile.maint: Factor out definitions specific to fileutils,
sh-utils, and textutils, so that other packages can use the framework.
Patch by Akim Demaille.
* Makefile.cfg: New file with package-specific definitions.
* GNUmakefile: Include Makefile.cfg.
* Makefile.am (EXTRA_DIST): Add Makefile.cfg.
2001-06-16 Jim Meyering <meyering@lucent.com>
* src/ls.c (main): Recheck global print_with_color after calling
parse_ls_color, since that function may have reset it.
Based on a patch from Richard Dawe.
2001-06-16 Jim Meyering <meyering@lucent.com>
* config.sub: Update from master repository.
* config.guess: Likewise.
2001-06-09 Jim Meyering <meyering@lucent.com>
* configure.in (ALL_LINGUAS): Add Turkish (tr).
2001-05-25 Jim Meyering <meyering@lucent.com>
* src/ls.c (print_long_format): Don't truncate user names
or group names that are longer than 8 characters.
Add definitions that let me factor the wget rule while still letting
me accommodate the fact that these files reside in several different
directories and come from different places.
* Makefile.maint (wget-files): Define.
(get-targets, *-local_dir, *-url_prefix): Likewise.
(target, url, local_file): Convenience variables.
($(get-targets)): The factored rule.
2001-05-24 Jim Meyering <meyering@lucent.com>
* src/ansi2knr.c: Update from master source.
* Makefile.maint (wget-update): Have wget write to a temporary file,
and replace the original only if wget succeeds.
Also get ansi2nkr.c.
(move-if-change): Define.
(wget-update): Use it in place of mv.
* src/ls.c: Use `#if D_TYPE_IN_DIRENT && defined DTTOIF' to
determine whether to enable the DT_INIT definition, not the less
portable `#if defined _DIRENT_HAVE_D_TYPE || defined DTTOIF'.
Reported by Eli Zaretskii.
* src/mkfifo.c (main): Remove quotes around %s.
The argument is already quoted via the quote function.
* src/mknod.c (main): Likewise.
Reported by Göran Uddeborg.
2001-05-21 Jim Meyering <meyering@lucent.com>
* Makefile.maint (wget-update): depcomp and missing are now in
automake's lib/ subdirectory.
2001-05-11 Paul Eggert <eggert@twinsun.com>
Add new --time-style option.
Change --full-time to be equivalent to --time-style=full-iso.
* NEWS, doc/omni-utils.texi: Describe this change.
* src/ls.c: Include "hard-locale.h".
(nstrftime): New decl.
(enum time_style): New enum.
(time_style_args, time_style_types): New constants.
(full_time): Remove.
(long_time_format): Initialize to POSIX defaults.
(TIME_STYLE_OPTION): New constant.
(long_options, decode_switches, usage): Add --time-style support.
(long_time_expected_width): Use nstrftime, not strftime.
(print_long_format): Likewise.
Increase initial size to match new full-iso time style.
* tests/ls/time-1: Unset QUOTING_STYLE and TIME_STYLE. Set TZ.
Adjust to change in full-time format.
Fix typo in failure messages (-a and -m were interchanged).
2001-05-20 Jim Meyering <meyering@lucent.com>
* doc/Makefile.am (EXTRA_DIST): Add constants.texi and doclicense.texi.
(info_TEXINFOS): s/fileutils/omni-utils/.
(check-texinfo): New rule.
(check): Depend on check-texinfo.
* doc/omni-utils.texi (uniq invocation): Document the new optional
arguments to the --all-repeated option.
Make all references to POSIX use @sc{posix}.
2001-05-19 Jim Meyering <meyering@lucent.com>
* doc/fileutils.texi: Remove.
* doc/omni-utils.texi: Change a few uses of `timezone' to `time zone'.
Reported by Stephen Eglen.
2001-05-16 Jim Meyering <meyering@lucent.com>
* Makefile.maint (my-distcheck): Remove work-around kludge and
associated comment, now that automake has ben fixed.
2001-05-12 Paul Eggert <eggert@twinsun.com>
Clean up some of the places where the code assumed that random
types like 'mode_t' fit into 'int', which POSIX doesn't guarantee.
* src/ls.c (struct fileinfo.linkmode): Now st_mode.
(print_color_indicator, print_name_with_quoting, print_type_indicator,
length_of_file_name_and_frills):
Use mode_t, not unsigned int, to store modes.
(dired_dump_obstack): Do not assume size fits in 'int'.
(get_link_name): readlink returns ssize_t, not int.
(make_link_path): Store buffer size as size_t, not int.
(print_long_format): Use unsigned long, not unsigned, to print
nlink_t, uid_t, gid_t, major_t, minor_t.
2001-05-13 Paul Eggert <eggert@sic.twinsun.com>
* src/mknod.c (main): Check for NODEV device only if NODEV is defined.
* src/system.h (NODEV): Remove, undoing previous change.
2001-05-13 Jim Meyering <meyering@lucent.com>
* src/remove.c (dir_name, dir_len): Define to different names
to avoid shadowing warnings due to new declarations from dirname.h.
* tests/Fetish.pm (run_tests): Fail if any test name is longer
than 12 bytes.
* tests/ls-2/tests: Shorten test names so the length of a
resulting file name doesn't exceed 14.
2001-05-12 Paul Eggert <eggert@twinsun.com>
* src/system.h (NODEV): New macro, if not already defined.
* src/mknod.c (main): Check for overflow when converting out
of uintmax_t. Do not assume that major_t and minor_t are no
wider than int. Check for makedev failures. Convert device
numbers via uintmax_t, not unsigned long, just in case.
Coalesce duplicate code in the block and character device
cases.
2001-05-11 Paul Eggert <eggert@twinsun.com>
Add new --dereference-command-line option.
-H now means this instead of meaning --si, as POSIX requires.
* NEWS, doc/omni-utils.texi: Document this.
* src/ls.c (enum Dereference_symlink): New type.
(dereference): New var, replacing trace_links, which was removed.
(long_options, main, decode_switches, gobble_file, usage):
Implement the changes.
* tests/ls-2/tests:
Rename slink-dir test to slink-dir-dF. Add new tests
slink-dir-F, slink-dir-dFH, slink-dir-dFL.
2001-05-11 Paul Eggert <eggert@twinsun.com>
dirname code cleanup. base_name now behaves more compatibly
with POSIX basename when given file names that have trailing
slashes, and similarly for dir_name. Add new primitives
base_len and dir_len. Put the directory-name-related decls
into dirname.h.
* src/chmod.c (strip_trailing_slashes): Remove; now in dirname.h.
* src/chown.c (strip_trailing_slashes): Likewise.
* src/cp.c (strip_trailing_slashes): Likewise.
* src/df.c (strip_trailing_slashes): Likewise.
* src/ln.c (strip_trailing_slashes): Likewise.
* src/mkdir.c (strip_trailing_slashes): Likewise.
* src/rm.c (strip_trailing_slashes): Likewise.
* src/rmdir.c (strip_trailing_slashes): Likewise.
* src/dircolors.c, src/ls.c, src/remove.c:
Include "dirname.h", to get base_name.
* src/cp.c (make_path_private): Use dir_len instead of
dir_name, and avoid an extra mealloc call.
* src/df.c (find_mount_point): No need to strip trailing
slashes before invoking new dir_name.
* src/mv.c: Include "dirname.h".
(strip_trailing_slashes_2): Remove; now done by
strip_trailing_slashes. All callers changed.
* src/sys2.h (base_name): Remove decl; now in dirname.h.
* src/copy.c (copy_internal): Remove the code that tested for NULL
dir_name return value. That can't happen.
2001-05-12 Jim Meyering <meyering@lucent.com>
* src/ls.c (usage): Wording changes related to -o, -n, and -g.
* doc/omni-utils.texi: Likewise.
From Paul Eggert.
2001-05-11 Paul Eggert <eggert@twinsun.com>
* src/chmod.c (mode_changed, change_file_mode):
There's no need to invoke both lstat and stat here, so call just
one of the two functions.
2001-05-11 Jim Meyering <meyering@lucent.com>
* doc/omni-utils.texi: New file. The union of fileutils.texi,
sh-utils.texi, and textutils.texi. Merged by Brian Youmans.
* src/shred.c (usage): Warn about backups and mirrors.
* doc/omni-utils.texi (shred invocation): Likewise.
From Nelson Beebe.
2001-05-09 Jim Meyering <meyering@lucent.com>
* src/ls.c (main): Don't set `format_needs_stat' for --recursive (-R),
because that would make `ls -RF dir' stat unnecessarily all of the
files in dir/ on some systems.
Similarly, don't set `format_needs_stat' for --dereference (-L),
because that would make `ls -RLF dir' stat unnecessarily all non-symlink
files in dir/ on some systems.
Instead, ...
(gobble_file): ... also stat a file if `trace_dirs' (-R) is set and its
type is unknown.
... also stat a file if `trace_links' (-L) is set and the file is a
symlink or its type is unknown.
(print_dir): Also recognize DT_REG and DT_LNK.
2001-05-07 Jim Meyering <meyering@lucent.com>
* src/chown.c (main): Fix thinko that made --from=... fail:
s/argv[optind]/optarg/. Reported by Andrew Pham.
* tests/chown: New directory.
* tests/chown/basic: New (root-only) test for the above.
* tests/cp/special-bits: Factor out the root-only test into this ...
* tests/root-only: ... new file.
* tests/Makefile.am (EXTRA_DIST): Add root-only.
(SUBDIRS): Add chown.
* tests/chown/Makefile.am: New file.
* configure.in (AC_OUTPUT): Add tests/chown/Makefile.
2001-05-05 Jim Meyering <meyering@lucent.com>
* src/ls.c (decode_switches): Complain if the envvar, QUOTING_STYLE,
is set to an invalid value.
Move some declarations of locals into scopes where they're used.
2001-05-02 Jim Meyering <meyering@lucent.com>
* doc/texinfo.tex: Update from master repository.
* config.sub: Likewise.
* config.guess: Likewise.
2001-05-01 Jim Meyering <meyering@lucent.com>
* Makefile.maint (tgz-size, xd-size): Compute sizes.
(announcement): Include sizes of .tar.gz and .xdelta files
in the announcement.
* src/ls.c (print_owner): New global variable.
(usage): Update the descriptions of -g.
(decode_switches): Honor the -g option (omit owner information),
now that POSIX specifies it.
(print_long_format): Don't print owner name if -g was specified.
Move declaration of `user_name' into the scope where it's used.
(print_group): Rename global from `inhibit_group'. Update all
uses accordingly.
* doc/fileutils.texi (What information is listed): Describe -g.
* TODO: Remove item for ls -g.
* src/ls.c (decode_switches): Make -n work just like -l, except
with numeric IDs, per POSIX. Before, to have any effect, -n had
to be used with -l. Reported by Dale Scheetz.
(usage): Update the description of -n.
Separate the descriptions of -n and --numeric-uid-gid.
Split string in --help output that had exceeded my limit of
2048 bytes.
2001-04-29 Jim Meyering <meyering@lucent.com>
* Version 4.1.
* configure: Regenerate using a further-patched copy of autoconf-2.49e
to work around a bug in its test for ranlib. This is the change to
autoconf's acgeneral.m4 that was made on 2001-04-24.
* README: Don't mention mvdir. It is no longer provided.
Don't mention HP/UX vs. du blocksize problem. It's long gone.
Remove note about how cp, mv, and ln couldn't make backups
of files with names of maximum length. Now they can do that.
Thank the people who have provided access to their systems
for portability testing.
Warn about and describe autoconf/automake version requirements.
Use a better URL for the GNU Coding Standards.
* man/rm.x: Refer to shred.
Remove the example showing how to remove `-foo', since that is now
in the --help output (and hence automatically included).
* src/rm.c (usage): Mention shred.
* src/shred.c (usage): Include in --help output the warning about
some of the filesystem types on which shred is not effective.
2001-04-25 Jim Meyering <meyering@lucent.com>
* Makefile.maint (my-distcheck): Add a comment.
2001-04-23 Jim Meyering <meyering@lucent.com>
* Version 4.0.45.
2001-04-22 Jim Meyering <meyering@lucent.com>
* src/ls.c (decode_switches): Ensure that -1 has no effect when it
follows -l, per POSIX. Reported by Ulrich Drepper.
* src/dd.c (usage): Mention that sync makes dd pad with spaces (rather
than NULs) when used with block or unblock.
(dd_copy): When using sync with either block or unblock,
pad with spaces. Reported by Dale Scheetz.
* tests/dd/skip-seek (block-sync-1): New test, for this. Based on
a report from Dale Scheetz.
* doc/fileutils.texi (dd invocation): Document it here, too.
* configure: Regenerate using a patched copy of autoconf-2.49e to
work around a bug in its test for a working memcmp function.
This is the change to autoconf's acfunctions.m4 that was made
on 2001-04-22.
* tests/ls/no-arg: New file.
* tests/ls/Makefile.am (TESTS): Add no-arg.
* src/ls.c (main): Fix off-by-one error introduced with last change.
2001-04-21 Jim Meyering <meyering@lucent.com>
* Version 4.0.44.
* configure, aclocal.m4, etc.: Regenerate using autoconf-2.49e.
* doc/fileutils.texi (touch invocation): Discuss ctime.
Based on suggestions and contributions from Aharon Robbins
and Dan Jacobson.
* src/ls.c (main): When given two or more arguments but the only one
that exists is a directory, don't treat it as if it were the only
argument. Before, `mkdir d; ls no-dir d 2>/dev/null' would act like
`ls d' and produce no output. Now, it prints `d:'.
Report and patch from Stéphane Chazelas.
* tests/ls-2/tests: New tests, for the above fix.
2001-04-08 Jim Meyering <meyering@lucent.com>
* depcomp: New version, from automake.
2000-10-31 Bruno Haible <haible@clisp.cons.org>
* ls.c: Don't inspect MB_LEN_MAX. Paul Eggert says it's
not always defined correctly.
2001-04-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
* tests/chgrp/basic: Ensure that initial group id's are properly set
for `d' and `d/f3'.
2001-04-02 Jim Meyering <meyering@lucent.com>
* tests/mv/setup: Skip nonexistent directories so we don't get
diagnostics from df about e.g., `/usr/tmp not found'.
2001-03-24 Jim Meyering <meyering@lucent.com>
* configure.in: Don't require autoconf version here -- it's done in m4/.
2001-03-23 Jim Meyering <meyering@lucent.com>
* Version 4.0.43.
* configure, aclocal.m4, etc.: Regenerate using autoconf-2.49d.
* Makefile.maint (check-copyright): New target and rule.
(alpha): Depend on it.
* missing: Handle shell built-ins (only `:' and `cd' for now) to work
around brain damage in Ultrix's /bin/sh.
2001-03-18 Jim Meyering <meyering@lucent.com>
* Version 4.0.42.
* tests/Fetish.pm: If the $DJDIR envvar is defined, set SHELL
to $DJDIR/bin/bash.exe. Patch from Richard Dawe, based on a
suggestion from Eli Zaretskii.
2001-03-17 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi: Warn that touch DATE FILE will be withdrawn.
2001-03-17 Jim Meyering <meyering@lucent.com>
* tests/install/basic-1: Add the standard $VERBOSE-handling hook.
This test currently fails for mips-dec-ultrix4.4.
* tests/install/create-leading: Use ../envvar-check rather than
open-coding the same tests.
* tests/envvar-check: Set/use $as_unset, for those shells
(like Ultrix4's /bin/sh) that don't accept `unset'.
* missing (--run): Use `eval' to run `"$@"'. Otherwise, Ultrix4.4's
/bin/sh fails and outputs garbage.
* src/touch.c (usage): Tweak the obsolescent usage line so that
help2man recognizes it as such. Reported by Dan Jacobson.
2001-03-16 Jim Meyering <meyering@lucent.com>
* Makefile.maint (wget-update): Also get `missing'.
Use for-loops.
* missing: Update from automake.
2001-03-11 Jim Meyering <meyering@lucent.com>
* tests/rm/isatty: Disable this test, for now.
It would block when run in the background.
2001-03-09 Jim Meyering <meyering@lucent.com>
* config.guess: Update from master repository.
* Makefile.maint (my_distdir): Define new variable, and use this
in place of most old uses of $(distdir).
* src/Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
Reported by Akim Demaille.
* tests/help-version: Ensure that /dev/full is a character device
(using test -c) as well as being writable, before trying to write to it.
Otherwise, the test could mistakenly append a newline to an existing,
regular, writable, /dev/full file.
Suggested by Ulrich Drepper.
2001-03-06 Jim Meyering <meyering@lucent.com>
* src/dd.c (S_TYPEISSHM): Rename parameter to reflect its type.
(main): Pass a `struct stat *', not stat.st_mode to S_TYPEISSHM.
Patch by Alain Magloire.
2001-03-04 Jim Meyering <meyering@lucent.com>
* src/dd.c (output_char): Reformat so each statement is on a
separate line.
2001-02-21 Jim Meyering <meyering@lucent.com>
* src/mkdir.c (main): Remove assignment-in-if-expression.
In fact, remove t_errno altogether. Reported by Nelson Beebe.
* tests/ls-2/tests: Add two tests of existing behavior -- both will
have to be changed (soon after release), once ls is fixed.
2001-02-20 Paul Eggert <eggert@twinsun.com>
* src/ls.c (FULL_TIME_OPTION): Renamed from FULL_TIME, for
consistency with the other enum values.
2001-02-20 Paul Eggert <eggert@twinsun.com>
* NEWS, doc/fileutils.texi: ls -H is now obsolescent.
* src/ls.c (SI_OPTION): New enum value.
(long_options): Use it instead of 'H' for --si.
(decode_switches): Warn that -H will change soon.
(usage): Likewise.
2001-02-18 Jim Meyering <meyering@lucent.com>
* tests/rm/Makefile.am (TESTS): Add isatty.
* tests/rm/isatty: New test, for the bug fixed below.
* Version 4.0.41.
* depcomp: New version, from automake.
`chmod 0 file; rm file' would no longer prompt before removal.
* src/remove.c (remove_file): Revert last change.
Reported by Vin Shelton.
2001-02-17 Jim Meyering <meyering@lucent.com>
* Version 4.0.40.
* src/chown.c (main): `quote' the offending argument.
2001-02-17 Paul Eggert <eggert@twinsun.com>
Stop trying to support hosts that have nonstandard declarations for
mbrtowc and/or mbstate_t. It's not worth the portability hassle.
* m4/mbrtowc.m4: New file, defining jm_FUNC_MBRTOWC.
* m4/mbswidth.m4 (jm_PREREQ_MBSWIDTH):
Use jm_FUNC_MBRTOWC, not AC_CHECK_FUNCS(mbrtowc).
* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Likewise.
* lib/mbswidth.c, lib/quotearg.c, src/ls.c (mbrtowc, mbsinit):
Remove workaround macros for hosts that have mbrtowc but not
mbstate_t, as we now insist on proper declarations for both
before using mbrtowc.
Reported by Matt Schalit.
2001-02-17 Jim Meyering <meyering@lucent.com>
* config.sub: Update from master repository.
* config.guess: Likewise.
2001-02-16 Paul Eggert <eggert@twinsun.com>
* doc/getdate.texi: Mention that only English is supported.
Show how to use "date" so that the output is acceptable to getdate.
Mention Z as an abbreviation for UTC.
2001-02-11 Jim Meyering <meyering@lucent.com>
* Makefile.maint (emit-rsync-commands): Define.
(alpha): Use it here.
2001-02-10 Jim Meyering <meyering@lucent.com>
* Makefile.maint (alpha): Fix previous, incomplete change.
* Version 4.0.39.
* depcomp: New version, from automake.
2001-02-04 Jim Meyering <meyering@lucent.com>
* README: Remove note about now-ancient Sequents.
2001-02-03 Jim Meyering <meyering@lucent.com>
* src/ln.c (main): Change type of index variable to `unsigned int'
to avoid a warning.
* config.guess: Update from master repository.
* Makefile.maint (a_host): Use fencepost.
(real_dir): Use the same name for both.
(alpha): Print commands for both hosts.
* src/mv.c (long_options): Use `strip-trailing-slashes',
per the documetation, not `strip-trailing-slash'.
* src/cp.c (long_opts): Likewise.
Reported by Oskar Liljeblad.
* doc/fileutils.texi (mv invocation): Add a warning about how a trailing
slash makes a difference. Prompted by a report from Oskar Liljeblad
via Michael Stone (Debian bug#83991).
2001-01-31 Jim Meyering <meyering@lucent.com>
* config.sub: Update from master repository.
* config.guess: Likewise.
2001-01-28 Jim Meyering <meyering@lucent.com>
* Version 4.0.38.
* configure, aclocal.m4, etc.: Regenerate using autoconf-2.49c.
* src/ls.c (gobble_file): Add a FIXME comment.
* TODO: Add a few items.
* src/ls.c (enum) [FULL_TIME]: Define.
(long_options): Use it.
(decode_switches): Make --full-time imply -l.
Prompted by a report from Karl Eichwalder.
2001-01-22 Jim Meyering <meyering@lucent.com>
* src/remove.c (remove_file): Correct an expression to avoid making
an unnecessary call to euidaccess for each file.
2001-01-21 Jim Meyering <meyering@lucent.com>
* Version 4.0.37.
2001-01-20 Jim Meyering <meyering@lucent.com>
* configure.in: Remove jm_CHECK_ALL_TYPES.
Now it's invoked by jm_MACROS.
2001-01-17 Jim Meyering <meyering@lucent.com>
* src/sys2.h (case_GETOPT_VERSION_CHAR): Use PACKAGE, not GNU_PACKAGE.
* src/sync.c (main): Likewise.
* src/shred.c (PACKAGE): Likewise.
* src/dd.c (main): Likewise.
2001-01-14 Jim Meyering <meyering@lucent.com>
* Version 4.0.36.
* src/shred.c (UINT_MAX_32_BITS): Define.
Use UINT_MAX_32_BITS in the cpp conditions that determine
the `word32' typedef. Using a literal `0xffffffff' failed with
HPUX10.20's /bin/cc.
* config.sub: Update from master repository.
* config.guess: Likewise.
2001-01-02 Volker Borchert <bt@teknon.de>
Work around a broken rename system call, e.g. on SunOS 4.1.1_U1,
that fails when the source path has a trailing slash.
* src/copy.h [RENAME_TRAILING_SLASH_BUG]: Use the rename wrapper.
* tests/mv/trailing-slash: Test whether the workaround works.
* tests/m4/Makefile.am (TESTS): Add trailing-slash.
2001-01-03 Alexandre Duret-Lutz <duret_g@epita.fr>
* po/Makefile.in.in (update-po): Merge po-files in temporary files
in the build directory, and update the source directory only when
the merged catalog differs from the original. This fixes the known
`make distcheck' failure due to `make update-po' being called
on up-to-date but read-only files.
2001-01-13 Jim Meyering <meyering@lucent.com>
* src/copy.c (same_file_ok): When moving a symlink onto itself,
don't remove the symlink. Reported by David Luyer as Debian bug#82089,
via Michael Stone.
* tests/mv/into-self-4: New test for the above.
* tests/mv/Makefile.am (TESTS): Add into-self-4.
* tests/chmod/setgid: If `chmod g+s d' fails, then try to chgrp
to a group of which we're a member, then try the chmod again.
2001-01-11 Jim Meyering <meyering@lucent.com>
* depcomp: New version, from automake.
2001-01-10 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Add a comment.
Set *copy_into_self in the new code that detects that.
Make diagnostic more consistent: s/won't/will not/.
[move_mode, copy_into_self]: Give a diagnstic here, now that
we have the top_level_* globals. Remove the corresponding diagnostic
from mv.c.
Add a FIXME comment.
* src/mv.c (do_move): Remove diagnostic, now that copy.c issues it.
Set `fail' to nonzero in the primary `if (copy_into_self)' block
rather than in its own tiny one below.
* src/copy.c (copy_internal): Don't allow cp (or mv, when working
across a partition boundary) to overwrite a non-directory with a
directory. Reported by Michael J. Croghan.
* tests/cp/dir-vs-file: New test for the above.
* tests/cp/Makefile.am (TESTS): Add dir-vs-file.
2001-01-09 Jim Meyering <meyering@lucent.com>
Give a better diagnostic for `cp -R a a'.
* src/copy.c (top_level_src_path, top_level_dst_path): New globals.
(copy_internal): Use them.
(copy): Set them.
* src/cp-hash.c [struct entry] (node): Describe how it's used,
now that we've overloaded it, in order to detect and diagnose
the copying-directory-into-self problem.
(new_file): Remove global.
(htab): Declare global to be static.
(remember_created): Insert file name instead of dummy pointer, so
that copy.c can use the just-created directory name to detect
the copying-directory-into-self problem.
* tests/cp/into-self: New test for the above.
* tests/cp/Makefile.am (TESTS): Add into-self.
2001-01-07 Jim Meyering <meyering@lucent.com>
* src/cp.c (usage): Split a string that was longer than 2048 bytes.
* doc/perm.texi: s/can not/cannot/
2001-01-07 Karl Eichwalder <ke@suse.de>
* src/chown.c (usage): Split long message string.
2001-01-07 Karl Eichwalder <ke@suse.de>
* src/ls.c (usage): Untabify.
* src/chgrp.c (parse_group): Normalize spelling.
2001-01-03 Paul Eggert <eggert@twinsun.com>
* NEWS: Document the planned --full-time change.
* doc/fileutils.texi: Likewise.
* NEWS: Document that time stamps depend on LC_TIME, not LC_MESSAGES.
2001-01-03 Paul Eggert <eggert@twinsun.com>
Use the more precise algorithm of GNU "make" to decide whether
a file is in the future, by looking at high-resolution time
stamps if available.
* src/ls.c:
(TIMESPEC_NS): New macro.
(current_time): Initialize to the minimum value.
(current_time_ns): New var.
(main): Do not bother to initialize current_time;
it's no longer needed.
(get_current_time): New function.
(print_long_format): Use it when a file appears to be in the future.
Get the nanoseconds of the file's time stamp, if available,
and use that to decide whether the file appears to be in the future.
* src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD): New macros.
2001-01-02 Paul Eggert <eggert@twinsun.com>
* src/ls.c (long_time_expected_width, print_long_format): Fix
bug: the initial byte passed to strftime wasn't initialized to
a nonzero value after the buffer was reallocated.
2001-01-02 Paul Eggert <eggert@twinsun.com>
Make ls -l compatible with POSIX, which requires that the
behavior of time formats must depend only on LC_TIME, not on
LC_MESSAGES.
* po/Makefile.in.in (install-data-yes): If the package is
fileutils, install LC_TIME as an alias for LC_MESSAGES.
* src/sys2.h (dcgettext): New macro.
* src/ls.c (decode_switches): Use dcgettext with LC_TIME,
not plain gettext, to get the translations of time formats.
2001-01-02 Paul Eggert <eggert@twinsun.com>
* src/ls.c (long_time_expected_width): New function.
(print_long_format): Use it, so that we don't assume a
particular width for time stamps in an internationalized
environment.
2001-01-01 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi, NEWS:
ls -l now reports the year for files even slightly in the future, as
POSIX requires. This helps warn users about clock skew problems.
* src/ls.c (print_long_format):
Report the year for files even slightly in the future.
Avoid overflow problems near Y2038 on 32-bit hosts.
To calculate "six months", take half the average Gregorian
year, not 180 days.
2001-01-01 Jim Meyering <meyering@lucent.com>
* tests/chmod/Makefile.am (TESTS): Add setgid.
* tests/chmod/setgid: Test for chmod's existing behavior.
Based on a report from Paul Eggert.
2000-12-29 Paul Eggert <eggert@twinsun.com>
Clean up the terminology a tad: some directories were called "sticky"
when they were really setgid.
* tests/Makefile.am (EXTRA_DIST): sticky-check -> setgid-check
* tests/chmod/c-option, tests/cp/cp-parents, tests/mkdir/parents,
tests/mkdir/perm: Likewise.
* tests/setgid-check: File renamed from tests/sticky-check.
All uses of "sticky" changed to "setgid".
2000-12-31 Jim Meyering <meyering@lucent.com>
* tests/cp/Makefile.am (TESTS): Add deref-slink.
* tests/cp/deref-slink: New file. Test for the bug fixed by my
2000-12-28 change to copy.c.
2000-12-30 Paul Eggert <eggert@twinsun.com>
* src/ls.c: Improve performance by invoking gettext twice at the start,
instead of once for each file.
(long_time_format): New var.
(decode_switches): Initialize it, if format == long_format.
(print_long_format): Use it.
2000-12-30 Paul Eggert <eggert@twinsun.com>
* src/ls.c (print_long_format): Don't dump core if strftime
returns the empty string.
2000-12-30 Paul Eggert <eggert@twinsun.com>
* src/ls.c (gobble_file): If not using long format, don't
invoke acl; it's not needed.
2000-12-30 Jim Meyering <meyering@lucent.com>
Avoid an unnecessary `stat' when using --dereference.
* src/copy.c (same_file_ok): Use stat only if lstat reported that
the file was a symbolic link.
2000-12-29 Paul Eggert <eggert@twinsun.com>
* doc/perm.texi: append-only directories -> restricted deletion flag,
which is the term that POSIX d5 uses for this notion.
2000-12-28 Paul Eggert <eggert@twinsun.com>
* tests/group-names: Try /usr/xpg4/bin/id (Solaris 7) if plain
'id' doesn't work.
2000-12-28 Jim Meyering <meyering@lucent.com>
* tests/cp/cp-parents: Run sticky-check from just-created directory.
2000-12-28 Jim Meyering <meyering@lucent.com>
* src/copy.c (same_file_ok): Fix two typos from my 2000-09-03 change:
s/tmp_dst_sb/tmp_src_sb/.
2000-12-27 Paul Eggert <eggert@twinsun.com>
* tests/sticky-check: Turn off the working directory's sticky
bit, so that we don't have to worry about it later.
* src/copy.c (same_file_ok): Use a single auto var for
tmp_dst_sb, instead of two static vars. Likewise for
tmp_src_sb.
2000-12-26 Jim Meyering <meyering@lucent.com>
* Version 4.0.35.
* Regenerate build/config framework to use automake-1.4b and
the latest CVS version autoconf.
* tests/mkdir/perm: Disable the test if the working directory has
the sticky bit set.
* tests/cp/cp-parents: Likewise.
Reported by Nelson Beebe.
2000-12-25 Jim Meyering <meyering@lucent.com>
Clean-up to avoid warnings from Irix's c89.
* src/remove.c (hash_compare_active_dir_ents): Return explicit `true'
or `false', rather than relying on implicit int-to-enum cast.
* src/copy.c (same_file_ok): Remove declaration and set of unused
variables: src_sb_no_link, dst_sb_no_link.
* src/ls.c (extract_dirs_from_files): Remove unused variable.
Reported by Nelson Beebe.
* src/ls.c (gobble_file): Move decl of local, val, into the scope
where it's used.
2000-12-24 Jim Meyering <meyering@lucent.com>
For both ln and install, when using `--backup=simple --suffix=S',
the suffix `S' wasn't used.
* src/ln.c (main): Actually use the local variable,
`backup_suffix_string'.
* src/install.c (main): Likewise.
Nelson Beebe reported the unused variables.
* tests/ln/misc: Add a test for this (for all of cp, mv, ln, install).
* man/help2man: Update to version 1.24.
2000-12-22 Jim Meyering <meyering@lucent.com>
* Version 4.0.34.
* src/shred.c (isaac_seed_machdep) [_ARCH_PPC]: Disable the code
that would use the PPC mfspr `asm' code. Suggestion from Michael Stone.
2000-12-19 Jim Meyering <meyering@lucent.com>
* doc/fileutils.texi: Use `ref_file' in place of `file' to make
descriptions of the various --reference=... options clearer.
2000-12-17 Jim Meyering <meyering@lucent.com>
* doc/texinfo.tex: Update from master repository.
* config.sub: Likewise.
* config.guess: Likewise.
2000-12-16 Jim Meyering <meyering@lucent.com>
* src/chown-core.c (uint_to_string): New function.
(uid_to_name): Use it.
(gid_to_name): Use it.
Rename locals, user/group, to uid/gid.
* src/chown-core.h (enum Change_status): Start with 1.
* src/chown.c (main): Rename locals, user/group, to uid/gid.
* src/chgrp.c (main): Rename local, group, to gid.
* tests/group-names: New file.
* tests/Makefile.am (EXTRA_DIST): Add group-names.
* tests/chgrp/basic: Use group-names.
* tests/chgrp/deref: Likewise.
* tests/chgrp/recurse: Likewise.
* tests/chgrp/basic: Don't assume that creating a file gives it
group $g1.
* tests/chgrp/Makefile.am (TESTS): Add recurse.
2000-12-15 Jim Meyering <meyering@lucent.com>
* src/chown-core.h [enum Dereference_symlink] (dereference): Rename
from change_symlinks.
* src/chown-core.c: Declare lstat.
Rename change_symlinks member to `dereference' and use the DEREF_*
enum values.
(describe_change): Merge the chgrp and chown switch statements.
Use xmalloc to form the `user:group' string.
(change_file_owner): Record (and later, use) is_symlink and is_directory
from the lstat stats, in order to control whether we operate on symlinks
and whether (with -R) we traverse symlinks to directories.
When dereferencing, use open/fchown (rather than chown) on symlinks.
* src/chown.c (main): Reflect renaming: s/dereference/change_symlinks/.
* src/chgrp.c (main): Likewise.
* src/chown-core.c (describe_change): Use `:' (not `.') to separate the
username and group in messages evoked by the --verbose and --changes
options.
2000-12-09 Jim Meyering <meyering@lucent.com>
* src/Makefile.am (noinst_HEADERS): Add chown-core.h.
(chown_SOURCES): Define.
(chgrp_SOURCES): Define.
* src/chgrp.c: Include "chown-core.h".
[enum Change_status, enum Verbosity]: Remove declarations.
Remove decls of globals that are now part of struct Chown_option.
Remove decl of xstat.
(describe_change): Remove function.
(change_file_group): Likewise.
(change_dir_group): Likewise.
(parse_group): Don't set global, groupname, here...
(main): ... instead, initialize `chopt.group_name' here.
Initialize chopt and update uses of the now-members.
Set group_name also when it's obtained via a --reference=FILE option.
Call change_file_owner (with -1 for uids), not change_file_group.
* src/chown.c: Don't include pwd.h or grp.h -- no longer needed.
Include "chown-core.h".
[enum Change_status, enum Verbosity]: Remove declarations.
Remove decls of globals that are now part of struct Chown_option.
(describe_change): Remove function.
(change_file_owner): Likewise.
(change_dir_owner): Likewise.
(main): Initialize chopt and update uses of the now-members.
Set user_name and group_name also when they're obtained via a
--reference=FILE option.
Pass `chopt' to change_file_owner.
* src/chown-core.c: Include <pwd.h>, <grp.h>, and "xalloc.h".
[!_POSIX_VERSION]: Declare getgrnam and getgrgid.
(gid_to_name): New function.
(uid_to_name): Likewise.
(chopt_free): Likewise.
Factor out code that's common to chgrp.c and chown.c.
* src/chown-core.h: New file.
* src/chown-core.c (chopt_init): New function.
(describe_change): Extracted/combined from chgrp.c and chown.c.
(change_dir_owner): Likewise.
(change_file_owner): Likewise.
* po/POTFILES.in: Add src/chown-core.c.
* configure.in (AC_OUTPUT): Add tests/chgrp/Makefile.
* tests/Makefile.am (SUBDIRS): Add chgrp.
* tests/chgrp: New directory.
* tests/chgrp/basic: New test.
* tests/chgrp/deref: Likewise.
* tests/chgrp/Makefile.am: New file.
* src/chown.c (change_file_owner): Restore special file permission
bits, since calling chown resets them on some systems.
Reported by Matt Perry.
2000-12-08 Andreas Schwab <schwab@suse.de>
* tests/mv/mv-special-1: Don't make the success of the test depend
on the order in which directory entries are processed.
2000-12-03 Jim Meyering <meyering@lucent.com>
* src/ls.c (gobble_file) [USE_ACL]: Set have_acl member unconditionally
to avoid uninitialized memory reference via FILE_HAS_ACL.
* Makefile.maint (alpha): Use rsync rather than scp, so the destination
file is created only after the successful completion of the copy.
2000-12-02 Jim Meyering <meyering@lucent.com>
* tests/ls/Makefile.am (TESTS): Add follow-slink.
* tests/ls/follow-slink: New file.
2000-12-01 Paul Eggert <eggert@twinsun.com>
* src/ls.c (gobble_file): Do not fall back on lstat if stat
fails; POSIX.2 does not allow this. Invoke acl only on
non-symlinks, and only if lstat or stat succeeds.
2000-12-02 Jim Meyering <meyering@lucent.com>
* configure: Regenerate using the very latest version (in CVS) of
autoconf.
* tests/dd/skip-seek: Remove test #2, now that support for the
`B' suffix is gone.
* tests/dd/Makefile.am (TESTS): Add skip-seek2
* tests/dd/skip-seek2: New file.
2000-12-01 Paul Eggert <eggert@twinsun.com>
* src/dd.c (skip, dd_copy): Use ssize_t to store result of
safe_read, to avoid overflow e.g. on 64-bit Solaris sparc.
(dd_copy): Remove unnecessary cast.
2000-12-01 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi: Remove B suffix. Document how to have
the desired effect without it.
* src/dd.c: Undo most of the changes since 2000-11-24, since we've
documented a standard way to do it.
(skip_bytes, seek_bytes): Remove.
(usage): Remove B suffix.
(scanargs, skip, dd_copy, main): Remove support for B suffix.
2000-11-28 Jim Meyering <meyering@lucent.com>
* src/mkdir.c (main): Remove any trailing slash unconditionally.
Reported by Volker Borchert.
* tests/mkdir/t-slash: Add a test for this.
2000-11-27 Jim Meyering <meyering@lucent.com>
* Version 4.0.33.
* tests/touch/no-rights: Use touch with `-d tomorrow' to avoid a
race condition.
* tests/Fetish.pm (_compare_files): New function.
(_process_file_spec): Likewise.
(_at_replace): Likewise.
(run_tests): Support new keywords, AUX and CMP and associated
syntax and semantics.
* config.sub: Likewise.
* config.guess: Likewise.
2000-11-26 Jim Meyering <meyering@lucent.com>
* src/dd.c (skip): Perform the `records < blocksize' test
at the top of the loop, not at the bottom.
2000-11-26 Paul Eggert <eggert@twinsun.com>
* src/dd.c (skip): New arg COUNT_BYTES. Read with BLOCKSIZE
bytes, but consider RECORDS to be a byte count if COUNT_BYTES
is nonzero.
2000-11-25 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi: Document seek=nB and skip=nB.
* src/dd.c (skip_bytes, seek_bytes): Now booleans, not counts.
(seek_records): Renamed from seek_record, for consistency with
skip_records and max_records. All uses changed.
(usage, scanargs): Remove bseek=n and bskip=n; instead, use seek=nB
and skip=nB.
(enum Unit, Unit): Remove.
(skip, dd_copy, main): Undo most recent change.
(dd_copy, main): Pass blocksize of 1 as appropriate when
skip_bytes or seek_bytes is nonzero.
(main): Rework ftruncate failure diagnostic to always use byte count.
2000-11-25 Jim Meyering <meyering@lucent.com>
* src/dd.c: Add new options, bskip and bseek.
Based on a patch from Chris Sylvain.
* tests/dd/skip-seek: New tests.
* tests/dd/Makefile.am (TESTS): Add skip-seek.
2000-11-24 Paul Eggert <eggert@green.twinsun.com>
* src/dd.c (S_TYPEISSHM): New macro.
(main): Report failed fstat.
Complain only when ftruncate fails on a regular file,
a directory, or a shared memory object.
2000-11-24 Jim Meyering <meyering@lucent.com>
* src/dd.c: Declare a pointer parameters to be `const' as appropriate.
* src/dd.c (main): Use ftruncate only on regular files.
Based on a patch from Michael Stone.
Reported by andras@kolumbus.fi at http://bugs.debian.org/77174.
2000-11-23 Jim Meyering <meyering@lucent.com>
* src/df.c (show_point): Before accepting an entry as a match, make
sure that the mount directory exists and has the required device number.
Before, e.g., `df /floppy' would mistakenly report on the root
partition if /floppy were not listed in /etc/mtab but / was.
Patch from Eirik Fuller (http://bugs.debian.org/76923).
* src/chmod.c (mode_changed): New function.
(change_file_mode): Use it to determine accurately when -c should
make chmod announce there's been a change.
Based on a patch from Michael Stone.
Reported by Kai Henningsen as Debian bug #77349.
* tests/chmod/c-option: New test for the above fix.
* tests/chmod/Makefile.am (TESTS): Add c-option
* tests/sticky-check: New file. Factored out of tests/mkdir/parents.
* tests/Makefile.am (EXTRA_DIST): Add sticky-check.
* tests/mkdir/parents: Source sticky-check instead of open-coding it.
2000-11-19 Jim Meyering <meyering@lucent.com>
* tests/chmod/equal-x: Update to use its own directory, and better trap.
2000-11-18 Paul Eggert <eggert@twinsun.com>
* src/ls.c (BLOCK_SIZE_OPTION, COLOR_OPTION, FORMAT_OPTION,
INDICATOR_STYLE_OPTION, QUOTING_STYLE_OPTION,
SHOW_CONTROL_CHARS_OPTION, SORT_OPTION, TIME_OPTION): New enum
values, to ensure that option values can't collide with chars.
(long_options, decode_switches): Use them.
2000-11-18 Paul Eggert <eggert@twinsun.com>
* src/sys2.h (GETOPT_HELP_CHAR, GETOPT_VERSION_CHAR): Now enum
constants rather than macros. Use values that cannot conflict
with C characters or with -1, CHAR_MAX + 1, etc.
2000-11-18 Jim Meyering <meyering@lucent.com>
* src/du.c (count_entry): Don't omit the size of a directory entry
merely because we couldn't `chdir' into it. That would give subtly
different results in some cases. Reported by Mattias Wadenstein
via Michael Stone.
* src/ls.c: Revert change of 2000-11-11. It inadvertently change
the output format of `ls -l --full-time'.
* src/mkdir.c (main): When failing to create a directory, give only
one diagnostic, not two. Reported by Volker Borchert.
* src/mkdir.c (main): With --parents, remove any trailing slashes
from the argument to the final mkdir call. Required for NetBSD.
Reported by Volker Borchert.
* tests/mkdir/t-slash: New test for this.
* tests/mkdir/Makefile.am (TESTS): Add t-slash.
* tests/mv/mv-special-1: Create and `cd' into temporary directory
before anything else. Reported by Volker Borchert.
* configure, config.h.in, Makefile.in, etc.: Regenerate using the
very latest version (in CVS) of autoconf.
2000-11-17 Jim Meyering <meyering@lucent.com>
* Makefile.am (.NOTPARALLEL): Remove target.
* GNUmakefile (.NOTPARALLEL): ... put it here instead, since this
file is common to these packages: fileutils, sh-utils, textutils.
* Makefile.am (.NOTPARALLEL): New target. Prevent unwanted parallelism.
Suggestion from Ulrich Drepper.
* po/Makefile.in.in (Makefile): Likewise.
* Makefile.maint (sha1): Define.
(announcement): Include SHA1 digest of .tar.gz file.
2000-11-14 Jim Meyering <meyering@lucent.com>
* tests/mkdir/perm: Add an `echo' so that the input to the sed command
is NL-terminated. Otherwise, Solaris' /bin/sed generates no output.
Reported by Vin Shelton.
2000-11-13 Paul Eggert <eggert@twinsun.com>
* src/sys2.h (ST_TIME_CMP_NS): Fix typo: ST_MTIM_NSEC should
be tested with #ifdef, not with #if.
2000-11-12 Jim Meyering <meyering@lucent.com>
* src/ls.c (print_long_format): Remove obsolete comment.
From Paul Eggert.
* doc/texinfo.tex: Update from master repository.
2000-11-11 Paul Eggert <eggert@sic.twinsun.com>
* src/ls.c (<langinfo.h>): Include if HAVE_LANGINFO_H.
(DATE_FMT_LANGINFO): New macro, taken from sh-utils/src/date.c.
(print_long_format): Use it to determine "date" format.
Do not wrap "%b %e %Y" and "%b %e %H:%M" in _(), as it results in
incorrect behavior when LC_ALL is unset, LC_TIME is "C", and
LC_MESSAGES or LANG is set to something disagreeing with the POSIX
locale.
2000-11-11 Jim Meyering <meyering@lucent.com>
* Version 4.0.32.
* Makefile.maint (GZIP_ENV): Define to --no-name, so the timestamp
is not included in the .tar.gz file.
* tests/mkdir/perm (tests): Use `empty' (instead of just blanks) to
indicate no `-m' option. Using just blanks wasn't portable to
Solaris2.5.1's /bin/sh.
* tests/mkdir/perm: Don't put a newline in IFS; that's not portable to
NetBSD's /bin/sh. Instead, filter newlines and leading/trailing blanks
out of `tests' before the `set -'.
* Makefile.maint (announcement): Limit depth of ChangeLog `find' to 2.
* src/ls.c (print_long_format): Wrap the `--full-time' date format
string in _(...), so it too may be internationalized.
Suggestion from Jungshik Shin.
2000-11-10 Jim Meyering <meyering@lucent.com>
* src/touch.c (main): Interpret a lone numeric argument of 8 or 10
digits as a file name, rather than as a date/time in the obsolescent
`MMDDhhmm[YY]' format. Reported by Wenjun Zheng.
* tests/touch/obsolescent: New test for this.
* tests/touch/Makefile.am (TESTS): Add obsolescent.
2000-11-06 Jim Meyering <meyering@lucent.com>
* tests/cp/cp-parents: Move mkdir tests into ../mkdir.
* doc/fileutils.texi: Use Free Documentation Licence.
Change GNU to @sc{gnu} in many places.
* doc/texinfo.tex: Update from master repository.
* config.sub: Likewise.
* config.guess: Likewise.
* man/help2man: Update from latest version: 1.23.
* src/mkdir.c: Do not set the permissions of the final directory
component if it was not just created.
Based on a patch from Volker Borchert.
* tests/rwx-to-mode: New file.
* tests/Makefile.am (EXTRA_DIST): Add rwx-to-mode.
* tests/mkdir/parents: New test for the above mkdir.c fix.
* tests/mkdir/Makefile.am (TESTS): Add parents.
(TESTS_ENVIRONMENT): Define srcdir=$(srcdir).
2000-11-02 Won-kyu Park <wkpark@chem.skku.ac.kr>
* src/df.c (print_header): Mark strings for translation.
2000-11-05 Jim Meyering <meyering@lucent.com>
* Version 4.0.31.
* configure, config.h.in, Makefile.in, etc.: Regenerate using the
very latest version (in CVS) of autoconf.
* src/mkdir.c (main): Use make_dir instead of using mkdir directly.
Diagnose as failure when mkdir tries to create (without the
--parent (-p) option) a directory that already exists.
* tests/cp/cp-parents: Add a test for the above fix.
* tests/mv/mv-special-1: Clean up this test.
2000-11-01 Jim Meyering <meyering@lucent.com>
* Version 4.0.30.
* src/chmod.c (main): Better diagnostics.
2000-10-31 Jim Meyering <meyering@lucent.com>
* tests/lang-default: Add all the internationalization-related
variable names autoconf uses. Set and export them in a loop.
`mkdir -p' would create parent directories with permissions
that did not account for the umask. [introduced with the
2000-09-30 change that became part of fileutils-4.0.28]
* src/mkdir.c: Include dirname.h.
Compute the parent directory `mode' unconditionally, effectively
as `$(umask -S),u+wx'.
Use make_path to create only the parent directories, thus using
the same code, both with and without -p, to create the final
component in each file name. Reported by Bob Proulx.
Add tests for the above fix.
* tests/cp/cp-parents: Add some permission tests.
* tests/mkdir/perm: Fix the test so it actually does something.
Run each test also with mkdir's `-p' option and check permissions
on the parent directories.
2000-10-23 Paul Eggert <eggert@twinsun.com>
* doc/getdate.texi: Use @sc where appropriate. Document the
ranges of supported times more precisely. Correct menu
spacing. Document old Latin 12m/12pm tradition. Remove list
of alphabetic time zone names, as it wasn't correct and people
shouldn't be relying on it anyway. Relative items also
account for non-DST adjustments. Fix some misspellings.
2000-10-30 Jim Meyering <meyering@lucent.com>
* configure, config.h.in, Makefile.in, etc.: Regenerate using the
very latest version (in CVS) of autoconf.
2000-10-29 Jim Meyering <meyering@lucent.com>
* Version 4.0.29.
* src/cp.c (do_copy): When constructing dst_path for use with the
--parents option, first remove any trailing slashes from the command
line argument. Otherwise, tests/cp/cp-parent would fail on NetBSD.
* tests/cp/cp-parents: Add a test.
* src/ls.c (DT_INIT): Define.
[enum filetype]: Remove the #ifdef, and use DT_INIT on the
initializers instead. `unknown' was undefined for some systems.
Reported by John David Anglin.
* tests/lang-default (LC_COLLATE): Set it to the empty string and
export it. Otherwise, tests/cp/cp-mv-backup would fail e.g., when
LC_COLLATE was set to en. Reported by Vin Shelton.
2000-10-28 Jim Meyering <meyering@lucent.com>
* src/ls.c (main): In call to gobble_file with `"."', use `directory'
as the type, not `unknown'.
[enum filetype] (arg_directory): Rather than `100', use
a number that should never conflict with another DT_* value.
From Ulrich Drepper.
* Version 4.0.28.
Make `ls' a lot more efficient on systems (e.g., linux-2.4.*)
that store file type information in directory entries.
* src/ls.c [enum filetype] (unknown):
Add members (as yet unused):
(HAVE_STRUCT_DIRENT_D_TYPE): Define.
(format_needs_type): New global.
(main): Set it.
(print_dir): Set `type' from directory entry, if possible.
(gobble_file): Add a parameter, TYPE.
Stat the file only if its type is unknown and we need the type.
Patch from Ulrich Drepper.
Shred can now determine the size of a block devices (e.g. /dev/fd0)
by writing until a write operation fails.
* src/shred.c: Include assert.h.
(fillrand): Add a parameter, size_max.
Adjust caller.
Add an assertion.
(dopass): Break out of the `for (;;)' loop if size < offset.
That can happen now that dopass is called with SIZE == -1.
(do_wipefd): Accept a length of zero only for a regular file.
If lseek fails or returns 0 for a non-regular file, let dopass
determine the length.
Inspired by a patch from Alan Iwi.
* tests/Makefile.am (EXTRA_DIST): Add lang-default.
* tests/rm/hash: Factor out the expensive-test-checking code, ...
* tests/expensive: ... into this new file.
* tests/cp/perm: Disable this test by default; it's expensive.
Mark this as an expensive test.
* tests/Makefile.am (EXTRA_DIST): Add expensive.
* doc/fileutils.texi (shred invocation): Give two examples.
2000-10-26 Jim Meyering <meyering@lucent.com>
* doc/getdate.texi (Authors of getdate): Add Paul Eggert.
2000-10-23 Jim Meyering <meyering@lucent.com>
* Makefile.am (EXTRA_DIST): Add .prev-version.
2000-10-22 Jim Meyering <meyering@lucent.com>
* src/cp.c (make_path_private): Add a FIXME comment.
* tests/lang-default: New file. Set LANG, LC_ALL, and LANGUAGE to ''
(rather than to `C') and export them into the environment.
Suggestion from Bruno Haible.
* tests/cp/backup-is-src: Source lang-default rather than open-coding
the setting/exporting of LANG, LC_ALL, and LANGUAGE.
* tests/cp/cp-mv-backup: Likewise.
* tests/cp/same-file: Likewise.
* tests/cp/slink-2-slink: Likewise.
* tests/cp/symlink-slash: Likewise.
* tests/ln/sf-1: Likewise.
* tests/ls/symlink-slash: Likewise.
* tests/ls/time-1: Likewise.
* tests/mv/backup-is-src: Likewise.
* tests/mv/diag: Likewise.
* tests/mv/force: Likewise.
* tests/mv/hard-link-1: Likewise.
* tests/mv/i-2: Likewise.
* tests/mv/into-self: Likewise.
* tests/mv/into-self-2: Likewise.
* tests/mv/into-self-3: Likewise.
* tests/mv/mv-special-1: Likewise.
* tests/mv/part-symlink: Likewise.
* tests/mv/partition-perm: Likewise.
* tests/rm/r-1: Likewise.
* tests/rm/r-2: Likewise.
2000-10-21 Jim Meyering <meyering@lucent.com>
* tests/cp/cp-parents: New test.
* tests/cp/Makefile.am (TESTS): Add cp-parents;
2000-10-19 Jim Meyering <meyering@lucent.com>
* doc/texinfo.tex: Update from master repository.
* config.sub: Likewise.
* config.guess: Likewise.
* depcomp: Likewise.
2000-10-18 Jim Meyering <meyering@lucent.com>
* tests/mv/part-symlink: Make sure the programs use C-locale formats
and translations. Bruno Haible reported that this test would fail
when using other locales, because ls printed a translation of `total'.
2000-10-16 Jim Meyering <meyering@lucent.com>
* src/ls.c (print_long_format): Wrap date format strings in _(...)
so they may be internationalized. Suggestion from Christian Rose.
2000-10-13 Jim Meyering <meyering@lucent.com>
* src/mv.c (rm_option_init): Remove FIXME-maybe comment.
2000-09-30 Jim Meyering <meyering@lucent.com>
* tests/du/two-args: Update to use newer template.
* src/install.c: Remove big, option-describing comment block.
(main): Rename local `symbolic_mode' to `specified_mode'.
* src/mkdir.c (main): Don't set the umask to 0 and hand-apply
the previously-set umask unconditionally. Do that only when a
MODE has been specified. Otherwise, call mkdir with the full
creation mask (0777 or 0666) and let the kernel apply the umask.
The difference shows up only on file systems with ACL support
when the containing directory has a default ACL.
Patch by Andreas Gruenbacher.
(main): Rename local `symbolic_mode' to `specified_mode'.
* src/mknod.c (main): Likewise (but `call mknod', not mkdir).
Also, when MODE is specified, call chmod to ensure that the
permission bits are set as specified even when the containing
directory has a default ACL.
Patch by Andreas Gruenbacher.
* src/mkfifo.c (main): Likewise (but `call mkfifo', not mkdir).
Patch by Andreas Gruenbacher.
* tests/mkdir/perm: New test.
* tests/mkdir/Makefile.am (TESTS): Add perm.
2000-08-17 Andreas Gruenbacher <ag@bestbits.at>
* src/chmod.c (change_file_mode): Perform the chmod even if the
file mode permission bits are the same as those that should be set.
Omitting the chmod call would be alright with minimal 1003.1e DS17
ACLs, but eventually there may be other permissions in addition to
rwx. E.g., add and delete for directories, and something analogous
to NT's take ownership permission.
2000-09-25 Jim Meyering <meyering@lucent.com>
* tests/cp/same-file: Don't use `diff -u'. It's not portable.
Reported by Christian Krackowizer.
* tests/cp/same-file: Run `diff -c' only if cmp finds a difference.
* tests/mv/part-symlink: Likewise. And clean up.
`shred --exact file1 file2' wouldn't touch `file1'
* src/shred.c (long_opts): --exact doesn't take an argument.
Reported by Alan Iwi.
* tests/shred/exact: New test for this.
* tests/shred/Makefile.am (TESTS): Add exact.
* Makefile.maint (PREV_VERSION): Get the value from a file, rather
than trying to derive it from the current version number.
This is much more robust.
(alpha): Record just-released version number in `.prev-version',
and commit (post-tag).
* Version 4.0.27.
2000-09-24 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi: Update to more closely match changes in 4.0z.
* src/cp.c (usage): Match revised documentation better.
2000-09-24 Jim Meyering <meyering@lucent.com>
* src/cp.c (main): Tweak a relatively new diagnostic.
2000-09-23 Jim Meyering <meyering@lucent.com>
* tests/ls/time-1: Output more information when a test fails.
2000-09-22 Jim Meyering <meyering@lucent.com>
* src/install.c (cp_option_init): Once again make it so install always
unlinks an existing destination before trying to open it for writing.
Otherwise, installing onto a running shared library would make the
running program malfunction.
Reported by Dan Pascu via Michael Stone.
* src/mv.c (do_move): Moving a directory specified with a trailing
slash from one partition to another, and giving it a different
name at the destination would cause mv to get a failed assertion.
Reported by Michael Stone.
(strip_trailing_slashes_2): Move function definition to precede
new first use.
* tests/mv/part-rename: New test for the above fix.
* tests/mv/Makefile.am (TESTS): Add part-rename.
* src/copy.c (copy_internal): Don't try to unlink directories when
using --remove-dest with -R.
* tests/cp/dir-rm-dest: New test for the above fix.
* tests/cp/Makefile.am (TESTS): Add dir-rm-dest.
2000-09-19 Jim Meyering <meyering@lucent.com>
* doc/fileutils.texi (cp invocation): Describe how --force works.
Update description of -P (soon to change meaning to conform w/POSIX).
Describe --remove-destination.
* src/cp.c (main): When used with --force, each of the --link and
--symbolic-link options now implies --remove-destination.
Reported by Miles Bader via Mike Stone.
* tests/cp/link: New file. Test for the above fix.
* tests/cp/same-file: Adjust for this change in behavior.
2000-09-15 Volker Borchert <bt@teknon.de>
* tests/Makefile.am (check-root, root-hint): New targets.
(check-recursive): Depend on root-hint.
* Makefile.am (check-root): New target.
2000-09-16 Jim Meyering <meyering@lucent.com>
* doc/perm.texi (Changing Special Permissions): Remove this statement:
``a' in the USERS part of a symbolic mode does not cause the special
permissions to be affected'... It doesn't reflect what the code does
and isn't required by POSIX. Reported by aldomel@ix.netcom.com via
Mike Stone.
2000-09-15 Jim Meyering <meyering@lucent.com>
* config.sub: Update from master repository.
2000-09-10 Jim Meyering <meyering@lucent.com>
* tests/cp/cp-mv-backup (LC_ALL): Set to `C' and export to ensure
that `ls' sorts the same way for everyone. Reported by Vin Shelton.
* Makefile.maint (b_host): Use freefriends.org, not tug.org.
2000-09-09 Jim Meyering <meyering@lucent.com>
* Makefile.maint (announcement): Use a stricter regexp for the
previous version.
* Version 4.0z.
* tests/cp/special-bits: New file.
* tests/cp/Makefile.am (TESTS): Add special-bits.
(TESTS_ENVIRONMENT): Propagate $MAKE into environment, for special-bits.
* src/copy.c (SAME_OWNER, SAME_GROUP, SAME_OWNER_AND_GROUP): Define.
(copy_internal): Avoid calling chown if we know it's not necessary.
* src/copy.c (copy_internal): Call chmod also if we've made the
preceding chown call and we're supposed to preserve some special
permission bit(s) that would have been reset by chown.
Reported by Greg Louis.
2000-09-08 Jim Meyering <meyering@lucent.com>
* src/mkdir.c (S_IRWXUGO): Remove definition.
* src/sys2.h (S_IRWXUGO): Define here, instead.
2000-09-07 Jim Meyering <meyering@lucent.com>
* doc/texinfo.tex: Update from master repository.
* config.sub: Likewise.
* config.guess: Likewise.
2000-09-05 Jim Meyering <meyering@lucent.com>
* tests/mv/part-symlink: Redirect stdout to stderr before trying to
remove the temp directory. Otherwise, the `rm -rf' would get an
error because the output file wouldn't be closed and the directory
wouldn't be `empty'.
* tests/cp/same-file: Likewise.
* tests/cp/same-file: Remove the `cp -dl sl1 sl2' case,
since it's no longer portable (hard link to a symlink).
Likewise for the `cp -bdl symlink foo' case.
* config.guess: Update from master repository.
2000-09-04 Jim Meyering <meyering@lucent.com>
* src/cp.c: Move declaractions of lstat, stat, and rpl_lstat
as well as the definition of lstat from here...
* src/copy.h: ...to here.
* src/copy.c: Remove declaration of lstat, now that it's in copy.h.
* tests/mv/force: mv's --force (-f) option is no longer needed for
this test, now that all it does is cancel --interactive (-i).
* tests/cp/same-file: Add new tests using cp's --rem option.
Reflect the fact that cp's -f option no longer causes cp to remove the
destination file before trying to open it.
Reflect the fact that `cp -bdl' now makes a backup when copying a
symlink onto the file it points to (FIXME: look into this, and why
cp -bl does *not* do so).
* src/ln.c (do_link): Tweak diagnostics.
2000-09-03 Jim Meyering <meyering@lucent.com>
* src/install.c (cp_option_init): Initialize new members.
* src/cp.c (enum): Add UNLINK_DEST_BEFORE_OPENING.
[long_options]: Add an entry for --remove-destination.
(usage): Describe --remove-destination.
(do_copy): Use unlink_dest_after_failed_open member, not `force.'
(cp_option_init): Initialize new members.
(main): Handle UNLINK_DEST_BEFORE_OPENING (aka --remove-destination).
* src/mv.c: Remove obsolete comment block.
(cp_option_init): Initialize new members.
(usage): Reflect the fact that --force (-f) relates only to whether
mv prompts.
(main): Remove uses of old `force' option member.
* src/install.c (cp_option_init): Reflect
`force' no longer means unlink-dest-before-opening
* src/copy.h (struct cp_options) [force]: Remove member.
[unlink_dest_before_opening]: Add member. `cp -f' and `mv -f' used to
do this. Now, you must use `cp --remove-destination' to get this
behavior. Now, `cp -f' and `mv -f' work as required by POSIX.
[unlink_dest_after_failed_open]: Add member.
Paul Eggert reported that `cp -f' removes an existing destination
file unconditionally, and that is contrary to POSIX.
* src/copy.c (same_file_ok): New function, extracted from copy_internal,
and rewritten.
(copy_internal): Unlink destination file when unlink_dest_before_opening
option is set, and when the source is neither a regular file nor a
directory.
* tests/mv/Makefile.am (TESTS): Add part-symlink.
* src/ls.c: Use strcoll (not strcmp) when comparing file names.
Suggestion from Ulrich Drepper.
2000-08-27 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_reg): New parameters: X and NEW_DST.
Remove the SPARSE_MODE parameter. Update caller.
Perform POSIX-mandated (for cp) open-with-O_WRONLY|O_TRUNC when copying
a regular source file and the destination file exists; upon failure,
unlink that existing file, then open again, but with O_WRONLY|O_CREAT.
(copy_internal): `force' is not related to interactive; remove
the conjunct.
Remove the entire `else if (x->force)' block; justifying
removal of the non-directory part is easy: POSIX requires we try
to open an existing regular file, so we can't unlink it beforehand.
The part that changes the mode on a directory to allow overwriting
isn't necessary.
* src/copy.c (copy_reg): Rename two goto labels.
(copy_internal): Set `new_dst' when the move_mode rename fails,
since we then unlink the destination file.
* src/cp.c (usage): --force is independent of --interactive.
2000-08-24 Jim Meyering <meyering@lucent.com>
Put back the kludge. It's necessary after all.
* src/dd.c (buggy_lseek_support): New function.
(skip): Use it.
Frank Adler reported that although _llseek returns 0, lseek
erroneously returns an offset suggesting the operation succeeded
even though it fails.
* install-sh: Double quote as needed, to protect against arguments
containing spaces or shell metacharacters. Reported by Bruno Haible.
2000-08-23 Jim Meyering <meyering@lucent.com>
* tests/dd/not-rewound: New test, for the SEEK_CUR vs. SEEK_SET part
of the last change. Based on Paul's example.
* tests/dd/Makefile.am (TESTS): Add not-rewound.
2000-08-22 Paul Eggert <eggert@twinsun.com>
* src/dd.c (skip):
Assume lseek failed if it returned zero, since a zero return is
impossible and some buggy drivers return zero.
Use SEEK_CUR rather than SEEK_SET; this fixes a bug when the
file descriptor is not currently rewound.
2000-08-23 Jim Meyering <meyering@lucent.com>
* src/dd.c: Back out my last change. Paul's (above) is better.
2000-08-22 Jim Meyering <meyering@lucent.com>
Don't even try to use lseek on character devices.
* src/dd.c (buggy_lseek_support): New function.
(skip): Use it.
Reported by Martin Gallant via Michael Stone.
2000-08-21 Jim Meyering <meyering@lucent.com>
* tests/cp/same-file: Clean up traps. Create files in a subdir.
* install-sh (oIFS): Remove unmatched double quote, left over from
my 2000-08-12 change. From J. David Anglin.
* Makefile.maint (wget-update): Get the latest version of depcomp.
* depcomp: Update from automake.
2000-08-20 Jim Meyering <meyering@lucent.com>
* Version 4.0y.
Add support for cp's new POSIX-mandated -H and -L options.
* src/copy.h (enum Dereference_symlink): Define.
(struct cp_options) [dereference]: Change type to Dereference_symlink.
* src/copy.c: Declare lstat.
(copy_dir): Set `xstat' member to lstat so that with `-H' we don't
follow symlinks found via recursive traversal.
Update uses of `dereference' to compare against new enum member names.
* src/cp.c (long_opts): Add --dereference, -L.
(usage): Describe -L and -H.
(cp_option_init): Initialize to DEREF_UNDEFINED, not `1'.
(main): Add `H' and `-L' to getopt spec string.
[case 'a']: Initialize `dereference' to DEREF_NEVER, not 0.
[case 'd']: Likewise.
[case 'H']: New case.
[case 'L']: New case.
[case 'R']: Don't set dereference to `0' here.
If it's not yet defined, set x.dereference to DEREF_NEVER
if -R was specified, else set it to DEREF_ALWAYS.
Set x.xstat accordingly for -H.
* doc/fileutils.texi (cp invocation): Describe -H and -L.
* src/mv.c (cp_option_init): Initialize to DEREF_NEVER, not `0'.
* src/install.c (cp_option_init): Initialize to DEREF_ALWAYS, not `1'.
* tests/cp/Makefile.am (TESTS): Add cp-HL.
* tests/cp/cp-HL: New test.
* src/du.c (print_totals): Rename global from opt_combined_arguments.
2000-08-17 Paul Eggert <eggert@twinsun.com>
* src/copy.c (DO_CHOWN): Do not make a special case for non-root.
POSIX.2 requires that cp -p and mv attempt to set the uid of the
destination file, even if you're not root. This affects behavior
only on hosts that let you give files away via chmod.
* NEWS: Describe the above change.
2000-08-15 Jim Meyering <meyering@lucent.com>
* src/du.c (count_entry): Remember the current directory also for `.'
and `..'. Reported by Stephen Smoogen, based on a patch from H.J. Lu.
* tests/du/two-args: Add tests for this.
2000-08-14 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_reg): Move declaration of local, `n_read', into
the scope where it's used.
(copy_internal): In calling copy_reg, pass not the raw `src_mode',
but the possibly-umask-relative mode, `get_dest_mode (x, src_mode)'.
2000-08-13 Jim Meyering <meyering@lucent.com>
* src/copy.c (get_dest_mode): Rename from new_nondir_mode.
Honor the umask for `cp', but not for `mv' or `cp -p'.
(copy_reg): New 4th parameter, dst_mode. Pass it as 3rd arg. to open.
(copy_internal): Change type of locals `src_mode' and `src_type' from
int to mode_t.
Remove unnecessary local, `fix_mode'.
Combine two if-stmts into one.
Pass `src_mode' as 4th arg to copy_reg.
If we've just created a new regular file, return early, skipping the
chmod step. copy_reg now sets permissions of such files upon creation.
Use get_dest_mode, so there's just one chmod call here.
* tests/cp/Makefile.am (TESTS): Add perm.
* tests/cp/perm: New tests, to help ensure the above didn't
change anything.
2000-08-12 Jim Meyering <meyering@lucent.com>
* tests/mv/into-self-2: Remove test for the VERSION_CONTROL and/or
SIMPLE_BACKUP_SUFFIX envvars. Source ../envvar-check instead.
* tests/mv/i-2: Likewise.
* tests/mv/to-symlink: Likewise.
* tests/cp/slink-2-slink: Likewise.
* tests/mv/partition-perm: Likewise.
* tests/cp/cp-mv-backup: Likewise.
* tests/Makefile.am (EXTRA_DIST): Add envvar-check.
* tests/envvar-check: New file.
* install-sh: Remove trailing blanks.
Output diagnostics to stderr, not stdout.
Remove many useless curly braces and double quotes.
2000-08-11 J. David Anglin <dave@hiauly1.hia.nrc.ca>
* install-sh: Improve error handling.
Do the job even when the target file is `busy' on systems
that don't allow such files to be unlinked.
2000-08-12 Jim Meyering <meyering@lucent.com>
* README: Remove note about how installation can fail and the
work-around, now that it's all automated.
2000-08-07 Paul Eggert <eggert@twinsun.com>
* src/cp.c (usage, main): For cp -P messages, mention the new
behavior as well as the old.
2000-08-07 Paul Eggert <eggert@twinsun.com>
Standardize on "memory exhausted" instead of "Memory exhausted"
or "virtual memory exhausted".
Invoke xalloc_die instead of printing our own message.
* src/chmod.c (main): Likewise.
* src/copy.c (copy_dir, copy_internal): Likewise.
* src/cp.c (do_copy): Likewise.
* src/dircolors.c (xstrndup): Likewise.
* src/install.c (main): Likewise.
* src/ln.c (do_link): Likewise.
* src/mkdir.c (main): Likewise.
* src/mkfifo.c (main): Likewise.
* src/mknod.c (main): Likewise.
* src/mv.c (movefile): Likewise.
* src/remove.c (remove_cwd_entries, rm): Likewise.
* src/shred.c (quotearg_colon, xmalloc):
"virtual memory exhausted" -> "memory exhausted"
2000-08-07 Jim Meyering <meyering@lucent.com>
* src/cp.c (enum) [PARENTS_OPTION]: New member.
(long_opts): Update "parents" and deprecated "path" entries to use
`PARENTS_OPTION', not `P'.
(usage): Update --help output.
(main): Warn that the meaning of `-P' will soon change.
2000-08-06 Jim Meyering <meyering@lucent.com>
* doc/fileutils.texi (cp invocation) [-r]: Remove inaccurate mention of
`non-symbolic links'.
2000-08-05 Jim Meyering <meyering@lucent.com>
* config.guess: Update from master repository.
* config.sub: Likewise.
* Regenerate build/config framework to use the latest CVS versions
of automake and autoconf.
2000-07-31 Jim Meyering <meyering@lucent.com>
* src/shred.c [!HAVE_CONFIG_H]: Use `virtual memory exhausted', not
`Memory exhausted'.
2000-07-30 Jim Meyering <meyering@lucent.com>
* src/sys2.h (ISPRINT): Undef before defining to avoid warning.
* src/copy.c (copy_internal): Quote the file names that are displayed
with --verbose and --backup.
* src/remove.c (remove_file): Quote the file names that are displayed
with --verbose.
(remove_dir): Likewise.
* tests/mv/mv-special-1: Add quote marks to match new behavior.
* tests/rm/r-1: Likewise.
* tests/rm/r-2: Likewise.
* src/df.c: Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
* src/dircolors.c: Likewise.
* src/du.c: Likewise.
* src/mkdir.c: Likewise.
* src/mkfifo.c: Likewise.
* src/mknod.c: Likewise.
* src/shred.c: Likewise.
* src/rmdir.c: Likewise.
* src/cp-hash.c: Likewise.
* src/chgrp.c: Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
* src/chmod.c: Likewise.
* src/chown.c: Likewise.
* src/remove.c (remove_cwd_entries): Quote one more file name.
* src/help-version: Remove file. Move it to ...
* tests/help-version: ...here
* tests/Makefile.am (TESTS): Set to help-version.
(TESTS_ENVIRONMENT): Define.
(EXTRA_DIST): Add $(TESTS).
* src/Makefile.am (EXTRA_DIST): Remove help-version.
(TESTS): Remove definition.
(TESTS_ENVIRONMENT): Remove definition.
2000-07-24 Bruno Haible <haible@clisp.cons.org>
* src/ls.c: Include <limits.h>, <stdlib.h>, <wchar.h>, <wctype.h>.
(quote_name): Use mbrtowc to step through the filename string while
replacing nonprintables with question marks. Return the screen width,
not the strlen length. Do no output if the out stream is NULL.
(length_of_file_name_and_frills): Use the quote_name return value.
2000-07-25 Jim Meyering <meyering@lucent.com>
* src/chgrp.c (change_file_group): Save errno from a possibly failed
chown, and use that later. Otherwise, errno itself could be clobbered
before used.
* src/chmod.c (change_file_mode): Likewise.
* src/chown.c (change_file_owner): Likewise.
* src/mv.c (main): Remove unnecessary "%s" argument.
* src/ln.c: Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add more precise diagnostics.
* src/mv.c: Likewise.
* src/cp.c: Likewise.
* src/touch.c: Likewise.
2000-07-23 Jim Meyering <meyering@lucent.com>
* Version 4.0x.
* src/dd.c (main): Give a better diagnostic for e.g.,
`dd if=/dev/fd0 seek=100000000000'.
Convert "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call.
Add many, more precise diagnostics.
* src/remove.c (ASSIGN_STRDUPA): Remove macro definition.
* src/sys2.h (ASSIGN_STRDUPA): New macro (moved here from remove.c).
Fix cp so that `cp -r DIR1/ DIR2' works once again.
* src/cp.c (ASSIGN_BASENAME_STRDUPA): New macro.
(do_copy): Use it here (so we always strip trailing slashes before
calling base_name). Reported by Branden Robinson via Michael Stone.
Test for the above fix.
* tests/cp/Makefile.am (TESTS): Add dir-slash.
* tests/cp/dir-slash: New file.
2000-07-17 Jim Meyering <meyering@lucent.com>
* Makefile.maint (WGET): Define.
(ftp-gnu): Define.
(wget-update): New rule, based on the one in autoconf.
* src/shred.c (usage): Give a little more info.
Remove a FIXME comment.
Avoid warnings.
* src/ls.c (struct bin_str): Declare `string' member to be `const'.
(put_indicator): Declare local `p' to be `const'.
2000-07-15 Jim Meyering <meyering@lucent.com>
Begin converting "`%s'" in format strings to "%s", and wrap each
corresponding argument in a `quote (...)' call -- if there's only one.
If there are two or more, then use `quote_n (0, ...),
quote_n (1, ...), ...'.
Here's the justification, from Paul Eggert (thanks, Paul):
[Consider] the following, taken from fileutils/copy.c:
error (0, errno, _("cannot create directory `%s'"), dst_path);
Now, suppose dst_path is "/'\nrm: removing all files under `/"
(expressed in C string syntax). This will cause the user to see
the following delightfully ambiguous display:
cp: cannot create directory `/'
rm: removing all files under `/'
It would be better to rewrite the above line to be something
like this:
error (0, errno, _("cannot create directory %s"), quote (dst_path));
using the definition of "quote" [in lib/quote.c]. That way,
the user will see the following unambiguous display instead:
cp: cannot create directory `/\'\nrm: removing all files under `/'
One might object that any user who asks to copy a file with
a weird name like that deserves to get confused. But this
is not a good objection, as the source of the string may not
be under the user's control, or even visible to the user.
* src/copy.c: Adapt format strings and args as above. Include quote.h.
I have deliberately not changed the output of --verbose.
FIXME: maybe I should.
* src/cp.c: Likewise.
* src/remove.c: Likewise.
* src/install.c: Likewise. and improve a couple diagnostics.
2000-07-13 Paul Eggert <eggert@twinsun.com>
* NEWS: Describe --quoting-style=clocale.
* doc/fileutils.texi: New clocale quoting style.
Undo the previous change to the locale quoting style.
2000-07-09 Jim Meyering <meyering@lucent.com>
* config.guess: Update from FSF.
* config.sub: Likewise.
2000-07-05 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi: Don't use ` and ' for quoting.
2000-07-01 Jim Meyering <meyering@lucent.com>
* Version 4.0w.
* tests/touch/dangling-symlink: Warn about the problem rather
than failing, on some very recent (at least 2.3.99) versions of
the Linux kernel. Suggestion from Ulrich Drepper.
* tests/touch/Makefile.am (TESTS_ENVIRONMENT): Define host_triplet
for use in the dangling-symlink test.
2000-06-28 Jim Meyering <meyering@lucent.com>
* tests/mv/i-2: Don't copy `out' into /tmp.
2000-06-26 Paul Eggert <eggert@twinsun.com>
Now that savedir.c has been cleaned up...
* src/chgrp.c (change_dir_group): Don't set errno before
invoking savedir, and assume that errno is nonzero if savedir fails.
* src/chmod.c (change_dir_mode): Likewise.
* src/chown.c (change_dir_owner): Likewise.
* src/copy.c (copy_dir): Likewise.
* src/du.c (count_entry): Likewise.
2000-06-26 Paul Eggert <eggert@twinsun.com>
* src/df.c (show_dev): Round disk usage percentage up, not to
nearest value. Use integer arithmetic if it's easy. Fix bug
when converting twos-complement negative values to floating point.
2000-06-25 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Don't return immediately after a failed
copy_dir call -- otherwise, the failure to read a single file in a
source directory would cause the containing destination directory
not to have the owner and/or permissions set properly.
Reported by Piotr and Maciej Kwapulinski.
* tests/cp/fail-perm: Test for it.
* tests/cp/Makefile.am (TESTS): Add fail-perm.
* Version 4.0v.
2000-06-18 Jim Meyering <meyering@lucent.com>
* README-alpha: Update.
2000-06-17 Jim Meyering <meyering@lucent.com>
* tests/install/basic-1: Don't fail (just exit 77) if strip doesn't
work. Suggestion from Ulrich Drepper.
Add canonical trap/mkdir/cd, plus exit portability cruft.
2000-06-16 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_reg): Give a slightly better diagnostic upon
open failure.
2000-06-15 Paul Eggert <eggert@twinsun.com>
* NEWS, doc/fileutils.texi: df, du, and ls now round disk
usage up and disk free space down.
* src/df.c (df_readable): New arg for rounding style.
Round negative numbers correctly.
(show_dev): Round disk usage up and disk free space down.
* src/ls.c (print_dir, gobble_file, print_long_format,
print_file_name_and_frills): Round disk usage up.
* src/du.c (print_size): Likewise.
2000-06-14 Andreas Schwab <schwab@suse.de>
* tests/rm/r-1 (framework_failure): Initialize this instead of
test_failure.
2000-06-12 Jim Meyering <meyering@lucent.com>
* Version 4.0u.
* tests/rm/r-1: Clean up.
Be careful to remove temp directory upon interrupt.
* src/mv.c (main): Give the correct diagnostic when using the
--target-dir=DIR option, but no arguments.
Patch from Michael Stone. Reported by Herbert Xu.
* tests/mv/diag: New test for this.
* tests/mv/Makefile.am (TESTS): Add diag.
2000-06-08 Brian Youmans <3diff@gnu.org>
* doc/perm.texi (Multiple Changes): Fix typo.
* doc/fileutils.texi: A few typos and minor formatting fixes.
* doc/getdate.texi: Likewise.
2000-06-06 Jim Meyering <meyering@lucent.com>
* Makefile.maint (alpha_subdir): Factor out `gnu/fetish'.
2000-06-04 Jim Meyering <meyering@lucent.com>
* Version 4.0t.
* src/df.c (show_point) [HAVE_REALPATH && !HAVE_RESOLVEPATH]:
Cast undeclared `realpath' to char* to avoid warning.
2000-06-03 Jim Meyering <meyering@lucent.com>
* src/install.c (usage): Document that -v is a synonym for --verbose.
* src/mkdir.c: Allow -v as synonym for --verbose, to be consistent
with other fileutils.
* src/rmdir.c: Likewise.
Suggestion from François Pinard.
2000-06-02 Jim Meyering <meyering@lucent.com>
* configure.in (ALL_LINGUAS): Add Danish (da).
2000-05-29 Jim Meyering <meyering@lucent.com>
Allow `cp -d -u' to copy one symlink onto another that's identical.
* src/copy.c (copy_internal): Change the || to ^ in the big sameness
test, so copying one symlink onto another, identical one doesn't fail
here.
If the symlink call fails, don't report the failure if the destination
already exists and is a symlink pointing to the proper name.
Reported by Andrew Burgess.
* tests/cp/slink-2-slink: New test.
* tests/cp/Makefile.am (TESTS): Add slink-2-slink.
* tests/cp/same-file: Adapt to fit new semantics of `cp -d'.
2000-05-25 Jim Meyering <meyering@lucent.com>
* src/dd.c (close_stdout_wrapper): Don't dereference NULL pointer.
From Bob Proulx.
2000-05-23 Jim Meyering <meyering@lucent.com>
* tests/shred/remove: Add traps to clean up.
Correct broken running-as-root test.
* tests/mv/i-2: Exit 77 when run as root. Reported by Andreas Schwab.
2000-05-20 Jim Meyering <meyering@lucent.com>
* Version 4.0s.
* tests/mv/Makefile.am (TESTS): Add i-2, for 2000-05-12 change.
* tests/rm/r-2: Clean up.
* tests/ls/time-1 (LC_ALL): Set it unconditionally.
2000-05-19 Jim Meyering <meyering@lucent.com>
Save device number as well as inode number for each directory,
and use both in comparisons. This makes the directory cycle
test more robust, and closes the small remaining hole whereby
an attacker could subvert a running `rm -r' command.
* src/remove.c (struct active_dir_ent) [st_dev]: New member.
[st_ino]: Rename from `inum'.
(make_active_dir_ent) [device]: New parameter.
(hash_compare_active_dir_ents): Compare using SAME_INODE macro.
(fspec_init_common): New function, factored out.
(fspec_init_file): Initialize have_device member.
(fspec_get_full_mode): Remove parameter. Update caller.
Set have_device and st_dev members.
* src/remove.h (struct File_spec) [have_device, st_dev]: New members
2000-05-18 Jim Meyering <meyering@lucent.com>
* src/remove.c (rm): Combine adjacent fputc and fprintf.
* tests/rm/Makefile.am (TESTS): Add hash.
* tests/rm/hash: New test for the fix in lib/hash.c.
2000-05-17 Jim Meyering <meyering@lucent.com>
* src/remove.c (remove_dir): Detect (and fail upon) attempt to subvert
a running `rm -r'. Reported by Morten Welinder.
2000-05-15 Jim Meyering <meyering@lucent.com>
* src/ln.c (do_link): Use complete strings in diagnostics so they
are easier to translate. Reported by Michel Robitaille.
(main): Drop support for the case in which S_ISLNK wasn't defined.
It was broken in any case.
* tests/ls/time-1: Set LC_ALL to `C' to avoid failure when the
current locale is not C (POSIX). From Matthew Clarke.
2000-05-13 Jim Meyering <meyering@lucent.com>
* src/help-version: New test.
* src/Makefile.am (TESTS): Define.
(TESTS_ENVIRONMENT): Likewise.
(EXTRA_DIST): Add help-version.
* src/chgrp.c: Arrange to call close_stdout only upon exit.
* src/chmod.c: Likewise.
* src/chown.c: Likewise.
* src/cp.c: Likewise.
* src/df.c: Likewise.
* src/dircolors.c: Likewise.
* src/du.c: Likewise.
* src/install.c: Likewise.
* src/ln.c: Likewise.
* src/ls.c: Likewise.
* src/mkdir.c: Likewise.
* src/mkfifo.c: Likewise.
* src/mknod.c: Likewise.
* src/mv.c: Likewise.
* src/rm.c: Likewise.
* src/rmdir.c: Likewise.
* src/shred.c: Likewise.
* src/sync.c: Likewise.
* src/touch.c: Likewise.
* src/dd.c: Include closeout.h.
(usage): Don't call close_stdout here.
(close_stdout_wrapper): New, kludgey, function and file-scoped global.
(main): Register it with atexit.
2000-05-12 Jim Meyering <meyering@lucent.com>
Unlike for mv, -i doesn't cancel the effect of -f
and -f doesn't cancel the effect of -i.
* src/cp.c (main) ['f']: Don't reset `x.interactive'.
['i']: Don't reset `x.force'.
* src/copy.c (copy_internal): Fix force and interactive tests.
Patch from Michael Stone, reported by Jeff Sheinberg.
2000-05-09 Jim Meyering <meyering@lucent.com>
* src/shred.c: Include sys/types.h in shred.c before including
sys/stat.h or system.h. From John David Anglin.
2000-05-08 Jim Meyering <meyering@lucent.com>
* tests/shred/remove: Don't use touch in root test. Instead, append to
the test file, since now touch operates even on files which deny owner
write access.
2000-05-06 Jim Meyering <meyering@lucent.com>
* src/Makefile.am (shred_LDADD): Add @LIB_CLOCK_GETTIME@.
* src/rmdir.c (EEXIST): Remove now-unused definition.
(ENOTEMPTY): Likewise.
(errno_rmdir_non_empty): Rewrite to use RMDIR_ERRNO_NOT_EMPTY,
which is determined by the autoconf test in m4/rmdir-errno.m4.
2000-05-03 Bruno Haible <haible@clisp.cons.org>
Don't fail when running `make check' with non-`C' locale.
* tests/cp/symlink-slash: During ls, set LANGUAGE (for GNU gettext)
and LC_ALL (for systems which look at LC_MESSAGES).
* tests/rm/r-2: Define LC_ALL instead of LANG, in case the user has
LC_CTYPE or LC_ALL set. Define it and LANGUAGE before the first use
of sort.
2000-05-03 Jim Meyering <meyering@lucent.com>
With a recent glibc, _GNU_SOURCE, and -O, strndup may be a macro.
* src/sys2.h (!HAVE_DECL_STRNDUP): Declare strndup.
* src/dircolors.c: Remove declaration of strndup.
Reported by Bruno Haible.
2000-05-02 Jim Meyering <meyering@lucent.com>
* src/rm.c (usage): Add the answer to `How do I remove a file named -f?'
2000-05-01 Jim Meyering <meyering@lucent.com>
* src/install.c (change_attributes): Don't even attempt the chmod
if the chown fails. Before, when a non-root user ran `install -m 4755
-o nobody FILE DEST', DEST would set-uid not to `nobody' but rather to
the ID of the installing user. Reported by Marc Olzheim.
2000-04-30 Jim Meyering <meyering@lucent.com>
* src/touch.c (O_NOCTTY): Define if not defined already.
(touch): Add O_NOCTTY to the flags passed to open.
2000-04-29 Jim Meyering <meyering@lucent.com>
* Version 4.0r.
* src/cp.c [LSTAT_FOLLOWS_SLASHED_SYMLINK] (lstat): Define to rpl_lstat.
2000-04-27 Jim Meyering <meyering@lucent.com>
Clean up.
* tests/mkdir/Makefile.am (TESTS_ENVIRONMENT): Set PATH, not MKDIR.
* tests/mkdir/p-1: Use mkdir, not $MKDIR.
* tests/mkdir/p-2: Likewise.
* configure.in (AC_OUTPUT): Add tests/du/Makefile.
* tests/Makefile.am (SUBDIRS): Add du.
* tests/du: New directory.
* tests/du/two-args: New test.
* tests/mkdir/special-1: New test.
* tests/mkdir/Makefile.am (TESTS): Add special-1.
2000-04-25 Paul Eggert <eggert@twinsun.com>
* src/du.c (pop_dir): Remove through_symlink arg; use null cwd
for that purpose instead.
(count_entry): Also save the directory if we're saving more
than one level.
Fix file descriptor and memory leak when chdir fails.
2000-04-26 Jim Meyering <meyering@lucent.com>
* src/mkdir.c: Rename global: s/path_mode/create_parents/.
(main): No longer perform explicit chmod when creating
parent directories, since make_path now does the chmod.
2000-04-17 Jim Meyering <meyering@lucent.com>
* src/chown.c: New option: --from=CURRENT_OWNER:CURRENT_GROUP.
(enum) [FROM_OPTION]: New member.
(long_options): New getopt spec.
(change_file_owner): Add old_user, old_group parameters. Use them.
(change_dir_owner): Likewise.
(usage): Describe.
(main): New case.
From Andries Brouwer.
* doc/fileutils.texi (invoking chown): Document it.
2000-04-16 Jim Meyering <meyering@lucent.com>
* src/cp.c: New option: --strip-trailing-slashes.
(enum) [STRIP_TRAILING_SLASHES_OPTION]: New member.
(remove_trailing_slashes): New global.
(long_opts): New getopt spec.
(usage): Describe.
(do_copy): Strip trailing slashes on SOURCE names only if the new
option has been specified.
(main): New case.
* tests/cp/symlink-slash: New test for the change in behavior.
* tests/cp/Makefile.am (TESTS): Add symlink-slash.
* doc/fileutils.texi (Trailing slashes): Factor out discussion on
trailing slashes into its own node.
Cross reference from cp and mv.
2000-04-14 Jim Meyering <meyering@lucent.com>
* src/touch.c (touch): Add O_NOCTTY to the list of open-time flags.
2000-04-13 Jim Meyering <meyering@lucent.com>
Move some code into m4/.
* configure.in (_GNU_SOURCE): Don't define here.
(AC_SYS_LARGEFILE): Don't use here.
(AM_C_PROTOTYPES): Don't use here.
* acconfig.h: Remove now-unused file.
2000-04-08 Jim Meyering <meyering@lucent.com>
* doc/fileutils.texi (cp invocation): Mention that there is an
application for cp's --sparse=never option. From Martin Hippe.
(cp invocation): Describe how --backup and --force
can be useful together.
2000-03-10 Alan Iwi <iwi@atm.ox.ac.uk>
* src/ls.c: Add support for "ln=target" in the LS_COLORS variable,
to colorize links as for the file/directory pointed to.
* src/dircolors.hin: Add a few words of documentation of the above.
2000-04-08 Jim Meyering <meyering@lucent.com>
* src/cp.c (usage): Document that while the --backup option takes an
optional argument, the -b option accepts none.
(main): Use `backup type' in call to xget_version, not the
now-deprecated `--version-control'.
* src/install.c: Likewise.
* src/ln.c: Likewise.
* src/mv.c: Likewise.
2000-03-12 Jim Meyering <meyering@lucent.com>
Merge from textutils.
* src/system.h (O_BINARY, O_TEXT): Define if necessary.
(SET_BINARY, SET_BINARY2): Define.
(DEV_BSIZE): Define to BBSIZE if appropriate.
2000-03-10 Jim Meyering <meyering@lucent.com>
* tests/mv/mv-special-1: Make the message more like that in the
similar touch and shred tests.
* tests/touch/fifo: Accommodate SunOS-NFS-mounting-OpenBSD mkfifo
bug and `exit 77' if the fifo cannot be created.
Report and suggestion from Volker Borchert.
2000-03-03 Jim Meyering <meyering@lucent.com>
* po/Makefile.in.in (dist distdir): Don't use `ln' (which was just a
space optimization anyway) to populate $(distdir). Otherwise, the dist
rules that change permissions would end up affecting the master sources.
2000-03-01 Paul Eggert <eggert@twinsun.com>
* src/df.c (show_point): Ignore shortcuts based on path
prefixes that are loop file system mount points, since they
yield undesirable output.
2000-02-29 Jim Meyering <meyering@lucent.com>
* src/ls.c (decode_switches): Remove `e' from getopt_long's list of
option characters. Reported by John Summerfield.
2000-02-28 Jim Meyering <meyering@lucent.com>
* tests/install/basic-1: Use ginstall, not install.
2000-02-27 Jim Meyering <meyering@lucent.com>
* Version 4.0q.
* src/sys2.h: Guard declaration of strtoull also with
`&& HAVE_UNSIGNED_LONG_LONG'.
* src/sys2.h: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL...'
now that autoconf always defines the HAVE_DECL_ symbols.
* src/install.c (install_file_to_path): Always use install_file_in_file.
Based on a patch from Adam Klein via Michael Stone.
* tests/install/Makefile.am (TESTS): Add create-leading.
* tests/install/create-leading: New file.
* tests/install/basic-1: Clean up.
* tests/install/Makefile.am (TESTS_ENVIRONMENT): Add PATH. Remove cruft.
2000-02-26 Jim Meyering <meyering@lucent.com>
Tranform the generated src/Makefile.in file so it falls back on
using /bin/rm when necessary. The old rule didn't always work.
This is necessary only on certain losing systems, and because this
package builds an `rm' executable and some people put `.' too
early in their PATH.
* Makefile.am (DISTCLEANFILES): Remove .deps and `FIXME' comment.
(EXTRA_DIST): Add .kludge-stamp.
(.kludge-stamp): New rule.
* src/Makefile.am (AUTOMAKE): Remove definition.
(Makefile.in): Remove dependency on automake-wrap script.
(EXTRA_DIST): Remove automake-wrap.
* src/automake-wrap: Remove file.
* tests/rm/r-2: Don't make the success of the test depend on the
order in which directory entries are processed.
Reported by Andreas Schwab.
2000-02-12 Jim Meyering <meyering@lucent.com>
* po/POTFILES.in: Add lib/userspec.c.
* doc/fileutils.texi (chown invocation): Deprecate use of `.'.
* src/chown.c (usage): Mention only `:', and not `.' as the separator,
since POSIX allows only the former.
Prompted by a report from Manas Garg.
2000-02-11 Jim Meyering <meyering@lucent.com>
* src/df.c (main): Count the stat'able arguments.
Print the header line only if there is at least one valid argument.
Reported by Andy Longton <alongton@metamark.com>
2000-02-10 Jim Meyering <meyering@lucent.com>
Make du work when invoked from an unreadable directory.
* src/du.c (pop_dir): New function.
(count_entry): Factor out common code (pop_dir), and call the new
function instead.
Move declaration of global, `stat_buf' into this function.
(du_files): Don't stat `.' or call save_cwd, since count_entry
never returns with a changed working directory.
2000-02-09 Jim Meyering <meyering@lucent.com>
* tests/mv/mv-special-1: Use $null and $dir in place of literals
in `here' script.
Exit 77 if we can't set up the framework (Volker Borchert reported
that this test would fail because mknod failed when run on SunOS4.1.4
using NFS-mounted disk from an OpenBSD system).
2000-02-05 Jim Meyering <meyering@lucent.com>
* src/copy.c (copy_internal): Don't allow mv to move a directory onto
a non-directory. Reported by Brian Kimball via Michael Stone.
2000-02-03 Jim Meyering <meyering@lucent.com>
* tests/mv/Makefile.am (TESTS): Add dir-file.
(TESTS_ENVIRONMENT): Remove vestiges of old tests.
* tests/mv/dir-file: New file.
2000-02-02 Jim Meyering <meyering@lucent.com>
* tests/touch/Makefile.am (TESTS): Add fifo.
* tests/touch/fifo: New file.
2000-02-01 Jim Meyering <meyering@lucent.com>
* src/touch.c (O_NDELAY): Define to 0 if not defined.
(O_NONBLOCK): Define to O_NDELAY if not defined.
(touch): Open with O_NONBLOCK, so one can touch a fifo without hanging.
Reported by Eric G. Miller via Michael Stone.
* man/*.x: Change ." to .\".
Reported by Andreas Schwab and Brendan O'Dea.
2000-01-31 Jim Meyering <meyering@lucent.com>
* man/Makefile.maint (ginstall_filter): Define.
($(man_MANS)): Use it here so that the install.1 man page refers
to `install', not `ginstall'. Reported by Andreas Schwab.
2000-01-30 Jim Meyering <meyering@lucent.com>
* Version 4.0p.
* configure.in: Move library-related tests into m4/lib-check.m4.
* src/system.h (ST_NBLOCKS): Use st_size only for regular files and
for directories. From H. J. Lu.
* src/dd.c (main): Exit with nonzero status if ftruncate fails.
2000-01-24 Jim Meyering <meyering@lucent.com>
* src/ln.c (usage): Describe behavior when LINK_NAME is omitted.
From Michael Stone.
* src/mv.c (main): Don't expect array index `n_files - 1' to evaluate
to `-1' for unsigned int n_files == 0. Doing so lead to a segfault on
alpha. From Michael Stone.
2000-01-23 Jim Meyering <meyering@lucent.com>
* configure.in (AM_FUNC_OBSTACK): Remove. (move to m4/.)
Remove nearly all function checks (moved to m4/.)
(AC_SUBST(DF_PROG)): Move this to m4/.
(ftruncate test): Move into new file: m4/ftruncate.m4.
(AC_HEADER_MAJOR, AC_HEADER_DIRENT): Move into m4/.
Remove df-related tests. i.e., move jm_LIST_MOUNTED_FILESYSTEMS,
jm_FSTYPENAME, and jm_FILE_SYSTEM_USAGE) into m4/.
2000-01-22 Jim Meyering <meyering@lucent.com>
* configure.in: Move addext.c prerequisites from this file into m4/.
(AC_CHECK_HEADERS): Move these checks into m4/.
2000-01-17 Paul Eggert <eggert@twinsun.com>
* src/dd.c (interrupt_handler): Likewise.
(install_handler): Use SA_NOCLDSTOP, not _POSIX_VERSION,
to decide whether to call sigaction; this fixes an old typo.
2000-01-16 Jim Meyering <meyering@lucent.com>
* lib/Makefile.am: Sync with sh-utils/lib/Makefile.am.
* configure.in: Remove AM_FUNC_ERROR_AT_LINE, jm_FUNC_GNU_STRFTIME,
jm_FUNC_GROUP_MEMBER, jm_FUNC_GETGROUPS, AC_FUNC_VPRINTF, and
AC_FUNC_ALLOCA. They're now in m4/.
Sync with the version from emacs-20.5.
* lib/alloca.c
(<string.h>): Include if HAVE_STRING_H.
(<stdlib.h>): Include if HAVE_STDLIB_H.
(alloca): Abort if malloc fails.
Reported by Paul Eggert.
2000-01-15 Jim Meyering <meyering@lucent.com>
* configure.in (AC_REPLACE_FUNCS): Remove these: euidaccess memcpy
memcmp memset mkdir rmdir rpmatch stpcpy strndup strstr strtol
strtoul strverscmp. Now they're in m4/.
2000-01-12 Jim Meyering <meyering@lucent.com>
* tests/shred/remove: Make the warning that this shred test may not
be run as root more prominent. Suggestion from Volker Borchert.
2000-01-11 Paul Eggert <eggert@twinsun.com>
Quote multibyte characters correctly.
* lib/quotearg.c (ISGRAPH): Remove.
(ISPRINT): New macro.
(<wchar.h>): Include if HAVE_MBRTOWC && HAVE_WCHAR_H.
(isprint, mbrtowc, mbsinit, mbstate_t): New macros,
defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
(quotearg_buffer_restyled): New function, with most of the old
quotearg_buffer's contents.
Major rewrite to support multibyte characters.
(quotearg_buffer): Now just calls quotearg_buffer_restyled.
* m4/c-bs-a.m4: New file.
* m4/prereq.m4 (jm_PREREQ_QUOTEARG): New macro.
(jm_PREREQ): Use it.
2000-01-11 Paul Eggert <eggert@twinsun.com>
* lib/modechange.c (mode_compile): Use uintmax_t, not unsigned
long, to parse numeric modes. Check for any unknown bits, not
just unknown bits left of the leftmost known bit.
2000-01-11 Paul Eggert <eggert@twinsun.com>
* lib/getdate.y: Update copyright notice.
2000-01-11 Paul Eggert <eggert@twinsun.com>
* COPYING: Sync with latest FSF version (fixing a minor Y2k problem).
2000-01-11 Paul Eggert <eggert@twinsun.com>
* lib/exclude.c, lib/exclude.h: Sync to the slightly more
general version of GNU tar.
* src/du.c (count_entry):
Adjust to new calling convention for excluded_filename.
(main): Likewise, for add_exclude_file.
2000-01-11 Jim Meyering <meyering@lucent.com>
* lib/memcpy.c (memcpy): Protoize.
Prepare to sync lib/ directories of fileutils, sh-utils, and textutils.
* lib/Makefile.am: s/fu/fetish/
* src/Makefile.am: s/libfu/libfetish/
* lib/hash.c (hash_initialize): Fix typo in comment.
From François Pinard.
2000-01-10 Jim Meyering <meyering@lucent.com>
* Version 4.0o.
* lib/Makefile.am (noinst_HEADERS): Add nanosleep.h.
2000-01-09 Jim Meyering <meyering@lucent.com>
* Version 4.0n.
* src/ln.c (do_link): Produce the same sort of one-line output for
`--backup --verbose' as cp, mv, install. Before this, the backup
file name wasn't printed at all.
This affects cp, install, and mv.
* src/copy.c (copy_internal): When making backup files in verbose
mode, print the backup file name on the same line as the rest of the
information, e.g., `a -> b (backup: b.~13~)' rather than on a separate
line by itself. Suggestion from Karl Berry.
2000-01-08 Jim Meyering <meyering@ascend.com>
* lib/error.c (error): Use __strerror_r's return value only if
HAVE_WORKING_STRERROR_R.
(error_at_line): Likewise.
* Makefile.maint (null_AM_MAKEFLAGS): Define.
(my-distcheck): Use it to avoid distributing out of date files
whose derivation would require a maintainer tool.
2000-01-07 Jim Meyering <meyering@ascend.com>
* lib/euidaccess.c: Sync with the GNU C library.
* tests/dir/Makefile.am (TESTS_ENVIRONMENT): Add `pwd`/ prefix
to exported PATH value (though not strictly necessary, here).
* tests/dd/Makefile.am: Likewise.
* tests/dircolors/Makefile.am: Likewise.
* tests/rm/Makefile.am: Likewise.
* tests/rmdir/Makefile.am: Likewise.
* tests/shred/Makefile.am: Likewise.
* tests/touch/Makefile.am: Likewise.
* tests/shred/Makefile.am: Likewise.
2000-01-06 Jim Meyering <meyering@ascend.com>
* man/help2man: Import version 1.020.
* lib/strftime.c: Sync with the GNU C Library.
2000-01-06 Paul Eggert <eggert@set.twinsun.com>
* tar/lib/getdate.y: Sync tm_diff with the GNU C Library.
(TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed.
(tm_diff): Renamed from difftm. All uses changed.
Replace body with that taken from GNU C Library 2.1.3pre1.
(get_date): Prefer tm_gmtoff to tm_diff if available.
2000-01-04 Paul Eggert <eggert@twinsun.com>
* savedir.c (savedir): Don't store past the end of an array if
name_size is zero and the directory is empty.
* Makefile.maint (PREV_VERSION): Tweak so it handles e.g., 2.0a -> 2.0.
(alpha): Create xdelta diffs.
2000-01-02 Jim Meyering <meyering@ascend.com>
* Version 4.0m.
* src/mv.c: New option: --strip-trailing-slashes.
1999-11-18 Paul Eggert <eggert@twinsun.com>
* lib/strftime.c (my_strftime): Some old compilers object to
'\a', so don't bother optimizing for it.
2000-01-01 Paul Eggert <eggert@twinsun.com>
Fix bug: `df PATH' sometimes misbehaves when there is an
inaccessible mount point unrelated to PATH.
* configure.in (AC_CHECK_FUNCS): Add realpath, resolvepath.
* src/df.c (#pragma alloca): Add if _AIX is defined.
(path-concat.h): Include.
(show_point): If HAVE_REALPATH or HAVE_RESOLVEPATH is defined,
find the real absolute path for PATH, and use that to find the
mount point.
(show_point): Prefer non-dummy entries in shortcuts, too.
Disable bogus mount dirs instead of restatting them each time.
1999-12-30 Jim Meyering <meyering@ascend.com>
1999-12-17 Kalle Olavi Niemitalo <tosi@stekt.oulu.fi>
* src/rmdir.c (remove_parents, main): Don't pass errno to error
when printing "removing directory" message. Failure of rmdir is
handled elsewhere.
1999-12-23 Jim Meyering <meyering@ascend.com>
* configure.in: Remove clock_gettime tests.
Now they're in m4/jm-macros.m4.
* src/ln.c (usage): Correct typos.
List new --target-directory=... usage.
Reported by Göran Uddeborg
* src/mv.c (usage): List new --target-directory=... usage.
1999-12-22 Jim Meyering <meyering@ascend.com>
* lib/getdate.y (get_date): Fix typo in time_t overflow test.
From Michael Stone.
1999-12-21 Andreas Schwab <schwab@suse.de>
* tests/shred/remove: Use $file, not $tmp/file. Exit 77 if run as
root.
1999-12-20 Paul Eggert <eggert@twinsun.com>
* src/df.c (ceil_percent): Remove.
(show_dev): Avoid overflow problems when calculating percent.
Do not display negative percents.
1999-12-19 Jim Meyering <meyering@ascend.com>
* Version 4.0l.
* doc/fileutils.texi: Clarify and combine descriptions of -c and of
--time=ctime.
Likewise for -u/--time=atime.
* src/ls.c [! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Use lstat wrapper.
[Notice the new configure-time test in m4/lstat-slash.m4. ]
(main): Back out change from 1999-02-19 that made ls remove
trailing slashes from command line arguments to accommodate early
versions of Linux. Now, `ls symlink-to-dir/' acts like
`ls symlink-to-dir/.' thus following the symbolic link, as POSIX says
it should. Suggestion from Bruno Haible and Andreas Schwab.
* lib/xstat.in (slash_aware_lstat): New function.
(rpl_@xstat@): Use it.
* lib/Makefile.am (lstat.c): Adapt rule to handle new parts of xstat.in.
(lstat.c): Likewise.
Make sure ls does the right thing with symlinks and trailing slashes.
* tests/ls/Makefile.am (TESTS): Add symlink-slash.
* tests/ls/symlink-slash: New test, for above-fixed bug.
1999-12-18 Jim Meyering <meyering@ascend.com>
* src/shred.c (wipename): When repeatedly renaming a file, making the
name shorter and shorter, skip to the next shorter length length if a
rename fails (e.g. due to permission denied). Otherwise, this loop
would iterate for so long that shred would appear to be stuck in an
infinite loop for any but the shortest file names.
Reported by Joe Orton.
* configure.in (AC_OUTPUT): Add tests/shred/Makefile.
* tests/Makefile.am (SUBDIRS): Add shred.
* tests/shred: New directory
* tests/shred/remove: New file. Tests for the above-fixed bug.
1999-12-13 Jim Meyering <meyering@ascend.com>
* lib/makepath.c (make_path): Consistently use `error' to output
the verbose, `created directory ...' messages.
Reported by Bernhard Rosenkraenzer.
1999-12-12 Jim Meyering <meyering@ascend.com>
Move 120+ lines of stat.h-related macros from system.h (not shared)
to sys2.h, which is shared between fileutils, sh-utils, textutils.
* src/system.h: Move them from here...
* src/sys2.h: ... to here.
* src/system.h (S_IRUSR, S_IRGRP, S_IWGRP, S_IROTH, S_IWOTH): Define
if not defined. This was necessary on a NeXT Turbostation running
Mach 3.3. Reported by Nelson H. F. Beebe.
* src/ls.c (decode_switches): If -c or -u is specified and not -l
(or any other option that implies -l), and no sort-type was specified,
then sort by the ctime (-c) or atime (-u). Part of this change reverts
the 1998-01-10 delta.
(usage): Update to reflect this change.
Reported by Paul Slootman via Michael Stone.
1999-12-09 Jim Meyering <meyering@ascend.com>
* src/df.c (BLOCK_SIZE_OPTION, SYNC_OPTION, NO_SYNC_OPTION): Define
these and use them instead of `CHAR_MAX + n'.
* src/du.c (BLOCK_SIZE_OPTION, EXCLUDE_OPTION, MAX_DEPTH_OPTION):
Likewise.
* src/touch.c (TIME_OPTION): Likewise.
* src/rmdir.c (IGNORE_FAIL_ON_NON_EMPTY_OPTION): Likewise.
* tests/ls/time-1: Test more of the framework (touch's -a and -m
options) before running the actual ls test.
1999-12-07 Jim Meyering <meyering@ascend.com>
* tests/cp/cp-mv-backup: Use 1>&2 rather than `1<&-'.
Suggestion from Volker Borchert.
1999-12-05 Jim Meyering <meyering@ascend.com>
* Makefile.maint: Remove ftp.enst.fr.
1999-12-04 Jim Meyering <meyering@ascend.com>
* Version 4.0k.
* tests/mv/into-self-2: Adapt to reflect this change in behavior.
Make sure the VERSION_CONTROL envvar is not set.
Run diff if comparison fails.
* src/copy.c (copy_internal): In move mode, if the rename attempt
fails, then unlink any existing destination file. This makes a
cross-device `mv' more consistent with the intra-device behavior.
This change is required by POSIX to make a cross-device move act with
semantics similar to those of the rename syscall. For example now
`mv' can move a file onto a symlink to itself when that symlink
is on a separate partition. With fileutils-4.0j, it would fail with
a diagnostic saying they were the same file.
Reported by Bruno Haible.
* tests/mv/to-symlink: New file. Adds test for the above.
* tests/mv/Makefile.am (TESTS): Add to-symlink.
* tests/cp/cp-mv-backup (trap): Be careful to close $actual before
removing the containing directory. Otherwise, on some systems rmdir
fails to remove the containing directory.
* tests/ls/time-1: List --full-time dates upon failure.
1999-12-02 Andreas Schwab <schwab@suse.de>
* src/ls.c (check_symlink_color): New variable.
(main): Set it if we need to check for dangling symlinks when
displaying colors.
(gobble_file): Check check_symlink_color instead of print_with_color.
1999-11-30 Paul Eggert <eggert@twinsun.com>
* src/ls.c (usage): Shorten help for --show-control-chars.
1999-11-30 Jim Meyering <meyering@ascend.com>
Give the right diagnostic when failing to create a file in an
unwritable directory.
* src/touch.c (touch): Record errno upon failed errno and use that
saved value if a subsequent fstat, stat or utime call fails.
Reported by Wichert Akkerman via Michael Stone.
1999-11-27 Jim Meyering <meyering@ascend.com>
Clean up test scripts.
* tests/mv/setup: Don't set/use DF or MKDIR. Use df and mkdir instead.
* tests/mv/mv-special-1: Likewise for these: LS MV MKDIR MKNOD RM TOUCH
* tests/mv/backup-is-src: Likewise for RM and MV.
* tests/mv/hard-link-1: Likewise.
* tests/mv/into-self: Likewise.
* tests/mv/into-self-3: Likewise.
Add test for 1999-05-23 change to src/copy.c (copy_internal).
* tests/mv/partition-perm: New file.
* tests/mv/Makefile.am (TESTS): Add partition-perm.
* Version 4.0j.
1999-11-22 Paul Eggert <eggert@twinsun.com>
* src/df.c (df_readable): Now returns char const *, not char *.
New arg NEGATIVE.
(ceil_percent): Now returns double, not int.
Be more careful about adding 1 to a wild value.
(show_dev): Don't filter out wild sizes from the underlying operating
system; instead, show them to the user as faithfully as possible.
1999-11-23 Jim Meyering <meyering@ascend.com>
* doc/getdate.texi (Calendar date item): Correction regarding 0..68/
69-99 split for 1900 vs 2000. From Peter Moulder.
1999-11-22 Jim Meyering <meyering@ascend.com>
* lib/Makefile.am (DISTCLEANFILES): Add lstat.c and stat.c.
1999-11-20 Jim Meyering <meyering@ascend.com>
* src/rmdir.c (errno_rmdir_non_empty): New function to encapsulate
errno comparison.
(remove_parents): Use it.
(main): Use it.
* tests/cp/cp-mv-backup: Run `diff -c' if the test fails.
* tests/ls/time-1: Use `ls' and `touch', not $LS and $TOUCH.
* tests/ls/Makefile.am (TESTS_ENVIRONMENT): Specify PATH, etc.
* src/chgrp.c: Declare lstat; needed on e.g. SunOS4.
Reported by Tom Tromey.
1999-11-19 Jim Meyering <meyering@ascend.com>
* lib/strstr.c (strstr): Include config.h.
Add a `;' between shloop label and `}'.
From Akim Demaille.
1999-11-17 Jim Meyering <meyering@ascend.com>
* src/mkdir.c (S_IRWXUGO): Define if necessary.
(main): Use chmod to set the permissions if bits other than those
of S_IRWXUGO were requested. Reported by Sami Farin.
1999-11-14 Paul Eggert <eggert@twinsun.com>
* touch.c (touch): Simplify code a tad, using fd == -1 instead
of separate valid_fd variable.
1999-11-13 Jim Meyering <meyering@ascend.com>
* src/touch.c (touch): Don't fail just because we couldn't open
an existing file. This makes it so that touching a read-only
file now works. Also clean up and simplify.
Based on a patch from Chip Salzenberg.
* tests/touch/no-rights: New test for this.
* tests/touch/Makefile.am (TESTS): Add no-rights.
1999-11-12 Jim Meyering <meyering@ascend.com>
* src/remove.c (print_nth_dir): Write one fewer byte so we don't print
a trailing slash.
(rm): Fix bugs in (and test, this time) the very rarely used code
to warn about directory cycles.
Reported by michael@roka.net.
1999-11-11 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_internal): Treat src and dest as the `same' in
`mv src symlink-to-src' when src and dest are on different partitions.
Otherwise, that `mv' command would silently remove `src'.
Reported by Michael Stone.
* tests/mv/into-self-2: Add a test for this fix.
* lib/makepath.c (make_path): Fix long-latent bug: s/&&/||/ (others
just like that also dated back to 1992 were fixed in 1998-01-02).
Richard Braakman reported that using `install -d -g foo 1/2`
only sets the group on the intermediate directory, not the final
component. From Michael Stone.
1999-11-07 Paul Eggert <eggert@set.twinsun.com>
* human.c (default_block_size): New function.
(humblock): Use it if no block size is specified.
(human_block_size): If the specified block size is zero, report an
error if report_errors is nonzero; otherwise use the default.
1999-11-07 Jim Meyering <meyering@ascend.com>
* src/dircolors.hin: Add several more TERM types.
Add .bz2 suffix.
Add .png for real this time.
Change the image types colors to be visible in a black-on-white xterm.
From Michael Stone.
* src/chgrp.c (xstat): New global.
(main): Define it.
(change_file_group): Use it. Before this change, when running chgrp
on a symlink without --dereference (-h) and when the requested group
is the same as the group for the *symlink*, chgrp would do nothing.
Now it changes the group of the file referenced through the symlink.
Reported by Martin Mitchell.
* src/chmod.c: Use REFERENCE_FILE_OPTION instead of bare `CHAR_MAX + 1'.
* src/chown.c: Define and use REFERENCE_FILE_OPTION and
DEREFERENCE_OPTION in place of bare `CHAR_MAX + N'.
* src/chgrp.c: Likewise.
* tests/ln/misc: Add hard-link-to-symlink test.
Move framework_failure test to the end.
Fix a typo: s/||/&&/.
* src/ln.c (do_link): Warn that making a hard link to a symbolic link
is not portable.
* tests/ln/misc: Use --b=simple, not the now-deprecated `-V simple'.
* tests/ln/backup-1: Likewise.
* configure.in (AC_OUTPUT): Add tests/rmdir/Makefile.
* tests/Makefile.am (SUBDIRS): Add rmdir.
* tests/rmdir: New directory
* tests/rmdir/ignore: New file.
* src/rmdir.c (remove_parents): Use the correct test (just as in
main) in handling --ignore-fail-on-non-empty. From Michael Stone.
(usage): Improve description of --parents. Based on suggestion from
Torsten Landschoff.
1999-11-06 Jim Meyering <meyering@ascend.com>
Allow hard links to symlinks on systems that support it.
* src/ln.c (STAT_LIKE_LINK): Define.
(do_link): Use STAT_LIKE_LINK, rather than bare `stat', and perform
the extra lstat only on systems where LINK_FOLLOWS_SYMLINKS.
* src/ls.c (long_options): Correct typo (s/'F'/'p'/) so that `-p' is
accepted as the short form of --file-type, per the documentation.
From James Sneeringer.
* src/ln.c (do_link): Fix typo (in which the function name `symlink'
was tested instead of the variable `symbolic_link') that could make
ln perform an unneeded `stat' call.
1999-11-05 Jim Meyering <meyering@ascend.com>
* src/system.h: Use HAVE_STRUCT_STAT_ST_BLOCKS, not deprecated
HAVE_ST_BLOCKS.
* src/copy.c: Likewise.
* lib/fileblocks.c: Likewise.
* configure.in: Move some type/header/member tests into
m4/jm-macros.m4 (jm_CHECK_ALL_TYPES) so they are shared by all of
fileutils, textutils, and sh-utils.
1999-11-02 Jim Meyering <meyering@ascend.com>
* man/help2man: Import version 1.018.
* man/Makefile.maint ($(man_MANS)): Remove use of --name=... option.
* man/*.x: Include one-line summary in [NAME] section.
* man/Makefile.summ: Remove the one-line summaries.
Suggestion for clean-up from Akim Demaille.
* configure.in (ALL_LINGUAS): Add Galician (gl).
1999-11-01 Jim Meyering <meyering@ascend.com>
* src/cp.c (usage): Warn about mixing use of `-r' with FIFOs and
other special files like /dev/zero.
* lib/Makefile.am (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
1999-10-31 Jim Meyering <meyering@ascend.com>
* Makefile.maint (my-distcheck): Remove $(DEPDIR) to work around
automake bug.
* doc/fileutils.texi: Document new --backup[=METHOD] option for
cp, mv, ln, and install.
* src/ln.c: Convert --backup to take an optional argument.
Deprecate --version-control (-V) in comments.
(usage): Remove mention of --version-control.
(main): Make -V warn then fall through into --backup case.
[--backup case]: Handle optional arg.
* src/install.c: Likewise.
1999-10-24 Jim Meyering <meyering@ascend.com>
* src/cp.c (do_copy): Constify `dest', and cast-away the new
const in assignment to new_dest.
1999-10-23 Jim Meyering <meyering@ascend.com>
* tests/touch/Makefile.am (TESTS): Add dangling-symlink.
* tests/touch/dangling-symlink: New file.
1999-10-23 Paul Eggert <eggert@twinsun.com>
* src/touch.c (full_write): Remove unused decl.
(open_maybe_create): Remove.
(touch): Don't record whether the file was created; this isn't
possible to do reliably and portably without race conditions.
If the file was created and if amtime_now is nonzero, this
change means we'll have to do another utime system call, but
that's no more harmful than the previous version of this code.
Reported by Gabor Z. Papp.
1999-10-21 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add Japanese (pa).
1999-10-17 Jim Meyering <meyering@ascend.com>
* tests/mv/backup-is-src: Remove use of mv's now-deprecated
-V option. Use --b=simple instead of -b -V simple.
* src/mv.c: Convert --backup to take an optional argument.
Deprecate --version-control (-V) in comments.
(usage): Remove mention of --version-control.
(main): Make -V warn then fall through into --backup case.
[--backup case]: Handle optional arg.
Accept new option: --target-directory=DIR
* src/cp.c (TARGET_DIRECTORY_OPTION): Define.
(SPARSE_OPTION): Define.
(usage): Describe it.
(do_copy): Change meanings/names of first two parameters: use `n_files'
in place of `argc - optind', and `file' instead of `argv + optind'.
Add parameter, target_directory.
(main): Pass new arg, target_directory.
1999-10-16 Jim Meyering <meyering@ascend.com>
* tests/cp/backup-is-src: Remove use of cp's now-deprecated -V option.
Use --b=simple instead of -b -V simple.
* tests/cp/backup-1: Replace use of cp's now-deprecated
--version-control option with use of --backup=simple.
* src/cp.c: Convert --backup to take an optional argument.
Deprecate --version-control (-V) in comments.
(usage): Remove mention of --version-control.
(main): Make -V warn then fall through into --backup case.
[--backup case]: Handle optional arg.
* tests/cp/Makefile.am (TESTS): Add cp-mv-backup.
* tests/cp/cp-mv-backup: New file.
1999-10-11 Jim Meyering <meyering@ascend.com>
* lib/getopt.c: Merge changes from latest glibc.
* lib/getopt.h: Likewise.
* lib/getopt1.c: Likewise.
1999-10-09 Jim Meyering <meyering@ascend.com>
Accept new option: --target-directory=DIR
* src/ln.c (TARGET_DIRECTORY_OPTION): Define.
(usage): Describe it.
(main): Implement it.
Make code clearer: use new variable `n_files' in place of
`argc - optind'. Use `file' instead of `argv + optind'.
1999-10-04 Jim Meyering <meyering@ascend.com>
* depcomp: New file, for automake's new dependency support.
* missing: New version, from automake's user-dep-gen-branch.
* lib/xalloc.h (__attribute__): Apply 1999-10-03 change here, too.
* src/sys2.h (__attribute__): Likewise.
Wrap with #ifndef __attribute__.
1999-10-03 Paul Eggert <eggert@twinsun.com>
* getdate.y (__attribute__): Define to empty if GCC claims to
be before 2.8; this is needed for OPENStep 4.2 cc. Also,
define to empty if strict ANSI.
1999-10-03 Jim Meyering <meyering@ascend.com>
Accept new option: --target-directory=DIR
* src/mv.c (TARGET_DIRECTORY_OPTION): Define.
(usage): Describe it.
(main): Implement it.
Remove unused variable, stdin_tty.
Make code clearer: use new variable `n_files' in place of
`argc - optind'. Use `file' instead of `argv + optind'.
1999-09-28 Jim Meyering <meyering@ascend.com>
* src/system.h: Do s/#ifdef HAVE_/#if HAVE_/ -- solely for aesthetics.
Do the same for other config.h macros like CLOSEDIR_VOID and MAJOR_*.
* src/sys2.h: Likewise.
* lib/xalloc.h (__attribute__): Protect against redefinition.
From Akim Demaille.
1999-09-26 Jim Meyering <meyering@ascend.com>
* lib/xmalloc.c (xalloc_die): Rename from xalloc_fail and
update callers.
Use explicit exit to help avoid warnings.
From Akim Demaille.
* lib/path-concat.c (DIRECTORY_SEPARATOR): Define.
(ISSLASH): Define.
(path_concat): Allow parameter DIR to be NULL.
(xpath_concat): New function.
From Akim Demaille.
* lib/xalloc.h (__attribute__): Define.
(ATTRIBUTE_NORETURN): Define.
(xalloc_die): Declare.
(NEW): Define as yet unused macro.
(XFREE): Likewise
(CCLONE): Likewise.
(CLONE): Likewise.
From Akim Demaille.
* lib/basename.c (base_name): Add prototype. From Akim Demaille.
1999-09-19 Jim Meyering <meyering@ascend.com>
* lib/lchown.c [STAT_MACROS_BROKEN] (S_ISLNK): Undefine.
(S_ISLNK): Define if necessary.
This is necessary on a NEC SX-4 with SUPER-UX 9.1.
Based on a patch from Holger Berger.
* src/dd.c (siginfo_handler): Mark parameter with ATTRIBUTE_UNUSED.
Change many counter and index variables to be of unsigned type.
(dd_copy): Add new unsigned variable, n_bytes_read, in place of
many uses of `nread'.
* src/sys2.h (__attribute__): Define.
(ATTRIBUTE_NORETURN): Remove #else clause.
(ATTRIBUTE_UNUSED): Define.
1999-09-17 Jim Meyering <meyering@ascend.com>
* configure.in (AC_REPLACE_FUNCS): Remove strdup, now that this
is done in m4/jm-macros.m4.
1999-09-09 Jim Meyering <meyering@ascend.com>
* src/touch.c (usage): Remove misleading sentence in --help output.
From Karl Heuer.
* src/Makefile.am (EXTRAdir): Remove unused variable.
1999-09-03 Paul Eggert <eggert@twinsun.com>
* lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3.
Use EINVAL instead.
1999-09-01 Jim Meyering <meyering@ascend.com>
* src/cp.c: Remove declaration of xstrdup.
* src/df.c: Likewise.
* src/ls.c: Likewise.
1999-09-01 Akim Demaille <akim@epita.fr>
* lib/xmalloc.c (xalloc_fail_func): Use `PARAMS'.
* lib/xalloc.h (xalloc_fail_func): Likewise.
(xstrdup): Add protoype.
* lib/version-etc.c (version_etc_copyright): Default copyright string.
(version_etc): Use it.
* lib/version-etc.h: Declare it.
1999-08-29 Jim Meyering <meyering@ascend.com>
* configure.in (AC_YACC): Remove use, now that we require bison.
* src/dircolors.hin: Add .rpm, .png, and .fli.
From Andres Soolo.
1999-08-28 Paul Eggert <eggert@twinsun.com>
* getdate.y: Add copyright notice.
(number): Handle `Nov 11 1996' example; see Risks Digest 20.55
http://catless.ncl.ac.uk/Risks/20.55.html#subj18
(1999-08-27)
(<stdio.h>): Include only if testing.
(ISUPPER): Remove.
(ISLOWER, PC): New macros.
(<string.h>): Include if HAVE_STRING_H, not USG.
(bcopy): Remove.
(yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume
bison.
(EPOCH_YEAR): Renamed from EPOCH.
(table): Renamed from TABLE.
(meridian): Now an anonymous enum.
(struct parser_control): New type.
(YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros.
(yyInput, ..., yyRelYear): Migrated into struct parser_control.
(%pure_parser): Added, so that the parser is pure.
(%union): Removed; the type is now just plain int.
All %type directives removed.
(tLOCAL_ZONE): New %token.
(month_day_table): Renamed from MonthDayTable.
(gmtime, localtime, mktime, time): Declare only if not defined.
(meridian_table): New table.
(dst_table): New table.
(units_table): renamed from UnitsTable.
(relative_time_table): Renamed from OtherTable.
(time_zone_table): Renamed from TimezoneTable. Modernized data.
(military_table): Renamed from MilitaryTable.
(to_hour): Renamed from ToHour.
(to_year): Renamed from ToYear.
(lookup_zone): New function.
(LookupWord): Renamed from lookup_word.
Use lookup_zone for time zones.
(yylex): Now reentrant. All callers changed.
(get_date): Add support for local time zone abbreviations.
Make it reentrant.
1999-08-22 Jim Meyering <meyering@ascend.com>
* src/sys2.h (IF_LINT): Define new macro.
* src/df.c (main): Rename locals i and j.
Use IF_LINT macro instead of #ifdef lint...
* src/dd.c (parse_integer): Add `const' to char* parameter and
add a separate `suffix' variable.
1999-08-20 Jim Meyering <meyering@ascend.com>
* src/chown.c (usage): Tweak --help output to make it more consistent
with that of chgrp.
* src/chgrp.c (usage): Tweak --help output to make it more consistent
with that of chown.
1999-08-17 Jim Meyering <meyering@ascend.com>
* configure.in: Remove check for rename and the code that would
enable building of the `mvdir' program.
* src/Makefile.am (libexec_PROGRAMS): Remove reference to @MVDIR@.
(EXTRA_PROGRAMS): Remove obsolete mvdir.
* lib/rename.c: Remove obsolete file. (it had a bug, too)
* src/mvdir.c: Remove obsolete file.
* po/POTFILES.in: Remove mvdir.c
* doc/fileutils.texi (chown, chgrp invocation): Make these sections
consistent with each other.
1999-08-16 Jim Meyering <meyering@ascend.com>
* src/chown.c (groupname): Declare to be `const'.
(change_dir_owner): Declare statp parameter to be `const'.
(usage): Make the output be more consistent with that from chgrp.
This change is nearly identical to the chown.c change of 1998-05-24
* src/chgrp.c: Accept new option, --dereference.
--no-dereference is now the default. Include lchown.h.
(enum Change_status) [CH_NOT_APPLIED]: New member.
(change_symlinks): Enable this by default, now.
(describe_change): Handle new case.
(change_file_group): Add new parameter: cmdline_arg. Update callers.
Reorganize to reflect changed semantics.
(LCHOWN): Remove definitions.
From Bruno Haible.
1999-08-10 Jim Meyering <meyering@ascend.com>
* po/POTFILES.in: Add lib/quotearg.c.
1999-08-09 Paul Eggert <eggert@twinsun.com>
* NEWS, doc/fileutils.texi, src/ls.c (usage):
Add ls --quoting-style=locale.
* lib/argmatch.c (ARGMATCH_QUOTING_STYLE):
Change from escape_quoting_style to locale_quoting_style.
(argmatch_invalid): Use new quotearg_style primitive for simplicity.
Also, use ARGMATCH_QUOTING_STYLE to quote, instead of quoting ourselves.
* lib/quotearg.h (locale_quoting_style): New enum value.
(quotearg_n_style, quotearg_style): New decls.
* lib/quotearg.c: Include <libintl.h> if ENABLE_NLS.
(_): New macro.
(quoting_style_args, quoting_style_v, quotearg_buffer): Add support
for locale_quoting_style, using _("`") and _("'") for open and close
quote symbols.
Do not quote spaces in escape_quoting_style.
(quotearg_n_style, quotearg_style): New functions.
1999-08-08 Jim Meyering <meyering@ascend.com>
* src/touch.c (usage): Clarify description of --time=WORD.
From Karl Berry.
* lib/savedir.c (savedir): Change type of name_size parameter to off_t.
* lib/savedir.h (savedir): Update prototype.
* src/chmod.c (change_dir_mode): Remove cast of savedir arg.
* src/chown.c (change_dir_owner): Likewise.
* src/chgrp.c (change_dir_group): Likewise.
* src/copy.c (copy_dir): Likewise.
* src/du.c (count_entry): Likewise.
Suggestion from Bob Proulx.
1999-08-07 Jim Meyering <meyering@ascend.com>
* po/POTFILES.in: Add lots of lib/*.c files.
Remove src/cp-hash.c, since it doesn't use _().
1999-08-04 Jim Meyering <meyering@ascend.com>
* configure.in: Remove getline-testing code. Now it's in m4/.
1999-08-01 Paul Eggert <eggert@twinsun.com>
* configure.in (AC_SYS_LARGEFILE): Renamed from AC_LFS.
1999-07-30 Jim Meyering <meyering@ascend.com>
* src/ls.c (usage): Explain about default wrt --hide-control-chars and
--show-control-chars. Reported by Germano Leichsenring.
1999-07-28 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add Brazilian Portuguese (pt_BR).
1999-07-24 Jim Meyering <meyering@ascend.com>
* src/dd.c (PTR_ALIGN, ROUND_UP_OFFSET): New macros.
(dd_copy): Use those to page-align both the input and output buffers.
1999-06-01 Volker Borchert <bt@teknon.de>
* tests/Makefile.am: Make envvar-check depend on check-recursive rather
than on `check' so that its tests are performed before any real tests.
1999-07-15 Jim Meyering <meyering@ascend.com>
* src/dd.c: Include getpagesize.h.
(dd_copy): Page-align the input buffer.
Based on a patch from Scott Lurndal.
* getpagesize.h: New file.
* lib/Makefile.am (noinst_HEADERS): Add getpagesize.h.
* lib/fsusage.c (get_fs_usage) [STATFS_TRUNCATES_BLOCK_COUNTS]:
Work around SunOS botch also when block size is different from 1k.
From Jürgen Fluk.
1999-07-10 Jim Meyering <meyering@ascend.com>
* man/help2man: Import version 1.012.
1999-07-04 Jim Meyering <meyering@ascend.com>
* lib/xstrtol.c [!defined strtoumax]: Declare strtoumax.
1999-07-04 Paul Eggert <eggert@twinsun.com>
* lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol
expands to a macro, which occurs in HP-UX 10.20 with strtoumax.
(strtol, strtoul): New decls (for pre-ANSI hosts), to replace
the above decl.
1999-06-27 Paul Eggert <eggert@twinsun.com>
Fix some incompatibilities between `df -P' and POSIX.2.
* lib/human.h (enum human_inexact_style): New enum.
(human_readable_inexact): New decl.
* lib/human.c (human_readable): New function.
(human_readable_inexact): Renamed from human_readable, with new arg
INEXACT_STYLE. Add support for ceiling and floor.
* src/df.c (print_header): Conform to POSIX if posix_format).
(df_readable): Take ceiling if posix_format.
(ceil_percent): New function.
(show_dev): Take ceiling of percent if posix_format.
Align with POSIX-conforming header if posix_format.
* doc/fileutils.texi: Document these changes.
1999-05-27 Volker Borchert <bt@teknon.de>
* tests/Makefile.am: Qualify .env-warn with $(srcdir)/ prefix.
1999-05-23 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_internal): Don't apply the umask in move_mode.
Otherwise, `mv' would not preserve the permissions when copying
between partitions. Reported by David Godfrey
* Version 4.0i.
* tests/cp/same-file: Correct erroneous expected output from
the `cp -f foo foo' tests.
* po/POTFILES.in: Add same.c.
* lib/same.h: New file.
* lib/same.c: New file (function extracted from ln.c).
* lib/Makefile.am (libfu_a_SOURCES): Add same.c.
(noinst_HEADERS): Add same.h.
* src/copy.c: Include same.h.
* src/ln.c (same_name): Remove function.
<same.h>: Include this instead.
<dirname.h>: No longer include this.
* tests/mv/force: Be sure we still allow `mv -f FILE LINK-TO-FILE'.
* src/copy.c (copy_internal): Make it so `cp/mv -f FILE FILE' does not
remove FILE. Suggestion from Chris Yeo.
* tests/mv/force: New test, for the above fix.
* tests/mv/Makefile.am (TESTS): Add force.
(TESTS_ENVIRONMENT): Change PATH to be absolute.
* tests/mv/force (mv): New test.
1999-05-17 Paul Eggert <eggert@twinsun.com>
* lib/getdate.y (get_date): Let mktime deduce tm_isdst if we
have an absolute timestamp, or if the relative timestamp
mentions days, months, or years. Reported by Volker Borchert.
* lib/human.c (human_readable): Allow from_block_size to be zero.
1999-05-14 Jim Meyering <meyering@ascend.com>
* tests/Makefile.am (envvar-check): Renamed from check-local.
(check): Depend on envvar-check so the envvar check is performed
before all other tests. Reported by Volker Borchert.
* tests/.env-warn: Use `%%' place-holder that Makefile.am rule expects,
so CDPATH is mentioned in the message. Reported by Volker Borchert.
* src/df.c (main): When asking for info on an explicit file name,
just warn rather than failing if the table of mounted filesystems
cannot be read. Based on a patch from Mark Kettenis.
* lib/version-etc.c (version_etc): Put version info and author names
on the first two lines respectively rather than putting the three
lines of copyright info between them.
* src/touch.c (open_maybe_create): Handle Solaris' failure mode when
FILE is a directory. Reported by Vin Shelton.
* lib/human.c: Include <string.h> or <strings.h> for strlen prototype.
* lib/getline.h [__GLIBC__ >= 2]: #if-out prototypes.
* src/remove.c (pop_dir): Cast length to `int' to avoid a warning on
64-bit systems. From Ulrich Drepper.
1999-05-12 Jim Meyering <meyering@ascend.com>
* src/shred.c (main): Put `u' for -u in getopt_long's string argument.
Remove the `R'.
1999-05-07 Jim Meyering <meyering@ascend.com>
* Version 4.0h.
* tests/touch/dir-1: New test.
* tests/touch/Makefile.am (TESTS_ENVIRONMENT): Remove individual
upper-case program names. Add a definition of PATH.
(TESTS): Add dir-1.
* src/mkdir.c (main): Use better wording in diagnostic: `cannot
create directory' rather than `cannot make directory'. The former
also matches the one in makepath.c.
* src/dd.c (apply_translations): Use TOUPPER and TOLOWER,
not toupper and tolower.
1999-05-05 Jim Meyering <meyering@ascend.com>
* lib/makepath.c (make_dir): When reporting a mkdir failure and the
target cannot be `stat'ed, use the errno from the failed mkdir call,
not the one from the stat call. Before this change, running
`mkdir -p /no-dir/no-dir' as an unprivileged user would wrongly
elicit `No such file or directory' instead of `Permission denied'.
* lib/strtol.c (TYPE_SIGNED, TYPE_MAXIMUM, TYPE_MINIMUM): Define.
(ULONG_LONG_MAX, LONG_LONG_MAX, LONG_LONG_MIN): Define if not defined.
Based on a patch from Kaveh Ghazi.
* src/ls.c (USE_ACL): Define this only #if
(HAVE_SYS_ACL_H && HAVE_ACL && defined GETACLCNT).
Use `USE_ACL' in place of `HAVE_ACL' everywhere else. From Kaveh Ghazi.
1999-05-04 Jim Meyering <meyering@ascend.com>
* lib/makepath.c: Include makepath.h libintl.h, not after it.
Otherwise, we'd get the wrong definition of PARAMS from libintl.h.
(The method of defining PARAMS in libintl.h doesn't check PROTOTYPES,
which is necessary on Irix4 since cc doesn't define __STDC__.)
From Kaveh Ghazi.
1999-04-30 Jim Meyering <meyering@ascend.com>
* Makefile.maint: Define several tag-related make variables.
(cvs-dist): Use the make variables instead of shell ones.
(announcement): Automatically generate diffs for all ChangeLog files,
not just the top level one.
1999-04-30 Paul Eggert <eggert@twinsun.com>
* lib/dup2.c: New file.
1999-04-30 Jim Meyering <meyering@ascend.com>
* src/touch.c (touch): Only do the fstat if we need to.
Resort to calling stat for directories, but only when necessary.
(usage): Mention --no-create.
* src/copy.c (copy_internal): Move the one-file-system test so that
it follows the `if (new_dst || !S_ISDIR (dst_sb.st_mode))' block.
Prior to this change, `cp --one-file-system' would traverse a file-
system boundary if the destination directory existed. From Ton Hospel.
1999-04-27 Paul Eggert <eggert@twinsun.com>
* src/dd.c: Always use STDIN_FILENO for input and STDOUT_FILENO
for output, to avoid confusion with closed input and output fds.
(input_fd, output_fd): Remove; all uses changed to STDIN_FILENO
and STDOUT_FILENO.
(open_fd): New function.
(main): Use it, instead of open, to ensure that file descriptors
don't get confused.
1999-04-26 Paul Eggert <eggert@twinsun.com>
* src/ls.c (decode_switches): Use STDIN_FILENO, STDOUT_FILENO instead
of 0, 1.
* src/dd.c (skip): Don't fstat the input file; the result is
no longer used.
1999-04-26 Jim Meyering <meyering@ascend.com>
* tests/mv/into-self-2: Update to reflect this change by reversing
the order of arguments so the symlink is the source, not the
destination (otherwise, the mv command would now succeed).
* src/copy.c (copy_internal): Don't make `mv foo symlink-to-foo' fail.
That is, even though source and destination are `the same,' don't fail
if the destination is a symlink. From Peter Samuelson.
1999-04-26 Paul Eggert <eggert@twinsun.com>
* src/dd.c (main): If you can't open an output file (with
seek=...) read-write, then open it for write and report an
error if we can't seek.
* lib/filemode.c (setst, ftypelet, mode_string):
* lib/mkdir.c (mkdir):
* lib/makepath.c (make_path):
* lib/modechange.c (make_node_op_equals, mode_compile,
mode_create_from_ref, mode_adjust):
* lib/modechange.h (mode_adjust):
* src/chmod.c (describe_change, change_file_mode):
* src/copy.c (copy_reg, copy_internal):
* src/copy.h (struct cp_options.umask_kill):
* src/cp.c (do_copy, cp_option_init, main):
* src/dd.c (main):
* src/install.c (mode, cp_option_init, DIR_MODE):
* src/mkdir.c (main):
* src/mkfifo.c (main):
* src/mknod.c (main):
* src/mv.c (cp_option_init):
* src/touch.c (open_maybe_create):
Use proper mode_t types and macros.
Don't assume the traditional Unix values for mode bits.
* lib/filemode.c (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH,
S_IXOTH): Define if not defined.
(rwx): Remove.
* lib/mkdir.c (S_IRWXU, S_IRWXG, S_IRWXO): Define if not defined.
* lib/makepath.c (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IRWXU):
Define if not defined.
* src/system.h (S_ISUID, S_ISGID, S_ISVTX, S_IRWXU, S_IRWXG, S_IRWXO):
Define if not defined.
(CHMOD_MODE_BITS): New macro.
* src/install.c (isodigit): Remove unused macro.
* src/mkfifo.c, src/mknod.c (usage):
Use symbolic mode as default, not octal.
* lib/utime.c (utime_null):
Don't pass 0666 to open; it's not needed and isn't
guaranteed to be portable.
* lib/filemode.h: <config.h>, <sys/types.h>: Include for mode_t.
(mode_string): Now takes mode_t.
* lib/modechange.h: Include <config.h>, <sys/types.h> for mode_t.
(struct mode_change): Members affected and value are now mode_t instead
of unsigned short.
* doc/fileutils.texi, doc/perm.texi:
Don't assume traditional Unix mode numbering.
* lib/modechange.c: modechange.h now includes sys/types.h.
Include xstrtol.h.
(isodigit, oatoi): Remove.
(S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP,
S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRWXU, S_IRWXG,
S_IRWXO): Define if not defined.
(CHMOD_MODE_BITS): New macro.
(mode_compile): Convert from octal with xstrtoul, not our own routine.
1999-04-24 Jim Meyering <meyering@ascend.com>
* Version 4.0g.
1999-04-22 Jim Meyering <meyering@ascend.com>
* src/shred.c (word32): Don't use `#error'; it runs afoul of
SunOS 4.1.4 cc. From Paul Eggert.
* lib/strtoull.c: Guard strong_alias and weak_alias with #ifdef _LIBC.
1999-04-20 Paul Eggert <eggert@twinsun.com>
Replace our temporary hack implementation of strtoumax with
something very close to the real code in glibc.
* lib/xstrtoumax.c: Remove the temporary strtoumax replacement;
we now have a true replacement in strtoumax.c.
(__strtol): Always define to strtoumax.
(<stdlib.h>): No need to include.
(PARAMS): Remove.
(my_strtoumax): Move this to strtoumax.c,
rename it to strtoumax, and simplify.
* lib/strtoull.c, lib/strtoumax.c: New files.
* lib/strtol.c: Update to glibc 2.1.1 version.
1999-04-20 Jim Meyering <meyering@ascend.com>
* tests/Makefile.am (EXTRA_DIST): s/posix-warn/env-warn/.
(check-local): Also test and warn if CDPATH is set.
1999-04-20 Paul Eggert <eggert@twinsun.com>
* configure.in (AC_CANONICAL_HOST): Add; needed for new AC_LFS's
cross-compilation.
* config.guess: New file (from autoconf).
* config.sub: New file (from autoconf).
* src/shred.c <config.h>: Include first, since it can do
things like #define const, and this must be done before
including any system headers.
* lib/xstrtoumax.c (my_strtoumax): Fix typo in computing
whether overflow occurred. Improve overflow-detection to use
only one conditional branch total, rather than 2N+1
conditional branches for an N-digit number.
1999-04-18 Jim Meyering <meyering@ascend.com>
* configure.in (AC_CHECK_FUNCS): Remove strtoull, strtoumax, and
strtouq, now that they're checked in m4/xstrtoumax.m4.
1999-04-18 Paul Eggert <eggert@twinsun.com>
* doc/fileutils.texi, src/shred.c (main, longopts):
Use -u instead of -R for --remove, so that we can preserve
future compatibility with rm.
1999-04-18 Jim Meyering <meyering@ascend.com>
* src/shred.c [!HAVE_CONFIG_H] (ST_BLKSIZE): Define to 65536.
(do_wipefd): Use ST_BLKSIZE instead of referring to the st_blksize
member directly.
1999-04-18 Paul Eggert <eggert@twinsun.com>
Fix shred to do the right thing with off_t longer than long.
Merge large-integer parsing code with similar code in dd.c,
and put the resulting in lib/xstrtoumax.c so that other programs
can use it. Instead of adding a new lib/xstrtoumax.h I thought
it cleaner to put all the xstroto* declarations into a single
header, which for now is lib/xstrtol.h for lack of a better place.
(Mayby lib/xstdlib.h would be better? :-)
I thought of several other problems with shredding regular files;
shredding devices is much more reliable. So I changed the defaults
to be more suitable for shredding devices; this should help encourage
users to do the right thing.
pfstatus isn't portable to environments with varying width
fonts, or with internationalized environments where the byte
count of the message is not the same as its print width.
Rather than deal with this, I just simplified it to not do
tricks with carriage-returns and spaces. (I'm also worried
that vprintf may not return the right value on some hosts; I
vaguelly recall this being a problem.) As a result, -v and -
no longer conflict.
When removing a special file, try to truncate it first, but don't
worry if this reports an error.
Try to find the size of a non-regular file by seeking to its end.
Various porting fixes, mostly because of a port to SunOS 4.1.4 cc.
Some other minor bug fixes.
* lib/xstrtoul.h: Remove this file.
* lib/xstrtoumax.c: New file.
* configure.in (AC_CHECK_FUNCS): Add strtoull, strtoumax, strtouq.
* lib/xstrtoul.c (STRING_TO_UNSIGNED): Remove.
(__strtol, __strtol_t, __xstrtol): New macros.
* lib/xstrtol.c (__strtol, __strtol_t, __xstrtol):
New macros to specify the
underlying function, its returned type, and our function. Default to
values suitable for xstrtol.
Include <ctype.h>, since we use its macros.
(ULONG_MAX, LONG_MAX, ISBLANK): Remove: no longer needed.
(ISSPACE): New macro.
(bkm_scale, bkm_scale_by_power, __xstrtol, main): __unsigned long int
-> __strtol_t.
(__xstrtol): Depend on whether __strtol_t is an unsigned type, not on
whether STRING_TO_UNSIGNED is defined. Skip isspace chars, not
isblank chars, to match strtol. When returning
LONGINT_INVALID_SUFFIX_CHAR, store the value that we computed into
*val.
* lib/xstrtol.h (__xstrtol, __strtol, __unsigned): Remove macro decls.
<inttypes.h>: Include if HAVE_INTTYPES_H.
(_DECLARE_XSTRTOL): New macro.
(xstrtol, xstrtoul, xstrtoumax): Declare all three functions, so that
we need only one include file, not three.
(_STRTOL_ERROR): Do not undef, as this is no longer needed.
Reword overflow message so that it's independent of type.
* lib/Makefile.am (libfu_a_SOURCES): Add xstrtoumax.c.
(noinst_HEADERS): Remove xstrtoul.h.
* lib/xmalloc.c (xalloc_fail):
Pass xalloc_msg_memory_exhausted through gettext.
* lib/getdate.y:
<stdlib.h>: Include if HAVE_STDLIB_H, since bison 1.27 invokes "free".
(LookupWord, yylex): Don't pass negative char to ctype macros.
* doc/fileutils.texi:
Explain why shredding devices is more reliable, and why the
default options are more suitable for devices.
Remove withdrawn options -b or --no-contents, -c or --freed-contents,
-C or --all-contents, -k or --no-links, -l or --ordinary-links, -L or
--all-links.
Add -R or --remove, -s or --size.
-v can no longer be doubled.
`file system' --> `filesystem' uniformly.
* src/chgrp.c: Include xstrtol.h, not obsolete file xstrtoul.h.
* src/shred.c: Include xstrtol.h, not obsolete file xstrtoul.h.
"human.h", "xalloc.h": Include.
(attribute): Remove; no longer needed.
(xstrdup): New decl.
(STDOUT_FILENO): New macro.
(O_NOCTTY): Make sure it's always defined, even if HAVE_CONFIG_H.
The following changes have effect only if !HAVE_CONFIG_H.
<ctype.h>: New include.
(RETSIGTYPE): Remove bogus semicolon at end.
(STDOUT_FILENO, uintmax_t, human_readable, LONGEST_HUMAN_READABLE):
New macros.
(xstrtoumax): Renamed from xstrtoul, with corresponding type changes.
Handle suffixes like the real routine does.
(error): Remove bogus assignment of errno to errnum.
(xmalloc, xstrdup): New functions.
(O_NOCTTY): Define even if !HAVE_CONFIG_H.
(S_ISFIFO, S_ISSOCK): New macros, if not already defined.
(OUTPUT_BLOCK_SIZE): New macro.
(struct Options.verbose): Now a boolean, since we no longer have two
levels of verbosity.
(long_opts, usage, main): Remove -D or --device option. Invert -p or
--preserve option, and rename it to -R or --remove.
(usage): Describe G suffix.
(usage): "-" no longer conflicts with -v.
(UCHAR_MAX): Indent `#error' so that SunOS 4.1.4 cc doesn't reject it.
(ind): Portability fixes: return word32, not unsigned; multiply by
sizeof (word32) instead of shifting left by 2.
(isaac_refill, isaac_mix): Comment out size of array parameter, as
ansi2knr mishandles this.
(status_visible, status_pos, pfstatus, flushstatus): Remove, since
pfstatus isn't portable to users with varying width fonts, or
internationalized messages, and vfprintf is problematic. All callers
of pfstatus changed to use error instead; this removes incompatibility
of -v with -. All calls to flushstatus removed.
(dopass, do_wipefd): Do not translate non-English msgs with gettext.
(dopass): Cast lseek constant arguments to (off_t) for benefit
of pre-ANSI compilers; fix one lseek call whose args were interchanged.
Remove unnecessary casts to (off_t). Do not check for EIO
when determining file size; this was just my earlier wild guess.
Use human_readable to print off_t, instead of casting to unsigned long
(which doesn't work in Solaris 2.6, where off_t is longer than long).
Output human-readable sizes, instead of always using "K".
Check for offset overflow (it happened to me in SunOS 4.1.4).
(do_wipefd): Do not insist on regular files, but do check for special
files that cannot possibly be shredded.
Use xmalloc instead of malloc + check.
Do not inspect st_size for non-regular files.
Try to find the size of a non-regular file by seeking to its end.
Do not assume that a regular file of size-0 has unknown size.
Check for regular files with negative sizes,
and for overflow after rounding to next block.
Always try to truncate, even for special files, but do not report an
error if truncation fails on a special file.
(dopass, wipefile): Do not return 1 for special files; the caller
doesn't care any more.
(wipefd): Remove unnecessary (and nonportable) check for
whether the file descriptor is read-only. Remove
no-longer-needed check for `-v -'.
(incname): Return 1 for carry bit, like the documentation says.
(wipename, wipefile): Accept new argument, specifying the
quoted file name. All callers changed.
(wipename): Use xstrdup instead of strdup+error check.
(wipefile): Check for ENOTDIR when opening /dev/fd/NNN. Check for
errors in NNN more carefully. Restore errno after the check.
Check for errors when closing the file descriptor.
Use more consistent wording when unable to remove a file.
(main): Do not remove files by default.
Use xstrtoumax instead of xstrtoul uniformly, since xstrtoul won't
exist if !HAVE_CONFIG_H.
In diagnostics, quote invalid operands to -n and -s options.
Allow T, P, E, Z, and Y suffixes in -s operand.
flags.verbose is now a boolean, not a counter.
Use STDOUT_FILENO instead of 1, for clarity.
* lib/human.c:
Include xstrtol.h, not xstrtoul.h, since xstrtol.h now defines all the
xstrto... functions.
* src/dd.c: Include xstrtol.h.
(parse_integer): Migrate most of the work into the new xstrtoumax fn.
* lib/xstrtoumax.c: New file.
1999-04-18 Jim Meyering <meyering@ascend.com>
* src/dd.c (main): Open the output file with *read* access
only if we might need to read to satisfy a `seek=' request.
From Matthias Urlichs.
1999-04-10 Jim Meyering <meyering@ascend.com>
* Makefile.maint (alpha): Add trailing slash for ncftp.
* Version 4.0f.
* configure.in (AC_OUTPUT): Add tests/dd/Makefile.
* tests/Makefile.am (SUBDIRS): Add dd.
* tests/dd: New directory
* tests/dd/misc: New file.
`ls --color' would segfault
* src/ls.c: Include assert.h.
(color_indicator[]): Add an entry for the type, `door.'
(main): Assert that the lengths of the color_indicator and
indicator_name arrays are appropriately related.
Reported by John Gotts.
* src/dd.c (scanargs): Fix bug introduced with last change: now that
the loop is gone, manually decrement argc and increment argv.
Reported by Andreas Jaeger and jvogel@linkny.com.
1999-04-07 Jim Meyering <meyering@ascend.com>
* lib/getdate.y (difftm): Protoize.
1999-04-06 Jim Meyering <meyering@ascend.com>
* lib/strftime.c: Update from master source in libc.
1999-04-04 Jim Meyering <meyering@ascend.com>
* tests/ln/misc: Comment out the test added on 1999-01-31.
* Makefile.maint (url_dir_list): Define properly.
(real_dir_list): Likewise.
* src/shred.c: Don't include string.h.
[!HAVE_CONFIG_H]: Include string.h here.
[!HAVE_CONFIG_H]: Hard-code RETSIGTYPE to `int'.
(sigill_handler): Change return type and type of local `oldhandler' to
RETSIGTYPE.
(isaac_seed_machdep): Change and type of local `oldhandler' to
RETSIGTYPE.
From Colin Plumb.
* Version 4.0e
* tests/cp/same-file: Change the sed command used to extract the
filename from ls -l output, to accommodate the change in format.
* src/ls.c (print_long_format): Add a space between %s and %3u. This
assures that even when modebuf has the trailing `+' and there are more
than 99 hard links to a file, the permissions string and the link count
will be separated.
1999-04-03 Jim Meyering <meyering@ascend.com>
* src/shred.c (dopass): add curly braces to avoid warning about
ambiguous `else'.
(wipefd): Add parentheses suggested by gcc.
(do_wipefd): Remove declaration of unused local.
1999-04-02 Colin Plumb <colin@nyx.net>
* shred.c [!HAVE_CONFIG_H] (xstrtoul, error, close_stdout): Added stubs
to allow standalone compilation.
(wipefile): Added support for emulating /dev/fd/# files even if
the OS doesn't support them. From Paul Eggert.
(main, usage): Changed --device short option to -D.
(wipefd, do_wipefd): Renamed function to do_wipefd and added
separate wipefd that performs sanity checks on externally-opened file
descriptors, such as not append-only. From Paul Eggert.
(do_wipefd, isaac_seedfd): Do not read file for any reason.
if the file is low-entropy, it's a security hole.
(wipefile) Changed to open O_WRONLY and chmod to write-only when
forcing.
(isaac_seedfd) Function deleted as unnecessary.
From Paul Eggert.
(dopass): Dynamically fall back to fsync() if fdatasync() fails,
since POSIX, in their infinitesimal wisdom, encourage implementations
that return constant -1, making compile-time testing useless.
From Paul Eggert.
(dopass): Changed to support a size of -1 to mean "unknown".
This entailed changing to a counting-up offset rather than couting-down
cursize for the central state variable. Also changed size argument to
be call-by-reference so that it can be passed back once known.
(sizer) Function deleted as unnecessary.
(wipefd): Changed to match. From Paul Eggert
(dopass): Try to skip over bad blocks in destination files.
Also added ftruncate() for more complete destruction of metadata.
(main, usage): Changed "-" to stand for standard output.
(wipefd): Added error message to detect conflict with -v.
(dopass): Added periodic fsync() calls to keep the pass progress
display in sync with reality. Hopefully they're sufficiently far spaced
that throughput isn't affected. It might be a good thing to do even in
non-verbose mode, to avoid filling up the kernel caches with dirty data.
Also added ftruncate() for more complete destruction of metadata.
(quotearg_colon): New function to print
pathological filenames properly.
[!HAVE_CONFIG_H] (quotearg_colon_buf) New internal helper function
that does most of the work.
(wipefd, do_wipefd, dopass) Now take a qname (pre-quoted name) argument.
(wipename, wipefile, main) Changed diagnostics to use quotearg_colon.
Error messages are also in a more uniform format.
From Paul Eggert.
(struct Options, main, do_wipefd): Added -s/--size=N flag.
(xstrtoul): Added support for valid_suffixes to help this.
(usage) Documented it.
(error): Changed some arguments from N_() to _(), since error()
does not translate its argument. I think this is a bug.
(struct Options do_wipefd, wipefd, wipefile, main): moved passes
argument into the Options structure as n_iterations, which is now a
size_t. From Paul Eggert.
(isaac_seed_start, isaac_seed_data, isaac_seed_finish): New functions
to manage seeding of RNG with arbitrary-sized data.
(isaac_init): commented out as dead code.
(isaac_seed): changed to use new functions to prevent any possibility of
a buffer overflow.
(isaac_seed): Added support for Solaris' gethrtime()
configure.in: Corresponding feature test. From Paul Eggert.
(wipename): Change remove() to unlink() for speed & portability.
Use lstat() instead of access() to see if a filename is taken. This
works even on dangling symlinks and avoids the suid problems of
access(2). From Paul Eggert.
(isaac_seed_machdep): New function for reading cycle counters
1999-04-02 Paul Eggert <eggert@shade.twinsun.com>
* configure.in (AC_CHECK_FUNCS): Add gethrtime.
* src/shred.c (isaac_seed): Don't overrun the s->mm buffer.
Use gethrtime if available. Don't assume that clock_gettime succeeds.
Put most random sources first.
1999-04-02 Paul Eggert <eggert@twinsun.com>
shred: Add new options -bcCklL and fix some porting problems.
Remove options -dp. Do not read output files.
* src/shred.c (long_opts, usage, main, wipefile): Adjust to
new options.
("human.h", "quotearg.h"): New includes.
(struct Options): New members contents, links, n_iterations.
Remove allow_devices, remove_file. Change n_iterations to size_t.
All uses changed.
(output_block_size): New var.
(usage): Declare __noreturn__ attribute.
(fdatasync): Define to -1 if not present, since we need to invoke both
fdatasync and fsync if both are present. All invokers of fdatasync
now try fdatasync, then fsync.
(MIXIN): New macro.
(isaac_seed): Use it to mix in values. Add uid, gid to mix.
Don't use gettimeofday, as it has too many porting problems.
(isaac_seedfd): Remove, since we no longer read the output files.
(sizefd): Remove; we now determine size by writing sequentially.
(dopass, wipename, wipefile, main): Clean up error messages.
(dopass): Keep track of offset relative to start of file, not
end, since we may not know how large the file is. If size is
negative, write until we fall off the end of the file.
(wipefd): Do not read output file.
Return 0 if successful, -1 if not; do not make a special case for
non-regular files, since our callers have that info now.
(wipename): Now static. Return errno if error.
(main): "-" now stands for standard output.
Do not shred append-only standard output.
(wipefile): Do not grant read permission to file when wiping it.
Use symbolic permission (S_IWUSR), not octal.
* src/system.h (S_IWUSR): Define if not already defined.
* configure.in (AC_SEARCH_LIBS): Prefer rt to posix4, for Solaris 7.
(AC_CHECK_FUNCS): Remove gettimeofday.
* doc/fileutils.texi: Document recent changes.
1999-04-01 Jim Meyering <meyering@ascend.com>
* configure.in (AC_CHECK_FUNCS): Add acl.
(AC_CHECK_HEADERS): Add sys/acl.h.
* src/ls.c [HAVE_SYS_ACL_H]: Include sys/acl.h.
(struct fileinfo): New member `have_acl'.
(gobble_file): Initialize it.
(print_long_format): Use it.
Mostly from Alen Muzinic.
* src/touch.c (open_maybe_create): New function.
(touch): Rewrite not to use `creat' and to eliminate a race
condition that could make touch truncate a nonempty file.
Report and suggestions from Andrew Tridgell.
1999-03-31 Jim Meyering <meyering@ascend.com>
* src/du.c: Remove prototypes and tsort function definitions.
* src/chown.c (main): Move the declaration of `e' into the scope
where it's used and make it `const'.
* src/install.c (main): Qualify a char* with the `const' keyword.
(install_file_in_dir): Likewise.
* src/ln.c (main): Likewise.
* src/mkdir.c (main): Likewise.
* src/mkfifo.c (main): Likewise.
* src/mknod.c (main): Likewise.
* src/mv.c (main): Likewise.
* src/touch.c (touch): Likewise.
1999-03-30 Jim Meyering <meyering@ascend.com>
* src/*.c: Don't include closeout.h or version-etc.h explicitly.
Now, they're included via sys2.h.
1999-03-29 Jim Meyering <meyering@ascend.com>
* configure.in (GNU_PACKAGE): Remove related code -- now it's in
the catch-all for shared autoconf code, m4/jm-macros.m4.
(jm_CHECK_ALL_TYPES): Remove explicit AC_TYPE_* macros and use
this instead.
1999-03-29 Paul Eggert <eggert@twinsun.com>
Minor lint removal in code that forks and execs.
* lib/mkdir.c (mkdir): Use pid_t instead of int; check status
against zero. This is to improve portability.
* lib/rename.c (rename): Likewise.
* lib/rmdir.c (rmdir): Likewise.
* lib/rename.c (rename):
(rename): Do not print any error messages, so that the messages
are internationalized properly.
* src/install.c (strip): Use standard "cannot fork" message.
Check for strip nonzero exit status.
1999-03-28 Jim Meyering <meyering@ascend.com>
`chmod =OP' did not properly apply the umask
* lib/modechange.c (make_node_op_equals): New function.
(mode_append_entry): Likewise.
(mode_compile): When none of [ugoa] is specified in an `=OP' change
mode request, insert a `=0' entry into the linked list so that all
bits are cleared first. Use the new functions.
Reported by Andrew Dalke.
New test for the above.
* configure.in (AC_OUTPUT): Add tests/chmod/Makefile.
* tests/Makefile.am (SUBDIRS): Add chmod.
* tests/chmod: New directory
* tests/chmod/equal-x: New file.
1999-03-27 Jim Meyering <meyering@ascend.com>
* lib/modechange.c (mode_compile): Upon allocation failure, free
everything starting with the head, not the tail.
* src/install.c (strip): Use pid_t, not int. From John Bley.
1999-03-26 Jim Meyering <meyering@ascend.com>
* src/dd.c (PROGRAM_NAME, AUTHORS): Define
(long_options): Remove unused struct.
(scanargs): Remove useless loop.
(main): Use PROGRAM_NAME and AUTHORS in call to parse_long_options.
* src/mvdir.c: Likewise.
* src/sync.c (PROGRAM_NAME, AUTHORS): Define and use.
1999-03-25 Jim Meyering <meyering@ascend.com>
* lib/Makefile.am (libfu_a_SOURCES): Add version-etc.c.
(noinst_HEADERS): Add version-etc.h.
* lib/long-options.c (parse_long_options): Remove version-, copyright-,
and author-printing code. Do it via version_etc.
* lib/version-etc.c: New file.
* lib/version-etc.h: Prototype for same.
* src/sys2.h (GETOPT_HELP_CHAR): Define.
(GETOPT_VERSION_CHAR): Define.
(GETOPT_HELP_OPTION_DECL): Define.
(GETOPT_VERSION_OPTION_DECL): Define.
(case_GETOPT_HELP_CHAR): Define.
(case_GETOPT_VERSION_CHAR): Define.
* src/chgrp.c: No longer include long-options.h.
Include version-etc.h instead.
(PROGRAM_NAME, AUTHORS): Define.
[long_options]: Add entries for --help and --version.
Remove parse_long_options call.
(main) [getopt switch]: Add a case for each of --help and --version.
* src/chgrp.c: Likewise.
* src/chmod.c: Likewise.
* src/cp.c: Likewise.
* src/df.c: Likewise.
* src/dircolors.c: Likewise.
* src/du.c: Likewise.
* src/install.c: Likewise.
* src/ln.c: Likewise.
* src/ls.c: Likewise.
* src/mkdir.c: Likewise.
* src/mkfifo.c: Likewise.
* src/mknod.c: Likewise.
* src/mv.c: Likewise.
* src/rm.c: Likewise.
* src/rmdir.c: Likewise.
* src/shred.c: Likewise.
* src/touch.c: Likewise.
1999-03-24 Jim Meyering <meyering@ascend.com>
* man/help2man: Import version 1.010.
1999-03-22 Jim Meyering <meyering@ascend.com>
* src/chmod.c (usage): Add one-liner. Suggestion from Karl Berry.
1999-03-19 Jim Meyering <meyering@ascend.com>
* src/automake-wrap: Rewrite the automake-generated rule for
clean-binPROGRAMS so that it removes rm even with a losing PATH on a
losing system (PATH with `.' before /bin on a system where you can't
unlink a running executable). Reported by William Bader.
* configure.in: Use jm_WINSIZE_IN_PTEM.
* src/ls.c [WINSIZE_IN_PTEM]: Include sys/stream.h and sys/ptem.h.
Required by SCO ODT 2.0 systems. Reported by William Bader.
1999-03-18 Jim Meyering <meyering@ascend.com>
* src/remove.c (remove_cwd_entries): Reflect changes in hash_insert.
(remove_init): Call hash_initialize with one more argument.
1999-03-15 Jim Meyering <meyering@ascend.com>
Revamp to allow fine-tuning to control when and by how
much the table grows and shrinks.
* lib/hash.c (next_prime): Don't assert.
(hash_reset_tuning): New function.
(check_tuning): New function.
(hash_initialize): Accept and use new tuning parameter.
(hash_rehash): Rewrite, updating for tuning.
(hash_insert): Honor tuning semantics.
(hash_delete): Likewise.
From François Pinard.
* lib/hash.h (struct hash_tuning): Define.
(struct hash_table) [tuning]: Add member.
(hash_initialize): Add `tuning' parameter.
* lib/hash.c (hash_insert): Remove last parameter and change semantics.
* lib/hash.h (hash_insert): Update prototype.
* lib/hash.c (hash_insert): Don't increment n_entries unconditionally --
otherwise, we'd do so even when the insertion failed.
From François Pinard.
1999-03-07 Jim Meyering <meyering@ascend.com>
* lib/xmalloc.c (xalloc_fail): Use "%s" format so the message doesn't
have to be scanned for % signs. Suggestion from François Pinard.
* Makefile.maint: Add two more URLs and the loops to use them.
* lib/long-options.c (parse_long_options): Include `Copyright...' line
in --version output.
Add the `...NO warranty...' message.
1999-03-03 Jim Meyering <meyering@ascend.com>
* lib/long-options.c (_): Define it.
(parse_long_options): Accept new parameter, authors, and print it.
* lib/long-options.h: Update prototype.
* src/chgrp.c: Include long-options.h
[long_options]: Remove the "help" and "version" entries.
(main): Use parse_long_options, including author name(s).
Remove the show_version and show_help blocks.
* src/chmod.c: Likewise.
* src/chown.c: Likewise.
* src/cp.c: Likewise.
* src/dd.c: Likewise.
* src/df.c: Likewise.
* src/dircolors.c: Likewise.
* src/du.c: Likewise.
* src/install.c: Likewise.
* src/ln.c: Likewise.
* src/ls.c: Likewise.
* src/mkdir.c: Likewise.
* src/mkfifo.c: Likewise.
* src/mknod.c: Likewise.
* src/mv.c: Likewise.
* src/mvdir.c: Likewise.
* src/rm.c: Likewise.
* src/rmdir.c: Likewise.
* src/shred.c: Likewise.
* src/sync.c: Likewise.
* src/touch.c: Likewise.
1999-02-18 Paul Eggert <eggert@twinsun.com>
* getdate.y: <alloca.h>: Include if HAVE_ALLOCA_H, not FORCE_ALLOCA_H.
The FORCE_ALLOCA_H was a relic of the bad old pre-autoconf Emacs days.
1999-02-17 Jim Meyering <meyering@ascend.com>
* src/shred.c (wipename): Fix string thinko. Now, shredding files
in subdirectories works (dir/file). From Janos Farkas.
1999-02-13 Jim Meyering <meyering@ascend.com>
* src/dircolors.c (dc_parse_stream): Don't try to dereference
NULL if there's an error in our built-in list.
Suggestion from François Pinard.
1999-02-13 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* src/install.c (main): Set x.backup_type only if backups are requested.
(cp_option_init): Initialize backup_type.
(backup_type): Remove unused variable.
* doc/fileutils.texi: Fix use of @item vs @itemx.
1999-02-08 Jim Meyering <meyering@ascend.com>
* src/dircolors.c (slack_codes): Add "DOOR".
(ls_codes): Add corresponding "do".
Reported by John Gotts.
* configure.in (ALL_LINGUAS): Add Italian (it).
1999-02-07 Jim Meyering <meyering@ascend.com>
* Version 4.0d (aka 4.1-b4).
* Makefile.maint (my-distcheck): Don't depend on dist, now that this
is hooked up to the distcheck rule.
* Makefile.am (distcheck-hook): New target and rule -- link to shared
rule, my-distcheck, in Makefile.maint.
* doc/fileutils.texi (shred invocation): New section. From Colin Plumb.
* configure.in (jm_FUNC_GETGROUPS): Move the test into a new file,
group-member.m4, and just use this new macro.
Use `.$ac_objext', not the literal `.o'.
1999-02-02 Jim Meyering <meyering@ascend.com>
* src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
Define to zero if not already defined.
(HAVE_SYMLINKS): Define.
(gobble_file): Remove #ifdef.
(get_link_name, make_link_path): Guard these with #if HAVE_SYMLINKS
rather than #ifdef S_ISLNK.
(print_type_indicator): Remove #ifdefs and reorganize.
(print_color_indicator): Remove #ifdefs.
(length_of_file_name_and_frills): Likewise.
1999-02-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* src/dircolors.hin: Handle DOOR.
* src/ls.c (print_type_indicator): Print doors as '>'.
(length_of_file_name_and_frills): Account for this.
(indicator_no): Define C_DOOR.
(indicator_name): Add corresponding name.
* lib/filemode.c (ftypelet): Handle doors.
* lib/filemode.c, src/system.h (S_ISDOOR): Define if missing.
1999-02-01 Jim Meyering <meyering@ascend.com>
* lib/strcasecmp.c (STRXCASECMP_FUNCTION): Don't increment within macro
argument list. From Akim Demaille.
1999-01-31 Jim Meyering <meyering@ascend.com>
* doc/fileutils.texi: Wrap the @top node in @ifnottex instead of
@ifinfo so `makeinfo --html ...' works. From Karl Berry.
* tests/ln/misc: Add test for this.
* src/ln.c (do_link): Allow creation of a hard link to a dangling
symlink. Reported by Alexey Solovyov.
* src/copy.c (copy_internal): Describe any backup-related renaming
operations when in verbose mode.
(copy_internal): Likewise.
Based on changes from Marty Leisner.
* lib/lchown.c: Declare chown.
1999-01-30 Jim Meyering <meyering@ascend.com>
* acconfig.h: Remove uintmax and STAT* #undefs.
* configure.in: Require autoconf 2.13.
Remove test for AFS.
Use 3-argument form of AC_DEFINE*.
1999-01-28 Jim Meyering <meyering@ascend.com>
* po/POTFILES.in: Add src/shred.c.
* src/system.h: Use TIME_WITH_SYS_TIME-based #if test rather than
TM_IN_SYS_TIME based one (for shred).
* acconfig.h: Remove lots of `#undef's, now that we use the
3-argument forms of AC_DEFINE* macros.
1999-01-25 Jim Meyering <meyering@ascend.com>
* configure.in (fdatasync): Use AC_CHECK_FUNCS instead of
AC_REPLACE_FUNCS.
(AC_CHECK_FUNCS): Add clock_gettime.
* src/shred.c (isaac_seed): Guard clock_gettime with test of
HAVE_CLOCK_GETTIME, not CLOCK_REALTIME.
(wipename): Rename local dirfd to dir_fd to avoid shadowing the
function declared in Linux's dirent.h.
1999-01-25 Akim Demaille <demaille@inf.enst.fr>
* lib/argmatch.h (ARRAY_CARDINALITY): Define.
(ARGMATCH_ASSERT): New macro.
* lib/argmatch.c (program_name): Remove dcl.
Include error.h.
(argmatch_invalid): Use error rather than fprintf.
1999-01-24 Jim Meyering <meyering@ascend.com>
* src/ansi2knr.c: Exit nonzero upon failed write to stdout.
New version from L. Peter Deutsch.
* lib/quotearg.c (quotearg_n_options): Revert type of parameter `n'
(and hence that of the local `n1', too) to `int' at Paul's request.
* lib/closeout.c: Add comments.
* src/shred.c (fdatasync): Remove function. instead, ...
(fdatasync) [! HAVE_FDATASYNC]: Define to fsync.
From Colin Plumb.
1999-01-23 Jim Meyering <meyering@ascend.com>
* src/Makefile.am (bin_PROGRAMS): Add shred.
* src/shred.c: New file.
Portability tweaks.
Internationalize.
(wipename): Print the `FILE: deleted' and `FILE: deleting' messages
only when in verbose mode.
(fdatasync) [! HAVE_FDATASYNC]: New function.
* man/Makefile.am (man_MANS): Add shred.1.
* man/Makefile.summ (shred-summary): Define.
* man/shred.x: New file.
* src/shred.c: New file. From Colin Plumb.
Include config.h, getopt.h, system.h and error.h.
Use #else/#if, not #elif.
1998-11-05 Paul Eggert <eggert@twinsun.com>
* lib/mktime.c (__mktime_internal): Adopt the traditional (and
problematic) notion of what to do when tm_isdst doesn't match.
1999-01-17 Jim Meyering <meyering@ascend.com>
* tests/cp/Makefile.am (TESTS_ENVIRONMENT): Set PATH here, rather
than setting RM and CP.
* tests/cp/*: Now that PATH is set properly, use rm and cp rather
than $RM and $CP.
* tests/ln/Makefile.am (TESTS): Add backup-1.
(TESTS_ENVIRONMENT): Set PATH here, rather than setting LN.
* tests/ln/*: Now that PATH is set properly, use ln rather than $LN.
* tests/ln/backup-1: New test for this.
* src/ln.c (do_link): Try to remove DEST even after renaming it.
This fixes a bug reported by Jamie Lokier.
* src/ln.c (same_name): Use SAME_INODE rather than open coding it.
1999-01-16 Jim Meyering <meyering@ascend.com>
* lib/argmatch.c (ARGMATCH_DIE_DECL): Use it.
* acconfig.h: Remove @BOTTOM@ section.
Instead, add the define and decl via m4/jm-macros.m4.
* src/ls.c: Don't declare base_name.
Use function-style XARGMATCH once again.
* src/touch.c: Likewise.
* acconfig.h: Add a @BOTTOM@ section.
(ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1).
Declare usage.
From Akim Demaille.
* src/cp.c: Remove declarations of base_name and get_version.
(main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
Use xget_version and function-style XARGMATCH.
* src/mv.c (main): Likewise.
* src/ln.c (main): Likewise.
* src/install.c (main): Likewise.
* lib/quotearg.c (quotearg_n_options): Declare n1 to be of type
unsigned int, not just int.
* lib/backupfile.h (get_version): Adjust prototype.
(xget_version): Add prototype.
(base_name): Remove prototype.
* lib/backupfile.c [!HAVE_DECL_GETENV]: Declare getenv.
(backup_args): Reorder enum members.
(backup_types): Likewise.
(get_version): Take an additional parameter, `context'.
(xget_version): Like get_version, but if the `version' argument is NULL,
use the value of the envvar VERSION_CONTROL.
(base_name): Declare.
Mostly from Akim Demaille.
* lib/addext.c (base_name): Declare.
* src/sys2.h: Add prototype for base_name.
* lib/argmatch.c: s/argmatch_exit_failure/argmatch_die/
* lib/argmatch.h: Likewise.
* lib/argmatch.h (XARGMATCH): Define to return a value once again.
(XARGCASEMATCH): Likewise.
* lib/argmatch.c (EXIT_FAILURE): Define.
(ARGMATCH_DIE): Provide default.
(__xargmatch_internal): New function.
s/rogram_name/program_name.
From Akim Demaille.
1999-01-14 Akim Demaille <demaille@inf.enst.fr>
* src/touch.c (usage): Don't make it static so that it can be
called from libfu.a by xargmatch.
* src/chgrp.c (usage): Likewise
* src/chmod.c (usage): Likewise
* src/chown.c (usage): Likewise
* src/cp.c (usage): Likewise
* src/dd.c (usage): Likewise
* src/df.c (usage): Likewise
* src/dircolors.c (usage): Likewise
* src/du.c (usage): Likewise
* src/install.c (usage): Likewise
* src/ln.c (usage): Likewise
* src/ls.c (usage): Likewise
* src/mkdir.c (usage): Likewise
* src/mkfifo.c (usage): Likewise
* src/mknod.c (usage): Likewise
* src/mv.c (usage): Likewise
* src/mvdir.c (usage): Likewise
* src/rm.c (usage): Likewise
* src/rmdir.c (usage): Likewise
* src/sync.c (usage): Likewise
1999-01-12 Akim Demaille <demaille@inf.enst.fr>
* lib/backupfile.c (get_version): added the parameters KIND.
(xget_version): like get_version, but if argument is NULL, honor
the envvar VERSION_CONTROL.
* src/cp.c: Remove declarations of base_name and get_version.
(main): Use xget_version.
* src/mv.c (main): Likewise.
* src/ln.c (main): Likewise.
* src/install.c (main): Likewise.
1999-01-12 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add Greek (el).
* po/el.po: New file.
* install-sh: New version from autoconf.
* missing: New version from automake.
* src/ansi2knr.c: Likewise.
* lib/getopt.c: New version from glibc.
* lib/getopt.h: Likewise.
* lib/getopt1.c: Likewise.
* lib/regex.c: Likewise.
* lib/regex.h: Likewise.
* lib/ylwrap: Remove unused file.
1999-01-10 Jim Meyering <meyering@ascend.com>
* Version 4.0c (aka 4.1-b3).
* Upgrade to autoconf-2.13 and automake-1.3b.
* src/copy.c (copy_internal): Handle two more values of errno from
failed rename of a directory into a subdirectory of itself.
Thanks to Volker Borchert for testing many types and combinations
of systems.
* lib/argmatch.c (ARGMATCH_QUOTING_STYLE): Change from c_quoting_style
to escape_quoting_style.
(argmatch_invalid): Now that the quoted quantity is no longer double
quoted, remove the code that removed leading and trailing double quotes.
* src/ls.c (decode_switches): Now that escape_quoting_style no longer
escapes the SPACE character, arrange for SPACEs to be quoted here.
* lib/quotearg.c (quotearg_buffer): Change escape_quoting_style so that
it no longer escapes ` '.
Suggestion from Paul Eggert.
1999-01-05 Jim Meyering <meyering@ascend.com>
* configure.in (space): Add `for' in message of statvfs check.
From Ulrich Drepper.
1999-01-04 Jim Meyering <meyering@ascend.com>
* Version 4.1-b2.
1999-01-02 Jim Meyering <meyering@ascend.com>
* lib/argmatch.c (argmatch_invalid): Remove double quotes from the
offending quoted argument before using it in explanatory diagnostic.
Use a single fprintf stmt.
* lib/argmatch.h (XARGMATCH): Don't return a value; instead,
modify a parameter. Add a `Die_stmt' parameter.
Add parentheses.
* lib/argmatch.c (__xargmatch_internal): Remove now-unused function.
(argmatch_to_argument): Add `const' attribute to first parameter.
* configure.in (AC_REPLACE_FUNCS): Remove strcasecmp (now it's
done in m4/jm-macros.m4).
* lib/backupfile.c (get_version): Adapt to use new interface to
XARGMATCH.
* src/cp.c: Likewise.
* src/ls.c: Likewise.
* src/touch.c: Likewise.
1999-01-01 Jim Meyering <meyering@ascend.com>
* lib/makepath.c (make_dir): New function, factored out of make_path.
(make_path): Use make_dir rather than open-coding it twice.
This effectively reverses the order of the latter pair of stat/mkdir
calls and fixes a race condition bug whereby one of two concurrent
`mkdir -p' processes could fail with EEXIST.
Include locale.h and libintl.h, and define `_()'.
Mark translatable strings.
* lib/xmalloc.c: Add comments.
(xcalloc, xmalloc, xrealloc): Remove prototypes.
(xcalloc): Remove `#ifdef NOT_USED' that used to hide this function.
* lib/xalloc.h: Add comments.
(PARAMS, XMALLOC, XCALLOC, XREALLOC): Define.
(xcalloc, xmalloc, xrealloc): Add prototypes here.
Based on changes from Akim Demaille.
* lib/quotearg.c (quotearg_buffer): Cast -1 to size_t before comparing.
(quotearg_n): Change type of 1st parameter from int to unsigned int.
(quotearg_n_options): Likewise.
* lib/quotearg.h (quoting_style_vals): New public array.
From Akim Demaille.
(quotearg_n_options): Declare `options' parameter to be `const'.
* lib/human.c (humblock): Use ARGMATCH in place of argmatch.
* lib/backupfile.c (get_version): Use XARGMATCH in place of
argmatch & co.
1998-12-31 Jim Meyering <meyering@ascend.com>
* src/ls.c (indicator_style_types): New variable.
(format_types): Rename from `formats'.
(color_args): Remove unnecessary `no' string.
(color_types): Remove corresponding `color_never' entry.
(main): Use ARGMATCH_TO_ARGUMENT.
(decode_switches): Use ARGMATCH instead of argmatch code
in each of several cases.
From Akim Demaille.
* src/cp.c (main): Use XARGMATCH in place of argmatch & co.
* src/touch.c (main): Likewise.
* lib/backupfile.c (get_version): Likewise.
From Akim Demaille.
* lib/strncasecmp.c: New file.
* lib/strcasecmp.c: Add #ifdefs so it can be used for strncasecmp, too.
* lib/argmatch.c (strncasecmp): Move to a separate file.
Add curly braces around some one-stmt-but-multiline blocks.
* lib/argmatch.c: Improvements from Akim Demaille.
* lib/argmatch.h: Likewise.
* lib/addext.c (addext): Protoize.
Indent cpp directives to match nesting.
Fix warnings from gcc -W -Wall
* lib/posixtm.c (posix_time_parse): Change type of index `i' from
int to unsigned int.
* lib/getdate.y (__attribute__): Define.
(ATTRIBUTE_UNUSED): Define.
(yyerror): Mark parameter as unused with ATTRIBUTE_UNUSED.
(MonthDayTable): Add initializers for last entry.
(UnitsTable): Likewise.
(OtherTable): Likewise.
(MilitaryTable): Likewise.
1998-12-22 Jim Meyering <meyering@ascend.com>
* Version 4.1-b1.
* configure.in (ALL_LINGUAS): Add chinese (zh).
1998-12-19 Jim Meyering <meyering@ascend.com>
* tests/ln/misc: Use absolute path for final rm.
* Makefile.maint (my-distcheck): Run make with
CFLAGS='-Wformat -Werror'.
1998-12-18 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_internal): Remove errnoeous `%s: ' prefix
from format string. From Michiel Bacchiani.
* src/chgrp.c (MAXGID): Define.
Use gid_t (not int) as the type for `group' variables.
(parse_group): Use MAXGID, not INT_MAX.
* src/install.c (UID_T_MAX, GID_T_MAX): Remove definitions.
* src/sys2.h (UID_T_MAX, GID_T_MAX): Define them here instead.
1998-12-13 Jim Meyering <meyering@ascend.com>
* lib/Makefile.am (EXTRA_DIST): Add xstat.in.
1998-12-12 Jim Meyering <meyering@ascend.com>
1998-10-15 Akim Demaille <demaille@inf.enst.fr>
* src/ls.c: Group DIRED's code together.
(full_time, inhibit_group, col_ext_type): Declare static.
(dired_dump_obstack): Apply sizeof to variable, instead of its type.
(parse_ls_color): Rename ext2 as e2. Move into the block where it
is used.
1998-10-15 Akim Demaille <demaille@inf.enst.fr>
* src/ls.c: In order to distinguish col(umn|or):
(init_column_info): Renamed from init_col_info.
(struct column_info): Renamed from struct col_info.
(struct color_ext_type): Renamed from struct col_ext_type.
1998-12-11 Jim Meyering <meyering@ascend.com>
* lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
(stat.c): Likewise.
* lib/stat.c: Remove file.
* lib/lstat.c: Remove file.
* lib/xstat.in (xstat@): New file.
* lib/quotearg.c (quotearg_buffer): Use `7' as the mask, not `3'.
From Bruno Haible.
* tests/ls-2/tests: Add a test for this.
* man/help2man: import version 1.006.
1998-12-07 Jim Meyering <meyering@ascend.com>
* src/copy.c: Use dir_name, not dirname. Include dirname.h.
* src/cp.c: Likewise.
* src/df.c: Likewise.
* src/install.c: Likewise.
* src/ln.c: Likewise.
* src/mvdir.c: Likewise.
* lib/dirname.c (dir_name): Rename from dirname.
Make argument `const'. Include "dirname.h"
* lib/dirname.h: New file.
* lib/Makefile.am (noinst_HEADERS): Add dirname.h.
1998-12-06 Jim Meyering <meyering@ascend.com>
* lib/rpmatch.c (rpmatch) [!ENABLE_NLS]: Hard-code tests to use
`^[yY]' and `^[nN]' (avoiding regex). From Karl Heuer.
* lib/*.c: Ansideclify.
Fix `ls -R .' formatting bug that broke mktexlsr.
* src/ls.c: Include path-concat.h.
(basename_is_dot_or_dotdot): New function, derived from
is_not_dot_or_dotdot.
(is_not_dot_or_dotdot): Remove function.
(extract_dirs_from_files): Use `!basename_is_dot_or_dotdot'
instead of is_not_dot_or_dotdot and use path_concat instead of attach.
* tests/ls-2/tests: New file (renamed from quoting),
with new test for the `ls -R .' fix.
* tests/ls-2/quoting: Remove file.
* tests/ls-2/Makefile.am (TESTS): s/quoting/tests/.
1998-11-29 Jim Meyering <meyering@ascend.com>
* src/remove.c (DOT_OR_DOTDOT): Move definition from this file...
* src/sys2.h (DOT_OR_DOTDOT): ...to this one.
* src/dd.c (dd_copy): Rename function from `copy'.
* src/cp.c (do_copy): Rename local: s/unused/copy_into_self/.
Per Kristian Hove reported that a certain move-directory-into-self
wasn't properly diagnosed.
* tests/mv/into-self-3: New file.
* tests/mv/Makefile.am (TESTS): Add into-self-3.
* src/copy.c (copy_internal): Remove earlier (but less effective)
test for move/copy-into-self.
Instead, deduce the move-into-self condition from errno==EINVAL
after a failed rename.
* src/mv.c (do_move): Don't arrange to remove DEST in the
copied-into-self case.
1998-11-15 Jim Meyering <meyering@ascend.com>
Bob McCracken reported that mv couldn't handle certain combinations
of hard linked source files.
* tests/mv/hard-link-1: New file.
* tests/mv/Makefile.am (TESTS): Add hard-link-1.
* src/mv.c (movefile): Don't free new_dest.
* lib/error.c (error): Don't use strerror_r's return value.
From Johan Danielsson.
1998-11-14 Jim Meyering <meyering@ascend.com>
* Version 4.0.
* Makefile.maint (cvs-dist): Search for `$tag:' rather than just $tag
to avoid matching a prefix of another tag.
1998-11-10 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add Greek (el).
* po/el.po: New file.
1998-11-07 Jim Meyering <meyering@ascend.com>
* Version 4.0-b7.
Accommodate the Hurd (defining lstat to rpl_lstat via config.h didn't
work on Hurd systems because of an inline definition of lstat in a
system header file). This also makes it so that you may run `ls '' '
on systems that let l?stat operate on the empty string.
* src/remove.c [HAVE_LSTAT_EMPTY_STRING_BUG]: Define lstat to rpl_lstat
and declare the latter.
* lib/stat.c [stat]: Remove #undef.
(rpl_stat): Protoize.
* lib/lstat.c [lstat]: Remove #undef.
(rpl_lstat): Protoize. Use ENOENT, not EINVAL, to be consistent
with lib/stat.c.
* acconfig.h: Remove #undef's for lstat and stat.
1998-10-31 Jim Meyering <meyering@ascend.com>
* tests/rm/Makefile.am (TESTS): Add new test `empty-name',
but comment it out.
* tests/rm/empty-name: New file.
* acconfig.h (stat): New #undef.
This omission was uncovered when Mark Kettenis reported that
`rm -r ''' got a failed assertion on the Hurd. This change
doesn't fix *that* problem -- see above.
1998-10-25 Jim Meyering <meyering@ascend.com>
* Version 4.0-b6.
* README: Man pages will now be supported to the extent that
people send patches.
* tests/rm/unreadable: Two new tests.
* tests/rm/Makefile.am (TESTS): Add new test `unreadable'. But comment
it out since we're so close to release and since the test compares the
text of diagnostics that are likely to vary between systems.
(TEST_ENVIRONMENT): Add required framework.
* src/remove.c (remove_cwd_entries): Don't apply CLOSEDIR to a NULL
pointer. (provoke with `mkdir -m 0100 x; rm -rf x')
Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK.
(remove_dir): Return `status', rather than always RM_OK.
1998-10-18 Jim Meyering <meyering@ascend.com>
* Version 4.0-b5.
* lib/mktime.c: Update from libc with this additional change from Paul.
* lib/strftime.c: Likewise.
1998-10-17 Paul Eggert <eggert@twinsun.com>
Don't invoke localtime_r or gmtime_r unless it's the GNU C
library's localtime_r and gmtime_r; there are too many buggy
implementations of localtime_r and gmtime_r out there, and
it's not worth keeping track of all the different bugs.
* mktime.c (__EXTENSIONS__, HAVE_LOCALTIME_R): Remove.
(my_mktime_localtime_r): Renamed from localtime_r; all uses changed.
Base it on localtime unless _LIBC.
* strftime.c (__EXTENSIONS__): Remove.
(my_strftime_gmtime_r): Renamed from gmtime_r; all uses changed.
(my_strftime_localtime_r): Renamed from localtime_r; all uses changed.
Base them on localtime/gmtime if not _LIBC.
1998-10-17 Jim Meyering <meyering@ascend.com>
* Version 4.0-b4.
* lib/mktime.c: Declare localtime_r if necessary.
* lib/strftime.c: Likewise.
* tests/Fetish.pm (run_tests): Run $prog with --version only
if $verbose.
1998-10-11 Jim Meyering <meyering@ascend.com>
* Version 4.0-b3.
1998-10-08 Paul Eggert <eggert@twinsun.com>
* mktime.c (__mktime_internal): When the requested time falls
in a spring-forward gap of size DT, return a time that is DT
away from the requested time, preferring a time whose tm_isdst
differs from the requested value. Bump the max number of
probes from 4 to 6 to account for the extra probes needed to
discover a spring-forward gap in the worst case.
1998-10-08 Paul Eggert <eggert@twinsun.com>
* mktime.c (my_mktime_localtime_r): Renamed from localtime_r.
Define also if HAVE_LOCALTIME_R && defined (localtime_r), with
a body that merely expands localtime_r; this works around a
bug in Digital Unix 4.0A and 4.0D.
1998-10-05 Jim Meyering <meyering@ascend.com>
* po/Makefile.in.in (uninstall): Remove (historical?) command that
removed po-Makefile.in.in. From Akim Demaille.
* src/install.c (long_options): Add entry for --suffix=SUFFIX option.
From aldomel.
1998-10-04 Jim Meyering <meyering@ascend.com>
* tests/mv/Makefile.am (TESTS_ENVIRONMENT): Define PERL.
From Kaveh Ghazi.
1998-10-03 Jim Meyering <meyering@ascend.com>
* Version 4.0-b2.
* tests/mv/Makefile.am (TESTS_ENVIRONMENT): Add PATH.
* man/Makefile.maint ($(man_MANS)): Don't depend on actual executables.
Instead, depend on corresponding source file and on configure.in.
Based on suggestion and code from Akim Demaille.
Factor out irregular men into Makefile.summ.
* man/Makefile.am (EXTRA_DIST): Add Makefile.summ.
* man/Makefile.summ: New file.
* man/Makefile.maint: Include it.
* tests/Fetish.pm: Make `DEBUG' be a little more verbose.
* tests/mv/Makefile.am (TESTS): Add i-1.
* tests/mv/i-1: New test.
1998-10-02 Jim Meyering <meyering@ascend.com>
* tests/ls-2/Makefile.am (EXTRA_DIST): Remove run-test.
* tests/ls-2/run-test: Remove file.
* tests/ls-2/quoting: Include /bin/sh driver framework.
* tests/dircolors/simple: Remove file.
* tests/dircolors/run-test: Embed it here instead.
* tests/dircolors/simple: Rename from run-test.
1998-10-01 Jim Meyering <meyering@ascend.com>
* tests/Makefile.am (EXTRA_DIST): Remove README.
From Akim Demaille.
1998-09-28 Jim Meyering <meyering@ascend.com>
* Version 4.0-pre1.
* Use automake-1.3b. See notes in README.
* src/copy.c (copy_internal): Do honor `n' reply in move-mode.
Otherwise, `touch a b; echo n|mv -i a b' would remove b.
From Bernd Leibing.
1998-09-27 Jim Meyering <meyering@ascend.com>
* Version 3.16z.
* Makefile.maint (alpha): New target.
(my-distcheck): Tweak.
* lib/backupfile.h: Protect against multiple inclusion.
From Akim Demaille.
* configure.in: Remove use of AC_FUNC_FNMATCH and associated code.
Now, it is invoked through jm_MACROS.
* lib/strftime.c (my_strftime): Update from FSF.
1998-09-26 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_internal): Don't preserve hard-linked directories
to avoid damaging the destination filesystem when copying from a
Netapp snapshot directory. With code from Kjetil Torgrim Hollstein
and Paul Eggert.
1998-09-24 Jim Meyering <meyering@ascend.com>
* man/Makefile.maint ($(man_MANS)): Correct typo: s/-tmp/-t/.
From Akim Demaille.
1998-09-21 Jim Meyering <meyering@ascend.com>
* man/Makefile.maint ($(man_MANS)): Remove `echo'.
1998-09-20 Jim Meyering <meyering@ascend.com>
* Version 3.16y.
* src/install.c (install_file_to_path) [-D]: Create any leading
directories with permissions of 0755.
1998-09-19 Jim Meyering <meyering@ascend.com>
* src/install.c (install_file_to_path): Copy the file after creating
any leading directories.
(main) [case 'v']: Set `x.verbose' to 1, not 0.
Reported by Marty Leisner.
* man/Makefile.am (transform): Define.
(man_MANS): Include ginstall.1, not install.1, to match the name
of the executable in ../src.
* man/ginstall.x: New file.
* man/install.x: Remove file.
* man/Makefile.maint (ginstall-summary): Renamed from install-summary.
* man/Makefile.am (EXTRA_DIST): Add Makefile.maint and GNUmakefile.
Reported by Akim Demaille.
* lib/modechange.c: Fix post-protoization typo.
* lib/posixtm.h (PARAMS): Define and use.
From Kaveh Ghazi.
1998-09-12 Jim Meyering <meyering@ascend.com>
* Version 3.16x.
* src/remove.c (remove_cwd_entries): Declare to be static.
Automatically generate man pages from combination of --help
output and the contents of new, man/*.x files.
* man/Makefile.am (HELP2MAN): Define.
(man_aux): Define.
(EXTRA_DIST): Add $(HELP2MAN) and $(man_aux).
(MAINTAINERCLEANFILES): Add $(man_MANS).
* man/*.x: New files.
* man/GNUmakefile: New file.
* man/Makefile.maint: New file.
* man/help2man: New file.
1998-09-09 Jim Meyering <meyering@ascend.com>
* lib/modechange.c: Protoize.
1998-09-07 Jim Meyering <meyering@ascend.com>
* Version 3.16w.
* src/df.c (show_dev) [!posix_format]: When using --print-type,
let the device path and the file system type share a single (wider)
field if their combined lengths allow it. From Andries Brouwer.
* tests/touch/empty-file: Upon failure, suggest how to rerun the test
with longer delay, in case NFS clock skew was the cause of the failure.
Reported by Kaveh Ghazi.
* tests/ls-2/quoting: Add tests.
* tests/Fetish.pm (run_tests): Add simple PRE/POST hooks.
(_create_file): Don't include $$ in temp file name.
(run_tests): Use shorter suffixes for temp file names.
1998-09-06 Jim Meyering <meyering@ascend.com>
* src/touch.c: Include posixtm.h.
(usage): Correct the description of the format of the
date string argument to -t option.
(main): Update to use rewritten posixtime function.
Reported by Andries Brouwer.
* lib/Makefile.am (libfu_a_SOURCES): Change posixtm.y to posixtm.c.
(noinst_HEADERS): Add posixtm.h.
* lib/posixtm.h: New file.
* lib/posixtm.c: New file. Rewritten based on posixtm.y.
* lib/posixtm.y: Remove file.
1998-09-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/ls.c (print_dir_name): Put back.
(print_dir): Also print directory name header if print_dir_name is
true.
1998-08-29 Jim Meyering <meyering@ascend.com>
* Version 3.16v.
* src/du.c (long_options): Use corresponding short-option character
in place of `1', and `NULL' in place of pointer in initialization.
* src/cp.c (long_opts): Likewise.
* src/ln.c (long_options): Likewise.
* src/mkdir.c (longopts): Likewise.
* src/rmdir.c (longopts): Likewise.
* src/chown.c: Replace 12 and 13 with CHAR_MAX + 1 and CHAR_MAX + 2
respectively.
* src/chmod.c (long_options): Replace 12 with CHAR_MAX + 1.
* src/chgrp.c (long_options): Replace 12 with CHAR_MAX + 1.
* tests/Fetish.pm: New file -- moved from ls-2/.
* configure.in (AC_OUTPUT): Add tests/dircolors/Makefile.
* tests/Makefile.am (SUBDIRS): Add dircolors.
(EXTRA_DIST): Add Fetish.pm.
* tests/dircolors: New directory
* src/ls.c (print_dir_name): Remove global variable.
(print_dir): When trace_dirs is set, always print the directory
name header.
1998-08-26 Jim Meyering <meyering@ascend.com>
* src/dircolors.c (dc_parse_stream): Don't segfault when a line
contains only one token. Reported by Olav Morkrid.
1998-08-24 Paul Eggert <eggert@twinsun.com>
* src/system.h (CHAR_MIN, CHAR_MAX):
Renamed from SCHAR_MIN, SCHAR_MAX, since these
macros apply to char, not signed char.
* src/df.c, src/du.c, src/touch.c (long_options, main):
Don't assume ASCII.
1998-08-18 Paul Eggert <eggert@twinsun.com>
Port nanosecond-resolution times to UnixWare 2.1.2 and
pedantic Solaris 2.6.
* configure.in (AC_STRUCT_ST_MTIM_NSEC): Renamed from AC_STRUCT_ST_MTIM.
* acconfig.h (ST_MTIM_NSEC): New #undef.
* src/system.h (ST_TIME_CMP_NS, ATIME_CMP, CTIME_CMP, MTIME_CMP):
Use new ST_MTIM_NSEC macro.
1998-08-16 Jim Meyering <meyering@ascend.com>
* lib/filemode.h (PARAMS): Define and use.
From Kaveh Ghazi.
1998-08-15 Jim Meyering <meyering@ascend.com>
* Version 3.16u.
* Makefile.maint (announcement): New target.
* tests/mv/into-self: Update to reflect changed behavior of mv.
* src/mv.c (do_move): Fail upon attempt to move a directory into itself.
With prodding from François Pinard :-)
* tests/ls-2/Fetish.pm: New file
* tests/ls-2/run-test: New file
* src/copy.c (copy_internal) [one-file-system]: Do copy mount point
directories (but none of their entries). This makes `cp --archive
--one-file-system' use the same policy `tar --one-file-system' does.
From Marty Leisner.
* src/ls.c (qmark_funny_chars): Add comment from Paul eggert.
1998-08-14 Jim Meyering <meyering@ascend.com>
* tests/mv/setup: Work around another bug in Ultrix4.3a's /bin/sh.
Reported by Christian von Roques.
* configure.in (AC_OUTPUT): Add tests/ls-2/Makefile.
* tests/Makefile.am (SUBDIRS): Add ls-2.
* tests/ls-2: New directory
1998-08-14 Christian von Roques <roques@pond.sub.org>
* lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNT]: Don't
infloop on getmnt(2) returning 0.
* tests/cp/backup-is-src: Avoid bug in Ultrix4.3a /bin/sh,
not initializing output redirection of : command.
* tests/mv/backup-is-src: Likewise.
* tests/rm/i-1: Likewise.
1998-08-12 Jim Meyering <meyering@ascend.com>
* po/Makefile.in.in: Provide automake-style DESTDIR support.
From Johan Danielsson.
(DISTFILES): Remove ChangeLog.
po/ChangeLog: Remove empty file.
* configure.in (AC_STRUCT_ST_DM_MODE): Use it.
* src/ls.c: Include filemode.h.
* src/chmod.c: Likewise.
* lib/filemode.c (ftypelet): Add comments for Cray DMF support.
From Johan Danielsson.
Protoize. Tsort function definitions and remove prototypes of
static functions.
(mode_string): Remove prototype.
* lib/filemode.h (mode_string): New file.
* lib/Makefile.am (noinst_HEADERS): Add filemode.h.
1998-08-09 Jim Meyering <meyering@ascend.com>
* Version 3.16t.
1998-07-31 Paul Eggert <eggert@twinsun.com>
Add support for filesystems whose timestamps have better resolution
than 1 second (e.g. Solaris 2.6, recent Linux kernels).
* configure.in (AC_STRUCT_ST_MTIM): Add.
* src/copy.c (copy_internal): Compare time stamps with
subsecond resolution if available.
* src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime,
rev_cmp_mtime, compare_atime, rev_cmp_atime): Compare time
stamps with subsecond resolution if available.
* src/system.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP,
CTIME_CMP, MTIME_CMP): New macros.
1998-08-01 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add slovak (sk) and norwegian (no).
1998-07-28 Paul Eggert <eggert@twinsun.com>
* lib/mountlist.c (read_filesystem_list): Remove all_fs
argument, but put the necessary information into the result so
that the caller can ignore filesystems that he's not
interested in.
* lib/mountlist.h (struct mount_entry):
New members me_dummy, me_remote.
(read_filesystem_list): Remove all_fs argument.
(REMOTE_FS_TYPE): Remove.
(ME_DUMMY, ME_REMOTE): New macros.
* lib/xstrtol.c: Remove duplicate include of <stdio.h>.
* src/df.c (show_all_fs):
Revert to boolean value; the old negative value is
now in show_local_fs.
(show_local_fs): New variable.
(show_dev): New args me_dummy and me_class. Use show_local_fs
and boolean show_all_fs in combination with these new args
to decide whether to show a device.
(show_disk): Pass flags to show_dev.
(show_point): Use a non-dummy mount entry if possible.
(show_all_entries): Pass flags to show_dev.
(main): --local sets show_local_fs now. Ask for file system types if
show_local_fs is nonzero, since ME_REMOTE might need them.
1998-07-27 Jim Meyering <meyering@ascend.com>
* tests/install/Makefile.am (TESTS_ENVIRONMENT): Set LS, MKDIR, and RM.
* tests/install/basic-1: Add a test for this.
* src/install.c: Make copy create each destination file initially
with mode 0600 so strip will work, then apply specified mode.
Arne Henrik Juul reported that `./ginstall -s -c -m 555 dd /tmp' failed.
1998-07-25 Jim Meyering <meyering@ascend.com>
* src/mv.c (chown): Remove unused definition.
Reported by Kaveh Ghazi.
* src/rmdir.c (main): rmdir fails with EEXIST on some systems.
Handle that, so --ignore-fail-on-non-empty works.
(EEXIST): Define to zero if not defined.
(ENOTEMPTY): Likewise.
* tests/cp/same-file: Remove `diff' I'd put in for debugging.
Exit with the status from cmp.
* Version 3.16s.
* tests/cp/same-file: Skip three more unportable tests.
These failed on SunOS4.1.4.
* src/copy.c (SAME_INODE): Remove definition.
* src/sys2.h (SAME_INODE): Define it here instead.
* src/remove.c (same_file): New function.
(remove_dir): Use it to give a better diagnostic when rmdir fails
because it can't remove the current directory.
* src/df.c (long_options): Changes table entries not to use this form:
{"all", no_argument, &show_all_fs, 1},
but rather this form:
{"all", no_argument, NULL, 'a'},
Using the latter, all the option handling in one place: the getopt loop.
* lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTINFO]:
Use fsp_to_string.
(fsp_to_string): Don't xmalloc return value (yet).
(xatoi): Ansideclify.
(fstype_to_string): Ansideclify.
* lib/mountlist.h: Define and use PARAMS macro.
* lib/utime.c: New file.
* src/touch.c (utime_now): Moved into m4/utimes.m4.
(touch) [!HAVE_UTIME_NULL]: Remove #ifdef and the use of utime_now
in the if-block.
* configure.in (jm_FUNC_UTIME): Use this, not AC_FUNC_UTIME.
1998-07-22 Paul Eggert <eggert@twinsun.com>
* lib/human.c (human_readable): amt -> damt, to fix typo when
computing which power to use after overflow occurs during
multiplication.
* lib/xstrtol.c: Include <stdio.h> if NDEBUG is not defined;
needed on SunOS 4.
1998-07-21 Paul Eggert <eggert@twinsun.com>
Add df -l or --local option.
* doc/fileutils.texi: Document it.
* lib/mountlist.h (REMOTE_FS_TYPE): New macro.
* lib/mountlist.c (read_filesystem_list):
If all_fs is negative, omit non-local filesytems.
* src/df.c (show_dev): Omit local devices if show_all_fs is negative.
(show_all_fs): If negative, omit non-local filesystems.
All uses of (all_fs != 0) changed to (all_fs > 0).
(long_options, usage, main): Add -l or --local option.
(main): When asking for df of an explicit file name, get all
the mount points, so that we're more likely to find it when
we look it up.
1998-07-18 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_internal): Add another exclusion from the
sameness test: when --force has been specified, the destination
is unlinked before any copy.
(copy_internal): Add yet another: when both src and dest are symlinks.
* tests/touch: New subdir.
* tests/Makefile.am (SUBDIRS): Add touch.
* configure.in (AC_OUTPUT): Add tests/touch/Makefile.
* tests/mv/into-self-2: New test.
* tests/mv/Makefile.am (TESTS): Add into-self-2.
1998-07-06 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* lib/mountlist.c (read_filesystem_list): Fix more memory leaks on
failure.
1998-07-16 Jim Meyering <meyering@ascend.com>
Work around failure of chown calls on m68k-motorola-sysv systems.
* src/chown.c: Include lchown.h.
* lib/Makefile.am (noinst_HEADERS): Add lchown.h.
* lib/lchown.h: New file, just to define ENOSYS on systems that lack it.
* lib/lchown.c: Include lchown.h.
Reported by and with suggestions from Manfred Hollstein.
1998-07-12 Paul Eggert <eggert@twinsun.com>
* src/df.c (print_header): Print "1k-blocks", not "1.0k-blocks".
1998-07-07 Jim Meyering <meyering@ascend.com>
* src/sys2.h [HAVE_FCLOSE_UNLOCKED]: Remove unnecessary block.
Suggestion from Ulrich Drepper.
1998-07-04 Jim Meyering <meyering@ascend.com>
* lib/safe-read.c (safe_read): Change type of pointer parameter to
`void' to avoid Irix4 cc errors. Reported by Kaveh Ghazi.
* lib/safe-read.h: Update prototype.
* src/dircolors.c (parse_line): Add casts to avoid errors from
Irix4's `cc' C compiler. From Kaveh Ghazi.
* lib/xstrtol.c: Include stdio.h. Required on some systems when
using assert. From Kaveh Ghazi.
* tests/mv/backup-is-src: Use cmp, not diff.
Reported by Kaveh Ghazi.
1998-07-03 Jim Meyering <meyering@ascend.com>
* Version 3.16r.
* src/remove.c (remove_dir): Use fprintf (not error) to avoid
newline in prompt.
1998-06-30 Paul Eggert <eggert@shade.twinsun.com>
* lib/mountlist.c (read_filesystem_list):
Don't leak memory on failure.
Don't create a dummy struct mount_entry entry;
use the address-of-the-tail-address method instead.
Preserve errno if possible on failure, setting it to 0 if inapplicable.
Close file descriptor leak if the F_SETLKW failed.
Report an error if SVR4 lock file cannot be opened for some reason
other than a nonexistent lock file.
1998-07-03 Jim Meyering <meyering@ascend.com>
* configure.in (AM_WITH_REGEX): Remove. Now the replacement
macro, jm_WITH_REGEX, is bundled with the rest in jm_MACROS.
* acconfig.h (WITH_REGEX): Remove undef.
* lib/Makefile.am (noinst_HEADERS): Add regex.h.
* lib/rpmatch.c: Remove #ifdef around <regex.h> inclusion.
* lib/rx.c: Remove file.
* lib/rx.h: Remove file.
* src/df.c (df_readable): Rename local so as not to shadow global.
* src/copy.c (SAME_INODE): New macro.
Use it to replace open-coded equivalents.
(copy_internal): Rename variable and reverse sense of tests
to make the code a little clearer.
1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/copy.c (copy_internal): Try harder identifying a relative
symbolic link in the current directory.
* src/copy.c (copy_internal): Don't skip test for same file if
creating a hardlink from symlink over a non-symlink while making
backups.
* tests/cp/same-file: Skip tests that depend on link(2) not
following symlinks.
1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/copy.c (copy_internal): Don't call chown on a symlink.
1998-07-01 Jim Meyering <meyering@ascend.com>
* lib/xstrtol.c: Don't define NDEBUG here, now that it's done via
configure's --disable-assert option.
1998-06-29 Paul Eggert <eggert@twinsun.com>
* lib/mountlist.c (read_filesystem_list):
Plug file descriptor leak on failure.
Report failure if lock file can't be opened for some reason
other than nonexistence.
1998-06-29 Jim Meyering <meyering@ascend.com>
* Version 3.16q.
* lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTENT2]:
Always close stream and file descriptor before returning.
* src/df.c (main): Move the test of the result of the
read_filesystem_list call up out of if-block -- code in the
else-block depends on it too.
1998-06-29 Paul Eggert <eggert@twinsun.com>
* lib/mountlist.c (read_filesystem_list): If SVR4, lock
/etc/.mnttab.lock if available, to avoid race conditions
(e.g. with the automounter on Solaris 2.6).
Include <errno.h>, <fcntl.h>, <unistd.h>.
1998-06-29 Jim Meyering <meyering@ascend.com>
* lib/mountlist.c (fstype_to_string): Guard with
#if ! HAVE_F_FSTYPENAME_IN_STATFS.
1998-06-28 Paul Eggert <eggert@twinsun.com>
Add support for new --block-size option and
BLOCK_SIZE. DF_BLOCK_SIZE, etc. variables to `df', `du', and `ls'.
Adjust df output slightly to accommodate larger filesystems.
* lib/human.c, lib/human.h (human_readable): Coalesce last two args
into one, for convenience. All callers changed.
(human_block_size): New function.
* lib/human.c: Include <config.h> only if HAVE_CONFIG_H.
Include <stdlib.h> if HAVE_STDLIB_H;
declare getenv unless HAVE_DECL_GETENV.
(_): New macro.
Include <argmatch.h>, <error.h>, <xstrtoul.h>.
(DEFAULT_BLOCK_SIZE): New macro.
(block_size_args, block_size_types): New constants.
(humblock): New function.
* lib/xstrtol.h (__ZLONG_MAX): Remove.
* lib/xstrtol.c (bkm_scale): Don't assume that you can convert
unsigned long to double without losing information.
(bkm_scale_by_power): New function.
* lib/xstrtol.c (__xstrtol), src/dd.c (parse_integer):
Add support for SI-like suffixes like "GB" and "TD".
* src/dd.c (usage): Describe it.
* src/df.c, src/du.c, src/ls.c (human_readable_base, output_units):
Remove; replace with new variable output_block_size. All uses changed.
(long_options, usage, main): Add --block-size.
(main, decode_switches): Use new human_block_size function to
initialize output block size consistently with other programs.
* src/df.c (print_header, show_dev): Shrink some columns and expand
others, to squeeze in support for today's larger filesystems.
(print_header): Print output block size using power-of-1024 SI format.
(df_readable): Coalesce last two args into one, for convenience.
All callers changed.
(main): Remove check for portable output format and larger
or human-readable block sizes.
* NEWS, doc/fileutils.texi: Describe above changes.
1998-06-28 Jim Meyering <meyering@ascend.com>
* src/ls.c (usage): Make --kilobytes description consistent with
that in du and df. From Göran Uddeborg.
* lib/mountlist.c (fsp_to_string): Clean out some crufty #ifdefs
now that we're using the jm_FSTYPENAME autoconf macro.
James Tanis reported the old version didn't compile on BSDI3.
* configure.in: Move big block of list_mounted_fs checks into
new jm_LIST_MOUNTED_FILESYSTEMS macro.
Use new jm_FSTYPENAME macro.
* src/sys2.h: Add macro definitions for GNU libc *_unlocked wrappers.
* src/ls.c: Add DIRED_ prefix to the macros: PUTCHAR, FPUTS, and
FPUTS_LITERAL
1998-06-27 Jim Meyering <meyering@ascend.com>
* src/copy.c (copy_reg): Detect identical source and dest here.
(copy_internal): Make the test symmetric.
* tests/cp/same-file: New file.
* tests/cp/Makefile.am (TESTS): Add it.
1998-06-26 Jim Meyering <meyering@ascend.com>
* src/remove.c (remove_file): Remove `non-directory' part of
`removing non-directory FILE' verbose message.
1998-06-23 Jim Meyering <meyering@ascend.com>
* src/df.c (show_dev): Increase field width for blocks, used,
and available columns from 7 to 8.
1998-06-21 Jim Meyering <meyering@ascend.com>
* aclocal.m4: Regenerate with fixed gettext.m4 installed.
See README-alpha for details.
1998-06-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/automake-wrap: Quote `&' in sed replacement text.
1998-05-31 Jim Meyering <meyering@ascend.com>
* Version 3.16p.
* src/install.c (main): Fix argv-handling bug in my 1998-05-09 change.
Reported by Don Parsons.
1998-05-30 Jim Meyering <meyering@ascend.com>
* tests/ls/time-1: Clean up ctime test. Note that it fails also
on Solaris5.5.1 tmpfs file systems.
Solve the `rm -f rm' problem more cleanly.
* src/.rm-warning: Remove file.
* src/automake-wrap: New file.
* src/Makefile.am (AUTOMAKE): Define to use automake-wrap.
(Makefile.in): Depend on automake-wrap.
(EXTRA_DIST): Add automake-wrap.
(DISTCLEANFILES): Remove definition.
(rm_DEPENDENCIES): Likewise.
(.rm-warn-stamp): Remove rule.
1998-05-27 Jim Meyering <meyering@ascend.com>
* tests/ls/Makefile.am (TESTS): s/cr-1/rt-1/
* tests/ls/rt-1: New file, renamed from cr-1.
1998-05-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/Makefile.am (.rm-warn-stamp): Cope with $(srcdir) != ".".
* tests/ls/cr-1: Don't use the ctime for testing, it is impossible
to set it reliably.
1998-05-25 Jim Meyering <meyering@ascend.com>
* configure.in (_GNU_SOURCE): AC_DEFINE it here.
* acconfig.h (_GNU_SOURCE): Remove definition from @TOP@ section.
[!_GNU_SOURCE]: Add #undef instead.
1998-05-24 Jim Meyering <meyering@ascend.com>
* Version 3.16o.
* src/ansi2knr.c: Use new version from automake-1.3.
* src/chown.c: Accept new option, --dereference.
--no-dereference is now the default.
(enum Change_status) [CH_NOT_APPLIED]: New member.
(change_symlinks): Enable this by default, now.
(describe_change): Handle new case.
(change_file_owner): Add new parameter: cmdline_arg. Update callers.
Reorganize to reflect changed semantics.
(LCHOWN): Remove definitions.
* lib/lchown.c: New file.
1998-05-21 Jim Meyering <meyering@ascend.com>
* configure.in (ALL_LINGUAS): Add russian (ru).
1998-05-16 Jim Meyering <meyering@ascend.com>
* src/remove.c (hash_compare_strings): Return true or false, not 1/0.
(remove_cwd_entries): Use RM_OK, not equivalent literal `1'.
* lib/hash.c (is_prime): Ansideclify.
(next_prime): Ansideclify. Add an assertion.
* lib/Makefile.am (EXTRA_DIST): Remove. Automake groks the `LIBOBJS='
lines from the m4/*.m4 macros, so the hack of including some
custom-replaced C source file names here is no longer needed.
* configure.in (jm_MACROS): New wrapper macro.
Remove uses of most jm_* macros.
* acconfig.h (HAVE_STRUCT_UTIMBUF): Remove #undef. Now it's handled
as part of utimbuf.m4.
(memcmp): Add #undef.
1998-05-12 Jim Meyering <meyering@ascend.com>
* configure.in: Use my replacement AC_ISC_POSIX rather than
open-coding it.
* src/copy.c (copy_internal): Plug a small leak.
1998-05-10 Jim Meyering <meyering@ascend.com>
* src/mv.c (do_move): Remove lots of code that was duplicated in
copy.c (copy), now that copy() has better support for mv. This fixes
a bug with cross-filesystem `mv -i' whereby you could get two prompts
for the same destination file and eventually remove the destination
file even though one of the responses was negative.
Reported by Dirk Lattermann.
* src/copy.h: Better support for mv:
[struct cp_options] (move_mode): New member.
* src/copy.c (copy_internal): Use new move_mode member.
Add parameter.
(copy): Add parameter.
* tests/cp/Makefile.am (TESTS): Add backup-is-src.
* tests/mv/Makefile.am (TESTS): Likewise.
* lib/userspec.c: Don't declare strdup if it's defined as a macro.
Reported by Lorne Baker.
* src/Makefile.am (ginstall_SOURCES): Add copy.c and cp-hash.c.
* src/mv.c (cp_option_init): Initialize new members.
* src/cp.c (cp_option_init): Likewise.
(main): Set new preserve_* options.
1998-05-09 Jim Meyering <meyering@ascend.com>
* src/copy.h: Support for install:
[struct cp_options] (failed_unlink_is_fatal): New member.
(preserve_owner_and_group): New member.
(preserve_chmod_bits): New member.
(preserve_timestamps): New member.
(preserve): Remove member.
(set_mode): New member.
(mode): New member.
* src/copy.c (new_nondir_mode): New function. Use where appropriate.
Use more-specific preserve_* members in place of removed `preserve'.
(copy_internal): Honor failed_unlink_is_fatal.
* src/install.c (main): Rewrite argv-handling to be clearer.
(copy_file): Rewrite to use copy.c (copy).
(change_attributes): Get rid of now-(with chown wrapper)-unnecessary
`no_need_to_chown' parameter. Fix caller.
(install_file_in_file): Remove now-unnecessary `to_created' parameter.
(cp_option_init): New function.
Update several functions to take new parameter specifying copy options.
* tests/install: New subdir, with one basic test.
* tests/Makefile.am (SUBDIRS): Add install.
* configure.in (AC_OUTPUT): Add tests/install/Makefile.
* src/dd.c: Include safe-read.h.
Don't declare safe_read.
* src/touch.c: Likewise.
* configure.in (jm_TYPE_SSIZE_T): Use it.
* acconfig.h (ssize_t): Add undef.
1998-05-03 Jim Meyering <meyering@ascend.com>
* po/: Update from gettext-0.10.35.
* intl/: Likewise.
* configure.in: Remove use of AC_LINK_FILES.
(AC_OUTPUT): Remove po/Makefile-generating sed command.
1998-04-28 Jim Meyering <meyering@ascend.com>
* src/dircolors.c (parse_line): Use ISSPACE, not isspace.
Use unsigned char * pointers, not potentially signed ones, to avoid
sign extension.
1998-04-26 Jim Meyering <meyering@ascend.com>
* configure.in: Use jm_ASSERT.
* acconfig.h: Add NDEBUG.
* src/mv.c: Don't define NDEBUG.
* src/cp.c: Likewise.
1998-04-14 Jim Meyering <meyering@ascend.com>
* src/.rm-warning: New file.
* src/Makefile.am (EXTRA_DIST): Add .rm-warning
(DISTCLEANFILES): Add .rm-warn-stamp.
(rm_DEPENDENCIES): Depend on .rm-warn-stamp.
(.rm-warn-stamp): New rule.
(rm_prep): Comment out rule.
* src/df.c (main): Use STREQ in string equality tests, not strcmp.
* src/dircolors.c (dc_parse_stream): Likewise.
(dc_parse_file): Likewise.
* src/du.c (main): Likewise.
* src/ls.c (decode_switches): Likewise.
* src/remove.c (hash_compare_strings): Likewise.
* src/touch.c (main): Likewise.
1998-04-13 Jim Meyering <meyering@ascend.com>
* lib/Makefile.am (noinst_HEADERS): Add safe-read.h.
1998-04-11 Jim Meyering <meyering@ascend.com>
* lib/hash.c: Add curly braces around statements in
if/else/while/do/etc. that span more than a line -- even around
multiline simple statements or single-line simple statements
preceded by a comment line.
1998-04-09 Jim Meyering <meyering@ascend.com>
* configure.in: Don't use AC_PATH_PROG to check for perl, now that
we use jm_PERL.
1998-04-06 Jim Meyering <meyering@ascend.com>
* src/cp-hash.c (cph_hash_insert): Rename from now-conflicting
hash_insert. Also declare to be static.
* src/cp-hash.h (hash_insert): Remove declaration.
* lib/hash.c: Lots of minor spec and name changes, and new comments.
(hash_rehash): Rewrite to be easier on the allocator.
From François Pinard.
* lib/hash.h: More comments.
* src/remove.c: Change names/usage of hash-related functions to work
with the above.
1998-04-05 Jim Meyering <meyering@ascend.com>
* lib/regex.c (WIDE_CHAR_SUPPORT): Define.
This now depends on HAVE_BTOWC so systems that lack btowc (like
solaris-2.5.1) don't lose.
1998-04-04 Jim Meyering <meyering@eng.ascend.com>
* GNUmakefile: Add conditionals so that running `make' in an
unconfigured source directory will get a reasonable diagnostic.
* Makefile.am (ACLOCAL_AMFLAGS): Define this, so automake/aclocal
know about the m4/ subdirectory.
* Makefile.maint (aclocal-files): Remove now-unnecessary (with
automake-1.2h and the above change) aclocal-related rules and includes.
1998-04-01 Jim Meyering <meyering@eng.ascend.com>
* tests/ls/cr-1: New file.
* tests/ls/Makefile.am (TESTS): Add cr-1.
1998-03-31 Jim Meyering <meyering@eng.ascend.com>
* src/system.h (TYPE_MAXIMUM): Cast result to `(t)' so this macro
works with `unsigned char'.
From Greg Wooledge.
(SCHAR_MIN, SCHAR_MAX, SHRT_MIN, SHRT_MAX, LONG_MAX, ULONG_MAX): Define.
* lib/xstrtol.c: Merge with the version from textutils.
* lib/memcmp.c (rpl_memcmp): Rename from memcmp.
1998-03-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime,
rev_cmp_mtime, compare_atime, rev_cmp_atime, compare_size,
rev_cmp_size): Use file name as secondary sort key to get
consistent sorting.
1998-03-28 Jim Meyering <meyering@eng.ascend.com>
* src/copy.c: Add copyright.
* src/remove.c: Add copyright.
[_AIX]: Add #pragma alloca.
1998-03-27 Jim Meyering <meyering@eng.ascend.com>
* Makefile.maint ($(ACLOCAL_M4)): Replace old rule with this
dependency and the := assignment of ACLOCAL to make the default
rule use the `-I m4' option.
* Makefile.am (AUTOMAKE_OPTIONS): Require 1.2h.
1998-03-23 Jim Meyering <meyering@eng.ascend.com>
* acconfig.h: Remove HAVE_INTTYPES_H, now that m4/inttypes_h.m4
automatically handles it.
1998-03-21 Jim Meyering <meyering@eng.ascend.com>
* lib/quotearg.h: Update from patch-2.5.3.
* lib/quotearg.c: Likewise.
* src/ls.c (decode_switches): Pass a null pointer instead of address
of quotearg_quoting_options.
1998-03-19 Paul Eggert <eggert@twinsun.com>
* lib/fsusage.h (struct fs_usage): New member
fsu_bavail_top_bit_set.
* lib/fsusage.c: Include <limits.h>.
(CHAR_BIT, EXTRACT_TOP_BIT, PROPAGATE_TOP_BIT): New macros.
(get_fs_usage): If top bit of system variable corresponding to
fsu_bavail is set, then set fsu_bavail_top_bit_set, and
sign-extend the value when storing it into fsu_bavail.
* src/df.c (show_dev): If fsu_bavail_top_bit_set is nonzero,
assume the original value corresponding to fsu_bavail was negative.
Reported by Arne Juul.
1998-03-18 Jim Meyering <meyering@eng.ascend.com>
* src/Makefile.am (rm-prep): Add dependency and rule to save users
with `.' too early in their PATH from the `rm: cannot unlink `rm':
Text file busy' error. Suggestion from Philippe De Muyter.
1998-03-15 Jim Meyering <meyering@eng.ascend.com>
* Version 3.16n.
* lib/chown.c: Use #if, not #ifdef with HAVE_ macros.
* lib/closeout.c: Likewise.
* lib/dirname.c: Likewise.
* lib/euidaccess.c: Likewise.
* lib/fileblocks.c: Likewise.
* lib/filemode.c: Likewise.
* lib/ftruncate.c: Likewise.
* lib/group-member.c: Likewise.
* lib/isdir.c: Likewise.
* lib/long-options.c: Likewise.
* lib/mountlist.c: Likewise.
* lib/path-concat.c: Likewise.
* lib/save-cwd.c: Likewise.
* lib/savedir.c: Likewise.
* lib/strcasecmp.c: Likewise.
* lib/strdup.c: Likewise.
* lib/userspec.c: Likewise.
* lib/yesno.c:: Likewise.
* src/chgrp.c: Use #if, not #ifdef with HAVE_ macros.
Use #if !, not #ifndef with HAVE_ macros.
* src/chown.c: Likewise.
* src/copy.c: Likewise.
* src/dd.c: Likewise.
* src/dircolors.c: Likewise.
* src/install.c: Likewise.
* src/ls.c: Likewise.
* src/mv.c: Likewise.
* src/touch.c: Likewise.
* configure.in: Use jm_PREREQ.
1998-03-14 Jim Meyering <meyering@eng.ascend.com>
Revert most `getdate.h -> get-date.h' changes of 1998-02-20.
With automake-1.2f, that hack is no longer needed.
* src/remove.c: Use `virtual memory exhausted' message, not
`Memory exhausted' to be consistent with the majority of other
such messages.
Say `removing all...', not `removing any...'.
* src/rmdir.c (remove_parents): Be consistent with documentation of
--verbose option and with remove.c in saying `removing...' before
the operation is attempted.
(main): Likewise.
Suggestions from Santiago Vila.
* src/copy.c (copy_dir): Add new parameter, copy_into_self, and set it.
(copy_internal): Likewise.
(copy): Likewise.
Update all callers.
* src/copy.h (copy): Update prototype.
* src/cp.c (do_copy): Add unused arg in calls to copy.
* src/mv.c (do_move): Add ©_into_self arg in call to copy.
Don't remove source directory when copy_into_self is nonzero.
Reported by Arne Henrik Juul.
* tests/mv/into-self: Test for the above.
* tests/mv/Makefile.am (TESTS): Add into-self.
1998-02-28 Eli Zaretskii <eliz@is.elta.co.il>
* userspec.c (parse_user_spec) [__DJGPP__]: Make function know
about any arbitrary user and group by pretending to be the user
and to belong to the group specified in `spec_arg' argument.
* idcache.c (getuidbyname) [__DJGPP__]: Make function know about
any arbitrary user name.
(getgidbyname) [__DJGPP__]: Make function know about any arbitrary
group name.
1998-02-24 Jim Meyering <meyering@eng.ascend.com>
* lib/xstrtol.c (TYPE_SIGNED): Define.
(TYPE_MAXIMUM): Define.
(ULONG_MAX): Use TYPE_MAXIMUM.
(LONG_MAX): Use TYPE_MAXIMUM.
* lib/fnmatch.c: Update from libit.
* lib/idcache.c: Update from libit.
1998-02-23 Paul Eggert <eggert@twinsun.com>
* lib/quotearg.h, lib/quotearg.c: New files.
* lib/Makefile.am (libfu_a_SOURCES): Add quotearg.c.
(noinst_HEADERS): Add quotearg.h.
* src/ls.c: Include new file quotearg.h.
(enum indicator_style): Rename all to classify, and not_programs
to file_type, to match option spellings. All users changed.
(indicator_style_args): New constant.
(quote_funny_chars, quote_as_string, quote_shell): Remove;
(filename_quoting_options, dirname_quoting_options): Use these
variables instead.
(long_options): Add --indicator-style, --quoting-style,
--show-control-chars. Remove --quote-shell.
(dired_dump_obstack): Remove style parameter and don't output style.
(main): Go back to previous method of outputting //DIRED//
and //SUBDIRED// lines, without style. But add a new
//DIRED-OPTIONS// line that does output style.
(decode_switches, usage): Add --indicator-style, --quoting-style,
--show-control-chars. Remove --quote-shell.
(decode_switches): Default from QUOTING_STYLE environment variable.
Set new quoting vars.
(quote_name): Renamed from quote_filename.
Take new arg specifying quoting options.
Always print; do not have a special case for null FILE * argument.
All callers changed.
Move the guts of this function to new file quotearg.c.
(length_of_file_name_and_frills): Use quotearg_buffer instead
of (old) quote_filename to find length of file name.
(decode_switches, parse_ls_color, print_dir, gobble_file,
get_link_name): Quote output in diagnostics.
* NEWS, doc/fileutils.texi: Describe above changes.
* doc/fileutils.texi: Mention that control characters are output
as question marks if output is a terminal.
1998-02-22 Jim Meyering <meyering@eng.ascend.com>
* Version 3.16m.
* ChangeLog-1997: New file.
* Makefile.am (EXTRA_DIST): Add ChangeLog-1997.
1998-02-21 Jim Meyering <meyering@eng.ascend.com>
* configure.in (AC_OUTPUT): Add tests/mv/Makefile.
* tests/Makefile.am (SUBDIRS): Add mv.
* tests/mv: New directory
* tests/mv/mv-special-1: New test.
1998-02-20 Jim Meyering <meyering@eng.ascend.com>
* src/touch.c: Include get-date.h.
Remove get_date decl.
* lib/getdate.h: Removed. Could cause confusion with an
automake-generated `.y.h' rule.
* lib/get-date.h: Renamed from getdate.h.
* lib/getdate.y: s/getdate.h/get-date.h/
* lib/Makefile.am (noinst_HEADERS): s/getdate.h/get-date.h/
1998-02-19 Jim Meyering <meyering@eng.ascend.com>
1997-10-17 Eli Zaretskii <eliz@is.elta.co.il>
* lib/fileblocks.c [__DJGPP__]: Add missing typedef for daddr_t.
1998-02-13 Jim Meyering <meyering@eng.ascend.com>
* src/mv.c (cp_option_init): Set copy_as_regular to 0, not 1.
Otherwise, mv tries to open special files.
Reported by Kjetil Torgrim Homme.
1998-02-08 Jim Meyering <meyering@eng.ascend.com>
* Makefile.maint (cvs-dist): Update po/ to clear modified status
of *.po files before running cvs tag -c.
* src/ln.c (usage): Reword to use `TARGET' and `LINK_NAME' in
description.
1998-02-07 Jim Meyering <meyering@eng.ascend.com>
* GNUmakefile: New file.
* Makefile.am (EXTRA_DIST): Add GNUmakefile.
Don't include Makefile.maint from here. It's included from GNUmakefile.
* configure.in: Don't use AM_MAINTAINER_MODE.
(jm_PERL): Use this.
* src/Makefile.am (EXTRA_DIST): Remove dcgen.pl. Add dcgen.
(CLEANFILES): Remove dcgen.
(dircolors.h): Use $(PERL).
(.pl): Remove rule.
1998-02-01 Jim Meyering <meyering@na-net.ornl.gov>
* POTFILES.in: Add remove.c. Reported by Santiago Vila.
1998-01-28 Jim Meyering <meyering@na-net.ornl.gov>
* src/df.c (print_header): Tweak format to align heading over
last column of `df -i' output. From Andreas Schwab.
1998-01-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makefile.am: Include Makefile.maint from $(srcdir).
1998-01-25 Jim Meyering <meyering@na-net.ornl.gov>
* Version 3.16l.
* Makefile.maint: New file.
* Makefile.am: Move rules common to textutils, fileutils, sh-utils
into Makefile.maint.
Include Makefile.maint.
(EXTRA_DIST): Add Makefile.maint.
* src/cp.c (re_protect): Don't fail for non-root when chown fails
due not only to lack of permission (EPERM), but also to lack of
support (EINVAL). Reported by Bengt Martensson.
* src/copy.c (DO_CHOWN): Likewise.
1998-01-24 Jim Meyering <meyering@na-net.ornl.gov>
* tests/ls/time-1 (test_failure): Rename does not update ctime;
link does -- so use ln, not mv.
Note that the SunOS4.1.4 failure of the ctime test is expected.
* src/system.h (TYPE_MINIMUM): Add extra outer cast to work around
bug in Cray C 5.0.3.0 when T == time_t.
* tests/rm/r-1: Adjust expected output for changed format of
`rm --verbose'.
* tests/rm/r-2: Likewise.
1998-01-23 Jim Meyering <meyering@na-net.ornl.gov>
* lib/mktime.c (__mktime_internal): Work around bug in Irix4.0.5's
C compiler. From Kaveh Ghazi.
(TYPE_MINIMUM): Define.
(TYPE_MAXIMUM): Define.
(TIME_T_MIN): Use TYPE_MINIMUM.
(TIME_T_MAX): Use TYPE_MAXIMUM.
1998-01-22 Jim Meyering <meyering@na-net.ornl.gov>
* src/dd.c: Reorder functions to obviate forward dcls.
(quit): Declare to be inline to stifle compile warning.
* src/cp.c (do_copy): Add unreachable `return 0' to stifle warning.
* tests/rm/sunos-1: Don't use -f. Do adjust $RM if it's a
relative path.
* tests/ls/time-1: Use GNU touch to work around problems with NFS
caching and/or clock skew. Reported by Kaveh Ghazi.
* tests/ls/Makefile.am (TESTS_ENVIRONMENT): Add TOUCH.
* src/Makefile.am (noinst_HEADERS): Add remove.h.
(mv_SOURCES): Define.
(rm_SOURCES): Define.
1998-01-21 Jim Meyering <meyering@na-net.ornl.gov>
* src/install.c: Declare new global, backup_type.
(main): Initialize backup_type unconditionally.
(copy_file): Call find_backup_file_name with new argument, backup_type.
* src/ln.c: Declare new global, backup_type.
(main): Initialize backup_type unconditionally.
(do_link): Call find_backup_file_name with new argument, backup_type.
* src/copy.c (copy_internal): Use x->backup_type, not the global.
(valid_options): Use VALID_BACKUP_TYPE and VALID_SPARSE_MODE.
* src/copy.h (VALID_SPARSE_MODE): Define.
[struct cp_options] (backup_type): New member.
* src/cp.c [NDEBUG]: Comment out definition.
(do_copy): Use x->backup_type, not the global.
* src/remove.c: New file. Contains guts of old rm.c.
(remove_init): New function.
(remove_fini): New function.
(rm): Take third argument, specifying options.
* src/remove.h: New file. Associated dcls.
* src/rm.c: Remove and minimally librarify guts for use in mv.c.
(main): Pass options (`&x') to rm.
Call remove_init and remove_fini instead of open-coding them.
* src/mv.c (rm_option_init): New function.
(cp_option_init): New function.
(copy_reg): Remove now-unused function.
(do_move): Set up for and use `copy.c (copy)' in place of copy_reg.
Set up for and use `remove.c (rm)' in place of unlink.
1998-01-20 Jim Meyering <meyering@na-net.ornl.gov>
* lib/backupfile.c: Use ANSI function definitions.
Remove global declaration of backup_type.
(simple_backup_suffix): Default to `~', not `.orig'.
Use PARAMS, not __BACKUPFILE_P.
(find_backup_file_name): Add parameter, backup_type.
* lib/backupfile.h: Remove extern declaration of backup_type.
Use PARAMS, not __BACKUPFILE_P.
(VALID_BACKUP_TYPE): Define.
(find_backup_file_name): Adjust prototype.
1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* src/df.c (print_header): Fix inode format header to line it up
with the rest of the output.
1998-01-13 Jim Meyering <meyering@na-net.ornl.gov>
* lib/stat.c: Set errno to ENOENT, not EINVAL. This is consistent
with most other implementations.
1998-01-12 Jim Meyering <meyering@na-net.ornl.gov>
* lib/fileblocks.c: Include sys/param.h only #if HAVE_SYS_PARAM_H.
Move function-spanning `#if ...BSIZE' directive to follow inclusion
of sys/param.h since BSIZE is sometimes defined in sys/param.h.
Reported by Philippe De Muyter.
1998-01-10 Jim Meyering <meyering@na-net.ornl.gov>
* Version 3.16k.
* src/install.c (install_file_to_path): New function.
FIXME: update fileutils.texi.
(main): Handle new option, -D.
Based on a patch from Marty Leisner.
(usage): Describe -D.
* src/ls.c (decode_switches) [-u]: Fix bug whereby -u worked only
with -l or -t. Now, -u (like -c) implies --sort=time.
(usage): Correct descriptions of --sort, --time, and -t.
Suggestions from Andreas Schwab.
Add test for the above fix.
* configure.in (AC_OUTPUT): Add tests/ls/Makefile.
* tests/Makefile.am (SUBDIRS): Add ls.
* tests/ls: New directory.
* tests/ls/Makefile.am: New file.
* tests/ls/time-1: New file.
* lib/makepath.c (make_path): Reformat 3 if-stmts to test
`if (newly_created_dir)' only once. Suggestion from Andreas Schwab.
1998-01-06 Jim Meyering <meyering@na-net.ornl.gov>
* lib/getdate.y: Move inclusion of getdate.h and dependent extern
declarations down so getdate.h's prototype follows the sometimes-
enabled definition of `const' to nothing. Otherwise, the prototype
wouldn't match the definition because of the defined-away `const'.
From Kaveh Ghazi.
(get_date): ANSI-fy definition.
Add %expect directive.
1998-01-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* lib/makepath.c (make_path): Put only newly created directories
on the LEADING_DIRS list.
1998-01-05 Paul Eggert <eggert@twinsun.com>
* lib/fsusage.c (PROPAGATE_ALL_ONES): New macro.
(get_fs_usage): If a value consists entirely of 1 bits,
propagate this info to the output by setting it to (uintmax_t) -1.
* src/df.c (df_readable): New function.
(show_dev): If a value consists entirely of 1 bits, or is derived
from some other value that consists entirely of 1 bits, report "-".
Check inode and block counts more carefully for plausibility,
to avoid arithmetic overflow when computing percentages.
1998-01-04 Jim Meyering <meyering@na-net.ornl.gov>
* Version 3.16j.
* lib/Makefile.in: Regenerated with patched automake-1.2d.
See README-alpha.
* src/chgrp.c: Use a single enumerated type, Verbosity, instead of
the two booleans, verbose and changes_only. This fixes a bug whereby
--change had the same effect as --verbose.
* src/chmod.c: Likewise.
* src/chown.c: Likewise.
Reported by Paul Eggert.
1998-01-04 Paul Eggert <eggert@twinsun.com>
Check for write errors more carefully.
* lib/Makefile.am (libfu_a_SOURCES): Add closeout.c.
(noinst_HEADERS): Add closeout.h.
* lib/closeout.c, lib/closeout.h: New files.
* lib/long-options.c (parse_long_options),
src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c,
src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c,
src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c,
src/mvdir.c, src/rm.c, src/rmdir.c, src/sync.c, src/touch.c
(main, usage): Check for write error to stdout before exiting.
Include "closeout.h".
1998-01-03 Jim Meyering <meyering@na-net.ornl.gov>
* src/df.c (show_dev): Treat `fsu.fsu_bavail == (unsigned long) -1'
just like `fsu.fsu_blocks == 0' as an indicator that usage information
is invalid. This happens with Solaris-5.5.1 CD-ROM mount points.
* lib/save-cwd.h: Guard PARAMS-enabling definition with
`defined PROTOTYPES || (defined __STDC__ && __STDC__)' to avoid
problems with Irix4's cc. From Kaveh Ghazi.
* lib/getdate.h: Likewise, but just to be consistent.
* configure.in: Convert the .o suffix on files in LIBOBJS to $U.o so
those files will be built via the ANSI2KNR-filtering rules if necessary.
Reported by Kaveh Ghazi.
1998-01-02 Jim Meyering <meyering@na-net.ornl.gov>
* Version 3.16i.
Fix problem with `install -d'. Reported by Marty Leisner.
* src/install.c (get_ids): When otherwise unspecified,
set uid and gid to -1.
* lib/makepath.c (make_path): Try to change ownership only if we've
just created the directory. Fix latent bug (s/&&/||/ in two places --
also, note that it could not be exercised via install or mkdir)
whereby chown would not be invoked when only one of owner/group is
not -1.
1998-01-01 Jim Meyering <meyering@na-net.ornl.gov>
* src/rm.c (remove_cwd_entries): Initialize the entry-name obstack
only once and never free it.
-----
Copyright (C) 1998-2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice
and this notice are preserved.
|